Nodo Compute

Este tema contiene las secciones siguientes:

Finalidad

Utilice el nodo Compute para crear uno o más mensajes de salida nuevos. Es posible que estos mensajes de salida se creen modificando la información que se proporciona en el mensaje de entrada o es posible que los mensajes de salida se creen utilizando sólo información nueva que se puede tomar (o no) de una base de datos. Se pueden utilizar los elementos del mensaje de entrada (por ejemplo cabeceras, campos de cabecera y datos de cuerpo), el entorno asociado y la lista de excepciones para crear el nuevo mensaje de salida.

Especifica cómo se crean los nuevos mensajes codificando ESQL en el archivo de recursos ESQL del flujo de mensajes. Puede crear y modificar los componentes del mensaje utilizando expresiones ESQL, y puede hacer referencia a elementos del mensaje de entrada y datos de una base de datos externa. Una expresión puede utilizar operadores aritméticos, operadores de texto (por ejemplo, la concatenación), operadores lógicos, y demás funciones incorporadas.

Utilice el nodo Compute para:

  • Crear un nuevo mensaje utilizando un conjunto de sentencias de asignación
  • Copiar mensajes entre analizadores
  • Convertir mensajes de un conjunto de códigos a otro
  • Transformar mensajes de un formato a otro

Las sentencias ESQL se definen en un módulo asociado a este nodo en el archivo ESQL (.esql) asociado a este flujo de mensajes. Debe crear este archivo para completar la definición del flujo de mensajes.

El nodo Compute se representa en el entorno de trabajo con el siguiente icono:

Icono de nodo Compute

Utilización de este nodo en un flujo de mensajes

Consulte los ejemplos siguientes para ver cómo puede utilizar este nodo:

Tomemos el ejemplo de un flujo de mensajes en el que quiere dar un identificador exclusivo a cada orden que se recibe, para facilitar el seguimiento. El nodo Compute no modifica su mensaje de entrada; crea una copia nueva y modificada del mensaje como mensaje de salida. Puede utilizar el nodo Compute para insertar un identificador exclusivo para su orden en el mensaje de salida, que pueden utilizar los nodos siguientes del flujo de mensajes.

Configuración del nodo Compute

Una vez ha puesto una instancia del nodo Compute en un flujo de mensajes, puede configurarlo. Pulse el botón derecho del ratón en el nodo en la vista de editor y pulse Propiedades. Aparecen las propiedades básicas del nodo.

Todas las propiedades obligatorias para las que ha de entrar un valor (las que no tienen definido un valor por omisión) aparecen con un asterisco en el diálogo de propiedades.

Configure el nodo Compute mediante estas tareas:

  1. Definición de la interacción de base de datos
  2. Especificación de ESQL
  3. Establecimiento de la modalidad
  4. Validación de mensajes

Cuando haya terminado la configuración, pulse Aplicar. De este modo, efectuará los cambios en el nodo Compute sin cerrar el diálogo de propiedades. Pulse Aceptar para aplicar los cambios y cerrar el diálogo de propiedades. Pulse Cancelar para cerrar el diálogo y eliminar todos los cambios que ha efectuado en las propiedades.

Definición de la interacción de base de datos

Si desea acceder a una base de datos desde este nodo:

  • En Origen de datos, especifique el nombre por el que la base de datos correspondiente se conoce en el sistema en el que se va a ejecutar este flujo de mensajes. El intermediario se conecta a esta base de datos con la información de ID de usuario y contraseña que ha especificado en el mandato mqsicreatebroker, mqsichangebroker o mqsisetdbparms.

    En sistemas z/OS, el intermediario utiliza el ID de tarea iniciada de intermediario o el ID de usuario y contraseña que se han especificado en el mandato mqsisetdbparms del JCL BIPSDBP del conjunto de datos de personalización <hlq>.SBIPPROC.

  • Seleccione el valor Transacción en el menú desplegable. Los valores son los siguientes:
    • Automática (el valor por omisión). El flujo de mensajes, del que forma parte el nodo Compute, se confirma si la operación es satisfactoria. Es decir, que las acciones que define en el módulo ESQL se realizan en el mensaje y éste continúa a través del flujo de mensajes. Si el flujo de mensajes da error, la acción se restituye. Si elige Automática, la posibilidad de confirmar o restituir la acción del nodo Compute en la base de datos depende del éxito o el error de todo el flujo de mensajes.
    • Confirmar. Si quiere confirmar la acción del nodo Compute sobre la base de datos, independientemente de que la ejecución general del flujo de mensajes sea correcta o dé errores, seleccione Confirmar. La actualización de la base de datos se confirmará incluso si el flujo de mensajes no se ejecuta correctamente.

    El valor escogido se establece para todas las bases de datos que haya añadido: no se puede seleccionar un valor diferente para cada tabla.

  • Seleccione Básico en el navegador del diálogo de propiedades y seleccione o deseleccione los dos recuadros:
    • Si desea tratar los mensajes de aviso de la base de datos como errores y que el nodo propague el mensaje de salida al terminal de anomalías, seleccione el recuadro Tratar los avisos como errores. Inicialmente, el recuadro no está seleccionado.

      Cuando selecciona el recuadro, el nodo gestiona todos los códigos de retorno positivos de la base de datos como errores y genera excepciones igual que si se tratase de errores negativos o más graves.

      Si no selecciona el recuadro, el nodo trata los avisos como códigos de retorno normales y no emite excepciones. El aviso más significativo es no encontrado que, en la mayoría de los casos, puede tratarse de forma segura como un código de retorno normal.

    • Si desea que el intermediario genere una excepción cuando se detecte un error de la base de datos, seleccione el recuadro Generar excepción en error de base de datos. Inicialmente, el recuadro está seleccionado.

      Si deselecciona el recuadro, deberá incluir ESQL para comprobar si hay algún error de la base de datos que pudiera devolverse después de cada llamada efectuada a la base de datos (esto puede hacerse utilizando SQLCODE y SQLSTATE). Si se produce un error, deberá gestionarlo en el flujo de mensajes para asegurarse de la integridad del intermediario y de la base de datos: el error se ignora si no lo gestiona a través de su propio proceso, debido a que ha decidido no invocar el manejo de errores por omisión mediante el intermediario. Por ejemplo, puede incluir la sentencia THROW de ESQL para generar una excepción en este nodo o puede utilizar el nodo Throw para generar posteriormente su propia excepción en el flujo de mensajes.

Especificación de ESQL

Codifique sentencias ESQL para personalizar el comportamiento del nodo Compute. Por ejemplo, puede personalizarlo para crear un nuevo mensaje o mensajes de salida, utilizando mensajes de entrada o contenido de base de datos (sin modificar o modificados), o datos nuevos. Por ejemplo, es posible que desee modificar un valor en el mensaje de entrada añadiendo un valor de una base de datos y almacenar el resultado en un campo en el mensaje de salida.

Codifique las sentencias ESQL que desee en un archivo ESQL asociado al flujo de mensajes en el que ha incluido esta instancia del nodo Compute. El archivo ESQL, que por omisión tiene el nombre <nombre_flujo_mensajes>.esql, contiene ESQL para cada nodo del flujo de mensajes que lo necesite. Cada parte del código relacionada con un nodo específico se denomina módulo.

Si todavía no existe ningún archivo ESQL para este flujo de mensajes, pulse el botón derecho del ratón en el nodo Compute y pulse Abrir ESQL. Se creará y abrirá un nuevo archivo ESQL en la vista de editor ESQL.

Si el archivo ya existe, pulse el botón Examinar al lado de la propiedad Módulo ESQL. Aparece el diálogo Selección de módulo, que lista los módulos disponibles del nodo Compute definidos en los archivos ESQL a los que este flujo de mensajes puede acceder (pueden definirse archivos ESQL en otros proyectos dependientes). Seleccione el módulo apropiado y pulse Aceptar. Si no hay disponibles módulos apropiados, la lista está vacía.

Si el módulo que ha especificado no existe, se crea automáticamente y el editor coloca el archivo para mostrarlo. Si el archivo y el módulo ya existen, el editor coloca el archivo y resalta el módulo adecuado.

Si lo prefiere, puede abrir el archivo ESQL adecuado en el Navegador de recursos y seleccionar este nodo en la vista de esquema.

Si se crea un esqueleto de módulo para este nodo en un archivo ESQL nuevo o ya existente, consta del ESQL siguiente. En este ejemplo se muestra el nombre de módulo por omisión:

CREATE COMPUTE MODULE <nombre_flujo>_Compute
       CREATE FUNCTION Main() RETURNS BOOLEAN
       BEGIN
              -- CALL CopyMessageHeaders();
              -- CALL CopyEntireMessage();
              RETURN TRUE;
       END;

       CREATE PROCEDURE CopyMessageHeaders() BEGIN
              DECLARE I INTEGER 1;
              DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
              WHILE I < J DO
                     SET OutputRoot.*[I] = InputRoot.*[I];
                     SET I = I + 1;
              END WHILE;
       END;

       CREATE PROCEDURE CopyEntireMessage() BEGIN
              SET OutputRoot = InputRoot;
       END;
END MODULE;
Nota: Si desea desplegar el flujo de mensajes que contiene este nodo Compute en un intermediario cuya versión es anterior a la 5.0, debe efectuar los siguientes cambios en el ESQL del esqueleto de módulo que se muestra más arriba:
  • Sustituya
    DECLARE I INTEGER 1;
    por
    DECLARE I INTEGER; SET I=1;
  • Sustituya
    DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
    por
    DECLARE J INTEGER; SET J=CARDINALITY(InputRoot.*[]);

Si crea su propio módulo ESQL, debe crear este esqueleto exactamente tal como se muestra, a excepción de las llamadas y las definiciones de procedimiento (que se describen más abajo). Puede cambiar el nombre por omisión, pero asegúrese de que el nombre que especifique coincida con el nombre de la propiedad de nodo correspondiente Módulo ESQL. Si desea que el nombre del módulo incluya uno o más espacios, escriba el nombre entre comillas en la propiedad Módulo ESQL.

Añada su propio ESQL para personalizar este nodo después de la sentencia BEGIN que hay después de CREATE FUNCTION y antes de RETURN TRUE. Puede utilizar las dos llamadas incluidas en el esqueleto, a los procedimientos CopyEntireMessage y CopyMessageHeaders.

Estos procedimientos, definidos después de la función Main, proporcionan funciones comunes que es posible que desee cuando manipula mensajes. Las llamadas en el esqueleto están comentadas; elimine las marcas de comentario si desea utilizar el procedimiento. Si no desea utilizarlo, elimine del módulo la llamada y la definición del procedimiento.

En releases anteriores, las funciones que realizaban estos procedimientos las proporcionaban dos botones de selección equivalentes del nodo Compute, en el diálogo de propiedades.

También puede crear un archivo ESQL mediante Archivo > Nuevo > Archivo ESQL de flujo de mensajes.

Establecimiento de la modalidad

Al seleccionar la Modalidad de cálculo, se especifica si los componentes Mensaje, Entorno local (anteriormente especificado como Lista de destinos) y Lista de excepciones, que se generan en el nodo o están contenidos en el mensaje de entrada, se utilizan por omisión en el mensaje de salida.

Este valor por omisión se utiliza cuando el mensaje transformado se direcciona al terminal de salida una vez que se ha completado el proceso en el nodo. El valor por omisión también se utiliza siempre que una sentencia PROPAGATE no especifica la composición del mensaje de salida.

Esos componentes que no están incluidos en la selección se pasan sin modificarse; incluso si modifica esos componentes, las actualizaciones son locales para este nodo.

El componente Entorno del árbol de mensaje no queda afectado por el valor de modalidad. El contenido, si existe, se pasa desde este nodo en el mensaje de salida.

Debe establecer esta propiedad para que refleje correctamente el formato de mensaje de salida que requiere. Si selecciona una opción (o acepta el valor por omisión) que no incluye una parte determinada del mensaje, esa parte del mensaje no se incluye en ningún mensaje de salida que se cree.

Las opciones se explican en la tabla siguiente.

Modalidad Descripción
Mensaje (valor por omisión) El mensaje lo genera o lo pasa el nodo Compute como modificado dentro del nodo.
Entorno local El nodo Compute genera o pasa la estructura en árbol del entorno local tal como se modifica dentro del nodo.
Entorno local y mensaje El nodo Compute genera o pasa la estructura en árbol del entorno local y el mensaje tal como lo modifica el nodo.
Excepción El nodo Compute genera o pasa la Lista de excepciones tal como la modifica.
Excepción y mensaje El nodo Compute genera o pasa la Lista de excepciones y el mensaje tal como los modifica.
Excepción y entorno local El nodo Compute genera o pasa la Lista de excepciones y la estructura en árbol del entorno local tal como las modifica.
Todo El nodo Compute genera o pasa el mensaje, la Lista de excepciones y el entorno local tal como los modifica.

Puesto que el nodo Compute tiene tanto un mensaje de entrada como de salida, puede utilizar ESQL para hacer referencia a campos de cualquiera de los dos. También puede trabajar con InputLocalEnvironment y OutputLocalEnvironment, e InputExceptionList y OutputExceptionList, así como con los cuerpos de los mensajes de entrada y de salida.

Validación de mensajes

Establezca las propiedades de validación para definir cómo se debe validar el mensaje producido por el nodo Compute. Tenga en cuenta que estas propiedades no hacen que se valide el mensaje de entrada. Se espera que, si se necesita dicha validación, el nodo de entrada o un nodo de validación anterior ya habrá realizado la validación.

Si desea ver más información detallada, consulte los apartados Validar mensajes y Propiedades de validación para mensajes del dominio MRM.

Terminales y propiedades

Los terminales del nodo Compute se describen en la siguiente tabla.

Terminal Descripción
In (de entrada) El terminal de entrada que acepta un mensaje para que lo procese el nodo.
Failure (de anomalías) Terminal de salida al que se direcciona el mensaje de entrada si durante el cálculo se produce una excepción no manejada.
Out (de salida) Terminal de salida al que se direcciona el mensaje transformado cuando se completa el proceso en el nodo. Es posible que una sentencia PROPAGATE también direccione el mensaje transformado a este terminal.
Out1 El primer terminal de salida alternativo al que es posible que una sentencia PROPAGATE direccione el mensaje transformado.
Out2 El segundo terminal de salida alternativo al que es posible que una sentencia PROPAGATE direccione el mensaje transformado.
Out3 El tercer terminal de salida alternativo al que es posible que una sentencia PROPAGATE direccione el mensaje transformado.
Out4 El cuarto terminal de salida alternativo al que es posible que una sentencia PROPAGATE direccione el mensaje transformado.
Nota: Consulte el apartado Sentencia PROPAGATE para conocer la sintaxis de la sentencia PROPAGATE.

Las tablas siguientes describen las propiedades del nodo; la columna con la cabecera O indica si la propiedad es obligatoria (marcada con un asterisco en el diálogo de propiedades si tiene que entrar un valor cuando no hay definido ningún valor por omisión), la columna con la cabecera C indica si la propiedad es configurable (puede cambiar el valor cuando añade el flujo de mensajes al archivo bar para desplegarlo).

Las propiedades básicas del nodo Compute se describen en la siguiente tabla.

Propiedad O C Valor por omisión Descripción
Origen de datos No   El nombre del origen de datos ODBC para la base de datos dentro de la cual se encuentran las tablas a las que se hace referencia en el archivo ESQL asociado a este flujo de mensajes (identificado en la propiedad Módulo ESQL). Sólo se puede especificar un origen de datos para el nodo.
Transacción No Automática La modalidad de transacción para el nodo. Puede ser Automática o Confirmar. Sólo es válida si se ha seleccionado una tabla de base de datos para la entrada.
Módulo ESQL No Compute Nombre del módulo dentro del archivo ESQL que contiene las sentencias para ejecutar contra la base de datos y los mensajes de entrada y salida.
Modalidad de cálculo No Mensaje Elija entre:
  • Mensaje
  • Entorno local
  • Entorno local y mensaje
  • Excepción
  • Excepción y mensaje
  • Excepción y entorno local
  • Todo
Estos valores se explican en Establecimiento de la modalidad.
Tratar los avisos como errores No No seleccionado Tratar los avisos SQL de base de datos como errores. Si selecciona el recuadro, se realizará esta acción.
Generar excepción en error de la base de datos No Seleccionado Los errores de la base de datos hacen que el intermediario genere una excepción. Si selecciona el recuadro, se realizará esta acción.

En la tabla siguiente se describen las propiedades de validación del nodo Compute.

Propiedad O C Valor por omisión Descripción
Validar Ninguno Determina si se realiza la validación. Los valores válidos son Ninguno, Contenido y valor, Contenido y Heredar.
Acción para anomalía No Excepción Determina qué sucede si se produce un error de validación. Sólo puede establecer esta propiedad si Validar se establece en Contenido o Contenido y valor. Los valores válidos son Rastreo de usuario, Anotaciones de error locales, Excepción y Lista de excepciones.
Incluir todas las limitaciones de valor No Seleccionado Esta propiedad no se puede editar. La acción por omisión, indicada por el recuadro seleccionado, es que en la validación se incluyen todas las limitaciones de valor.
Arreglo No Ninguno Esta propiedad no se puede editar. Se proporciona un arreglo mínimo. Los valores válidos son Ninguno y Todos.

En la tabla siguiente se describen las propiedades de las Opciones de mensajes generales para el nodo MQGet.

Propiedad O C Valor por omisión Descripción
Temporización del análisis No A petición Esta propiedad controla cuándo se analiza un mensaje de entrada. Los valores válidos son A petición, Inmediato y Completo.

Consulte Análisis a petición para obtener una descripción completa de esta propiedad.

Utilizar analizador compacto MQRFH2C para dominio MQRFH2 No No Falso Esta propiedad controla si se utiliza el Analizador compacto MQRFH2C, en lugar del analizador MQRFH2, para las cabeceras MQRFH2.

En la tabla siguiente se describen las propiedades de analizador XMLNSC para el nodo Compute.

Propiedad O C Valor por omisión Descripción
Utilizar analizador compacto XMLNSC para dominio XMLNS No seleccionado No Inicio del cambioEstablecer esta propiedad hace que la cabecera MQRFH2 del mensaje de salida especifique el analizador XMLNS en lugar del XMLNSC, lo que permite que una aplicación externa permanezca sin cambios. Si los mensajes de salida no contienen cabeceras MQRFH2, esta propiedad no tiene ningún efecto.Fin del cambio
Modalidad de retención de contenido mixto No Ninguno Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensaje cuando encuentra texto mixto en un mensaje de entrada. Los valores válidos son Ninguno y Todos. Si se selecciona Todos, significa que se crean elementos para el texto mixto. Si se selecciona Ninguno, significa que el texto mixto se ignora y no se crea ningún elemento.
Modalidad de retención de comentarios No Ninguno Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensaje cuando encuentra comentarios en un mensaje de entrada. Los valores válidos son Ninguno y Todos. Si se selecciona Todos, significa que se crean elementos para los comentarios. Si se selecciona Ninguno, significa que se ignoran los comentarios y no se crean elementos.
Modalidad de retención de instrucciones de proceso No Ninguno Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensaje cuando encuentra instrucciones de proceso en un mensaje de entrada. Los valores válidos son Ninguno y Todos. Si se selecciona Todos, significa que se crean elementos para las instrucciones de proceso. Si se selecciona Ninguno, significa que se ignoran las instrucciones de proceso y no se crean elementos.

Las propiedades de descripción del nodo Compute se describen en la siguiente tabla.

Propiedad O C Valor por omisión Descripción
Descripción corta No No   Descripción breve del nodo.
Descripción larga No No   Texto que describe el propósito del nodo en el flujo de mensajes.
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac04660_