Nodo Compute

Utilice el nodo Compute para crear uno o más mensajes de salida nuevos.

Este tema contiene las secciones siguientes:

Finalidad

Los mensajes de salida que cree en el nodo Compute podrían crearse modificando la información que se suministra en el mensaje de entrada o utilizando únicamente información nueva que puede extraerse de una base de datos o de otras procedencias. 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.

Especifique cómo se crean los nuevos mensajes codificando ESQL en el archivo de recursos ESQL del flujo de mensajes. Para obtener más información, consulte Especificación de ESQL.

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

El nodo Compute se encuentra en la bandeja Transformación de la paleta y está representado en el entorno de trabajo mediante 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 se debe utilizar este nodo: Los ejemplos sólo pueden verse cuando se utiliza el centro de información que está integrado en el Kit de herramientas de Message Brokers.

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

Cuando haya colocado una instancia del nodo Compute en un flujo de mensajes, podrá configurarlo; consulte el apartado Configurar un nodo de flujo de mensajes. Las propiedades del nodo se visualizan en la vista Propiedades. Para visualizar las propiedades del nodo en el diálogo Propiedades, efectúe una doble pulsación en el nodo o pulse con el botón derecho del ratón sobre el nodo y pulse Propiedades.

Todas las propiedades obligatorias para las que debe especificar un valor (las que no tienen un valor predeterminado definido) están marcadas con un asterisco.

Configure el nodo Compute como se indica a continuación:

  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

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

Para acceder a una base de datos desde este nodo:

  • En el separador Básicas, especifique en Origen de datos el nombre por el que se conoce la base de datos adecuada en el sistema en el que va a ejecutarse 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.

    z/OS platform En sistemas z/OS, el intermediario utiliza el ID de la tarea iniciada por el intermediario o el ID y la contraseña del usuario que se especificaron en el JCL del mandato mqsisetdbparms BIPSDBP en el 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 predeterminado). 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. Para 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.

  • Para 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 Tratar los avisos como errores. Inicialmente, el recuadro está vacío.

    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.

  • Para forzar al intermediario a que genere una excepción cuando se detecte un error de base de datos, seleccione 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 predeterminado 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 personalizar el nodo para que cree 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, quizá desee modificar un valor en el mensaje de entrada añadiendo un valor de una base de datos y almacenando 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, efectúe una doble pulsación en el nodo Compute o pulse el botón derecho del ratón en el nodo y pulse en Abrir ESQL. Esta acción crea y abre un nuevo archivo ESQL en la vista del editor ESQL. Si lo prefiere, puede abrir el archivo ESQL adecuado en la vista Desarrollo de intermediario y seleccionar este nodo en la vista Esquema.

Si el archivo ya existe, pulse Examinar al lado de la propiedad Módulo ESQL para visualizar el recuadro de 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 lo muestra. Si el archivo y el módulo ya existen, el editor resalta el módulo adecuado.

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 predeterminado:

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;
Para desplegar el flujo de mensajes que contiene este nodo Compute en un intermediario cuya versión sea anterior a la Versión 5.0, efectúe 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 predeterminado, 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.

Establecimiento de la modalidad

La propiedad Modalidad de cálculo controla los componentes que se utilizan de forma predeterminada en el mensaje de salida. Seleccione la propiedad para indicar si se utilizan los componentes Mensaje, Entorno local (llamado anteriormente Lista de destinos) y Lista de excepciones generados dentro del nodo o contenidos en el mensaje entrante.

Este valor predeterminado se utiliza cuando el mensaje transformado se direcciona al terminal de salida una vez que se ha completado el proceso en el nodo. También se utiliza el valor predeterminado 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.

Y al revés, los componentes que no se incluyen en la selección no se pasan y persisten las actualizaciones que se realizan en el nodo.

Los siete valores posibles que puede tener la propiedad Modalidad de cálculo se indican en la siguiente tabla.
Modalidad Descripción
Mensaje (valor predeterminado) El mensaje lo genera o lo pasa el nodo Compute tal como se ha modificado dentro del nodo.
Entorno local El nodo Compute genera o pasa la estructura en árbol del entorno local tal como se ha modificado 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 ha modificado el nodo.
Excepción El nodo Compute genera o pasa la Lista de excepciones tal como la ha modificado.
Excepción y mensaje El nodo Compute genera o pasa la Lista de excepciones y el mensaje tal como los ha modificado el nodo.
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 ha modificado el nodo.
Todo El nodo Compute genera o pasa el mensaje, la Lista de excepciones y el entorno local tal como los ha modificado el nodo.

El valor de la propiedad Modalidad de cálculo especifica qué nuevos árboles de mensaje se propagan desde el nodo Compute. Por lo tanto, para esos árboles de mensaje seleccionados, los mensajes de entrada se descartan a menos que se copien explícitamente en el nuevo árbol de mensaje de salida equivalente.

Si se ha seleccionado Todo, el nodo Compute espera generar los tres nuevos árboles de mensaje para Root, LocalEnvironment y ExceptionList rellenando OutputRoot, OutputLocalEnvironment y OutputExceptionList. Los árboles de mensaje de entrada no se pasan a la salida, a menos que se copien explícitamente de la entrada a la salida.

Por lo tanto, si la propiedad Modalidad de cálculo se ha establecido en Todo, deberá codificar el siguiente ESQL para que los árboles de entrada se propaguen al terminal de salida:
  SET OutputRoot = InputRoot;
  SET OutputLocalEnvironment = InputLocalEnvironment;
  SET OutputExceptionList = InputExceptionList;
Si el ESQL era CopyEntireMessage(), LocalEnvironment y ExceptionList no se copian ni se propagan al terminal de salida; se pierden en ese nodo en el flujo de mensajes.

Para producir un mensaje de salida nuevo o modificado y propagar los mismos LocalEnvironment y ExceptionList, establezca la propiedad Modalidad de cálculo en Mensaje para que el LocalEnvironment y ExceptionList que se pasen al nodo Compute o Mapping, se pasen desde el nodo Compute.

La Modalidad de cálculo se aplica únicamente a la propagación desde el nodo. Los tres árboles de salida se pueden crear en un nodo Compute o Mapping y se pueden manipular y existir dentro del nodo. Sin embargo, la Modalidad de cálculo determina si dichos árboles de salida se utilizan en la propagación desde el nodo.

En la propagación desde el nodo, los siguientes árboles se propagan desde el nodo Compute o Mapping para los siguientes valores.
Modalidad de cálculo Árboles propagados
Todo OutputRoot, OutputLocalEnvironment, OutputExceptionList
Mensaje OutputRoot, InputLocalEnvironment, InputExceptionList
Entorno local InputRoot, OutputLocalEnvironment, InputExceptionList
Entorno local y mensaje OutputRoot, OutputLocalEnvironment, InputExceptionList
Excepción InputRoot, InputLocalEnvironment, OutputExceptionList
Excepción y mensaje OutputRoot, InputLocalEnvironment, OutputExceptionList
Excepción y entorno local InputRoot, OutputLocalEnvironment, OutputExceptionList

Cuando se define el nombre de un árbol de salida, ESQL crea este árbol de mensaje antes de la propagación. Si el ESQL no crea el árbol, no se propagará ningún árbol para ese nombre de correlación y el árbol de entrada no se utilizará en su lugar porque la propiedad Modalidad de cálculo no ha indicado esta opción. Por tanto, dependiendo de los valores de la propiedad Modalidad de cálculo de cálculo y del ESQL, se puede suprimir un árbol que se haya entrado al nodo porque no se ha transferido al árbol de salida, o propagar un árbol modificado, tal como deseaba.

A la inversa también se cumple. Si su ESQL interroga a los árboles de entrada y no necesita propagar estos árboles, el valor de la Modalidad de cálculo puede indicar que el árbol de mensaje se propaga cuando no es su intención que esto suceda. Por ejemplo, quizá no desee propagar LocalEnvironment y ExceptionList desde un nodo Compute, pero como seleccionó Mensaje, se propagarán las versiones de entrada de los árboles. Aunque el ESQL suprima explícitamente OutputLocalEnvironment y OutputExceptionList, esas modificaciones serán locales para el nodo debido a que el valor de la propiedad Modalidad de cálculo causa la propagación de los árboles de entrada.

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

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

El nodo Compute tiene un mensaje de entrada y un mensaje de salida, por lo que puede utilizar el ESQL para hacer referencia a campos de cualquiera de los dos mensajes. 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 debe validarse el mensaje producido por el nodo Compute. 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 información más detallada, consulte los apartados Validar mensajes y Propiedades de validación.

Terminales y propiedades

Los terminales del nodo Compute están descritos 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.

Si desea ver la sintaxis de la sentencia PROPAGATE, consulte Sentencia PROPAGATE.

Las tablas siguientes describen las propiedades de nodo. La columna con la cabecera O indica si la propiedad es obligatoria (marcada con un asterisco si tiene que entrar un valor cuando no hay definido ningún valor predeterminado); 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 de Descripción del nodo Compute están descritas en la siguiente tabla.

Propiedad O C Valor predeterminado Descripción
Nombre de nodo No No El tipo de nodo El nombre del nodo.
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.

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

Propiedad O C Valor predeterminado 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. Las opciones válidas son Automática y Confirmar. La propiedad 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
Para obtener más información sobre el establecimiento de las opciones de modalidad, consulte Establecimiento de la modalidad.
Tratar los avisos como errores No No seleccionado Si selecciona el recuadro, los avisos SQL de base de datos se tratan como errores.
Generar excepción en error de base de datos No Seleccionado Si selecciona este recuadro, los errores de base de datos hacen que el intermediario genere una excepción.

En la siguiente tabla se describen las propiedades de Opciones de análisis para el nodo Compute.

Propiedad O C Valor predeterminado 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.

Si desea ver una descripción completa de esta propiedad, consulte Análisis a petición.

Utilizar analizador compacto XMLNSC para dominio XMLNS No No No seleccionado 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
Retener contenido mixto No No No seleccionado Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensaje cuando encuentra texto mixto en un mensaje de entrada. Si selecciona el recuadro, se crean elementos para el texto mixto. Si deselecciona el recuadro, el texto mixto se ignora y no se crea ningún elemento.
Retener comentarios No No No seleccionado Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensaje cuando encuentra comentarios en un mensaje de entrada. Si selecciona el recuadro, se crean elementos para los comentarios. Si deselecciona el recuadro, los comentarios se ignoran y no se crea ningún elemento.
Retener instrucciones de proceso No No No seleccionado Esta propiedad controla si el analizador XMLNSC crea elementos en el árbol de mensaje cuando encuentra instrucciones de proceso en un mensaje de entrada. Si selecciona el recuadro, se crean elementos para las instrucciones de proceso. Si deselecciona el recuadro, las instrucciones de proceso se ignoran y no se crea ningún elemento.

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

Para ver la descripción completa de estas propiedades, consulte el apartado Propiedades de validación.
Propiedad O C Valor predeterminado Descripción
Validar No Ninguna Esta propiedad controla si tiene lugar la validación. Los valores válidos son Ninguna, Contenido y valor, Contenido y Heredar.
Acción para anomalía No No Excepción Esta propiedad controla qué sucede si falla una 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 No Seleccionado Esta propiedad no se puede editar. La acción predeterminada, indicada por el recuadro seleccionado, es que en la validación se incluyen todas las limitaciones de valor.
Arreglo No No Ninguna Esta propiedad no se puede editar. Se proporciona un arreglo mínimo. Los valores válidos son Ninguna y Todos.
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última actualización : 2009-02-16 13:53:41

ac04660_