Este tema contiene los apartados siguientes:
Utilice el nodo Compute para construir uno o más mensajes de salida nuevos creando mensajes y llenándolos con nueva información, con información modificada del mensaje de entrada, o bien, con información extraída de una base de datos. Puede modificar elementos (cabeceras, campos de cabecera y datos del cuerpo) del mensaje de entrada, su entorno asociado y la lista de excepciones para crear el nuevo mensaje de salida.
Para especificar cómo se deben crear los nuevos mensajes debe codificar 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 tanto de los datos como del mensaje de entrada desde una base de datos externa. Una expresión puede utilizar operadores aritméticos, operadores de texto (por ejemplo, concatenación), operadores lógicos y otras funciones incorporadas.
Utilice el nodo Compute para:
Las sentencias ESQL se definen en un módulo asociado a este nodo en el archivo ESQL (.esql) asociado al flujo de mensajes. Debe crear este archivo para completar la definición del flujo de mensajes.
El nodo Compute se representa en el área de trabajo mediante el icono siguiente:
Consulte los ejemplos siguientes para informarse sobre cómo puede utilizar este nodo:
Suponga que hay un flujo de mensajes en el que desea proporcionar un identificador exclusivo a cada mensaje según el orden de recepción con propósitos de auditoría. El nodo Compute no modifica el mensaje de entrada, sino que crea una copia nueva y modificada del mensaje como mensaje de salida. Puede utilizar el nodo Compute para insertar un identificador exclusivo para el orden establecido en el mensaje de salida, que pueden utilizar nodos subsiguientes del flujo de mensajes.
Se puede configurar al transferir una instancia del nodo Compute a un flujo de mensajes. Pulse el botón derecho del ratón en la vista del editor y, a continuación, pulse en Propiedades. Se muestran las propiedades básicas del nodo.
Todas las propiedades obligatorias para las que debe entrar un valor (las que no tienen un valor por omisión definido) se muestran marcadas con un asterisco en el diálogo de propiedades.
Configure el nodo Compute tal como se indica a continuación:
Cuando haya acabado la configuración, pulse el botón en Aplicar. De este modo, se realizan los cambios en el nodo Compute sin cerrar el diálogo de propiedades. Pulse el botón en Aceptar para aplicar los cambios y cerrar el diálogo de propiedades. Pulse el botón en Cancelar para cerrar el diálogo y descartar todos los cambios que ha realizado en las propiedades.
Si desea utilizar datos de una base de datos en este nodo (haciendo referencia a tablas de base de datos en el módulo ESQL asociado):
En sistemas z/OS, el intermediario utiliza el ID de tarea iniciada del intermediario.
El valor que elige se implementa para uno o más tablas de base de datos que se hayan añadido: no puede seleccionar un valor diferente para cada tabla.
Cuando selecciona el recuadro, el nodo maneja todos los códigos de retorno positivos de la base de datos como errores y genera excepciones utilizando el mismo procedimiento que para los 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 ninguna excepción. El aviso emitido más importante es not found, que se puede manejar, de modo seguro, como un código de retorno normal en la mayor parte de los casos.
Si deselecciona el recuadro, debe incluir ESQL para comprobar si hay algún error de base de datos que se pueda devolver después de cada invocación de base de datos que se realiza (puede utilizar SQLCODE y SQLSTATE para ello). Si se produce un error, debe manejarlo en el flujo de mensajes a fin de garantizar la integridad del intermediario y de la base de datos: el error se ignora si no se maneja a través de procesos propios, puesto que se ha elegido que el intermediario no invoque el manejo de errores por omisión. Por ejemplo, puede incluir la sentencia ESQL THROW para que emita una excepción en este nodo, o bien, puede utilizar el nodo Throw para que genere la excepción en un punto posterior del flujo de mensajes.
Sentencias ESQL de código para personalizar el comportamiento del nodo Compute. Por ejemplo, lo puede personalizar para crear nuevos mensajes de salida utilizando contenido de base de datos o de mensajes (sin modificar o modificado) o nuevos datos. 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 desea 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 el ESQL para cada flujo de mensajes que lo necesita. Cada parte del código que está relacionada con un nodo específico se conoce como módulo.
Si aún no existe ningún archivo ESQL para este flujo de mensajes, pulse el botón derecho del ratón en el nodo Compute y, a continuación, pulse el botón en Abrir ESQL. De este modo, se crea y se abre un nuevo archivo ESQL en la vista del editor ESQL.
Si el archivo ya existe, pulse en el botón Examinar, situado junto a la propiedad Módulo ESQL. De este modo, se visualiza el diálogo Selección de módulo, que lista los módulos de nodos Compute disponibles que se han definido en los archivos ESQL a los que puede acceder el flujo de mensajes (los archivos ESQL se pueden haber definido en otros proyectos dependientes). Seleccione el módulo adecuado y, a continuación, pulse el botón en Aceptar. Si no hay ningún módulo adecuado, la lista se muestra vacía.
Si el módulo que ha especificado no existe, se crea automáticamente y el editor sitúa el archivo para su visualización. Si el archivo y el módulo ya existen, el editor sitúa el archivo y visualiza y resalta el módulo correcto.
Si lo prefiere, puede abrir el archivo ESQL adecuado en el navegador de recursos y seleccionar el nodo en la vista Esquema.
El esqueleto del módulo para este nodo se crea en un archivo ESQL nuevo o existente y consta del ESQL siguiente. El nombre del módulo por omisión se muestra en el ejemplo siguiente:
CREATE COMPUTE MODULE <flow_name>_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;
DECLARE I INTEGER 1;por
DECLARE I INTEGER; SET I=1;
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, excepto para las definiciones y las invocaciones de procedimientos (descritas más abajo). Puede cambiar el nombre por omisión, pero asegúrese de que el nombre que especifica coincide con el nombre de la propiedad Módulo ESQL del nodo correspondiente. Si desea que el nombre del módulo incluya uno o más espacios, especifíquelo entre comillas en la propiedad Módulo ESQL.
Añada su propio ESQL para personalizar el nodo después de la sentencia BEGIN que va a continuación de CREATE FUNCTION y antes de RETURN TRUE. Puede utilizar las dos invocaciones incluidas en el esqueleto para 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 invocaciones en el esqueleto están comentadas; elimine los marcadores de comentario si desea utilizar el procedimiento. Si no desea utilizar ningún procedimiento, elimine tanto la invocación como la definición de procedimiento del módulo.
En releases anteriores, dos botones de selección del nodo Compute equivalentes del diálogo de propiedades llevaban a cabo estos procedimientos.
También puede crear un archivo ESQL utilizando
.Cuando selecciona la Modalidad de cálculo, especifica la combinación de componentes Mensaje, Entorno local (especificado previamente como Lista de destinos) y Excepción que se va a generar y modificar en el mensaje de salida. Estos componentes no incluidos en la selección se pasan sin modificar: aunque los modifique, las actualizaciones que se realizan en este nodo son locales.
(El valor de la modalidad no afecta al componente Environment del árbol de mensajes). Su contenido, si lo hay, se pasa de este nodo al mensaje de salida).
Debe establecer esta propiedad de modo que refleje correctamente el formato del mensaje de salida que necesita. Si selecciona una opción (o acepta el valor por omisión) que no incluye un contenido específico 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) | Se genera el mensaje o el nodo Compute lo pasa a través tal como se ha modificado en el nodo. |
Entorno local | Se genera la estructura de árbol del entorno local o el nodo Compute la pasa a través tal como la ha modificado el nodo. |
Entorno local y mensaje | Se genera la estructura de árbol del entorno local y el mensaje o el nodo Compute los pasa a través tal como los ha modificado el nodo. |
Excepción | Se genera la lista de excepciones o el nodo Compute la pasa a través tal como la ha modificado el nodo. |
Excepción y mensaje | Se genera la lista de excepciones y el mensaje o el nodo Compute los pasa a través tal como los ha modificado el nodo. |
Excepción y entorno local | Se genera la lista de excepciones y la estructura del árbol del entorno local o el nodo Compute las pasa a través tal como las ha modificado el nodo. |
Todos | Se genera el mensaje, la lista de excepciones y el entorno local o el nodo Compute los pasa a través tal como los ha modificado el nodo. |
Puesto que el nodo Compute tiene un mensaje de entrada y un mensaje de salida, puede utilizar ESQL para hacer referencia a campos de cualquiera de ellos. También puede trabajar con InputLocalEnvironment y OutputLocalEnvironment, además de InputExceptionList y OutputExceptionList, así como con los cuerpos de los mensajes de entrada y de salida.
Seleccione Validación en el navegador del diálogo de propiedades si desea que el analizador MRM valide el cuerpo de los mensajes frente al diccionario que se genera del conjunto de mensajes. Las opciones de validación que establece en un nodo Compute sólo se aplican a los mensajes de salida que se crean. La validación no se lleva a cabo dentro del nodo en sí, sino sólo cuando, posteriormente, se convierte el mensaje a una corriente de bits.
Las dos primeras opciones son especialmente útiles cuando se invoca la validación por primera vez, puesto que se pueden ver todas las anomalías de validación, no sólo el primer error que se encuentra. Una vez que se han analizado las anomalías, generalmente, se selecciona Excepción para su uso futuro.
Los destinos de las anomalías se comportan igual que en el caso de la salida del nodo Trace. Así, por ejemplo, si selecciona Rastreo de usuario, las entradas de rastreo se escriben sin tener en cuenta el valor del distintivo del rastreo de usuario para el flujo de mensajes.
Los terminales del nodo Compute se describen en la tabla siguiente:
Terminal | Descripción |
---|---|
Terminal de entrada | Terminal de entrada que acepta un mensaje para que lo procese el nodo. |
Terminal de anomalías | Terminal de salida al que se direcciona el mensaje de entrada si se detecta una anomalía durante el cálculo. (Aunque se haya establecido la propiedad Validar, los mensajes que se propagan al terminal de anomalías del nodo no se validan). |
Terminal de salida | Terminal de salida al que se direcciona el mensaje transformado. |
En las tablas siguientes se describen las propiedades del nodo; la columna que tiene el encabezamiento M indica si se trata de una propiedad obligatoria (marcada con un asterisco en el diálogo de propiedades si se debe especificar un valor cuando no se ha definido ningún valor por omisión), la columna que tiene el encabezamiento C indica que se trata de una propiedad configurable (se puede cambiar el valor cuando se añade el flujo de mensajes al archivo bar para su difusión).
Las propiedades básicas del nodo Compute se describen en la tabla siguiente:
Propiedad | M | C | Valor por omisión | Descripción |
---|---|---|---|---|
Origen de datos | No | Sí | Nombre del origen de datos ODBC para la base de datos en la que residen 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 puede especificar un origen de datos para el nodo. | |
Transacción | Sí | No | Automática | 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 | Sí | No | Cálculo | Nombre del módulo del archivo ESQL que contiene las sentencias que se deben ejecutar con respecto a la base de datos y los mensajes de entrada y salida. |
Modalidad de cálculo | Sí | No | Mensaje | Elija entre:
|
Tratar los avisos como errores | Sí | No | Deseleccionado | Tratar los avisos SQL de base de datos como errores. Si selecciona el recuadro de selección, se realiza esta acción. |
*Generar excepción en error de la base de datos | Sí | No | Seleccionado | Los errores de base de datos hacen que el intermediario emita una excepción. Si selecciona el recuadro de selección, se realiza esta acción. |
Las propiedades de validación del nodo Compute se describen en la tabla siguiente:
Propiedad | M | C | Valor por omisión | Descripción |
---|---|---|---|---|
Validar | Sí | No | Ninguna | Si debe llevarse a cabo la validación. Los valores válidos son Ninguna y Contenido y valor. |
Acción por anomalía | Sí | No | Excepción | Lo que sucede si se produce una anomalía en la validación. Sólo puede establecer esta propiedad si Validar se establece en Contenido y valor. Los valores válidos son Rastreo de usuario, Anotaciones de error locales y Excepción. |
Incluir todas las limitaciones de valores | Sí | No | Seleccionado | Esta propiedad no se puede editar. La acción por omisión, indicada si el recuadro de selección está seleccionado, es que se incluyan todas las limitaciones de valores en la validación. |
Arreglo | Sí | No | Ninguno | Esta propiedad no se puede editar. Se proporciona el arreglo mínimo. |
Las propiedades de descripción del nodo Compute se describen en la tabla siguiente:
Propiedad | M | 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 la finalidad del nodo en el flujo de mensajes. |
Conceptos relacionados
Flujos de mensajes
Flujos de mensajes, correlaciones y ESQL
Nombres de correlación
Tareas relacionadas
Configuración de DB2
Cómo decidir los nodos que utilizar
Validación de mensajes
Creación de listas de destinos
Manejo de errores en flujos de mensajes
Configuración de flujos de mensajes coordinados
Creación de ESQL para un nodo
Configuración de ESQL dentro de nodos
Edición de propiedades configurables
Referencia relacionada
ESQL
Limitaciones de valores lógicos de tipo simple
Mandato mqsichangebroker
Mandato mqsicreatebroker
Mandato mqsisetdbparms
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
ac04660_ |