Defina un subflujo para proporcionar una secuencia
común de acciones para que las utilicen varios flujos de mensajes, aplicaciones o
servicios. Puede incluir subflujos en los flujos de mensajes de la misma manera que se incluyen nodos incorporados o definidos por el usuario. También puede conectar subflujos a otros
nodos de la misma manera.
Un subflujo proporciona las siguientes ventajas:
- Reutilización y tiempo de desarrollo reducido.
- Coherencia y posibilidad de mantenimiento de los flujos de mensajes (considere un
subflujo
como una macro de programación o como código en línea que se escribe una vez pero se
utiliza en muchos sitios).
- Flexibilidad para personalizar un subflujo para un contexto específico (por ejemplo, actualizando la cola de salida o información de origen de datos).
Consulte estos ejemplos de utilización de subflujo:
- Puede definir un subflujo que proporcione una secuencia común de acciones que se aplique a varios flujos de mensajes si se produce un error. Por ejemplo, puede tener una rutina común de errores que escriba el mensaje en una base
de datos a través del nodo Database,
y lo coloque en una cola para que lo procese una rutina de recuperación de errores. El uso de esta rutina en varios flujos de mensajes o en varios sitios
dentro de un flujo de mensajes, proporciona un uso eficaz y coherente de
los recursos y evita tener que reinventar esas rutinas cada vez que se
produce un error.
- Es posible que desee llevar a cabo un cálculo común de los mensajes que pasan por varios flujos de mensajes distintos; por ejemplo, quizá desee acceder a las tasas de cambio de divisas de una base de datos y aplicarlas para calcular precios en varias monedas distintas. Puede incluir el subflujo de cálculo de moneda en cada flujo
de mensajes que sea adecuado.
Para obtener más información sobre los subflujos, consulte el escenario siguiente
../com.ibm.scenarios.doc/UnderstandingSubflows/topics/scnsubflows_01_11_.htm.
Tipos de subflujos
Un subflujo se define una vez y se
utiliza en más de un flujo de mensajes, aplicación, servicio y proyecto de Message Broker. El
contenido del subflujo se define de la misma manera que se define el contenido del flujo
de mensajes, añadiendo, configurando y conectando nodos de flujo de mensajes.
Nota: En
tiempo de ejecución, cada instancia de un subflujo crea una copia de todos los nodos de
flujo de mensajes que definen ese subflujo. Esto afecta al uso de los recursos, lo que
puede afectar al rendimiento general del flujo de mensajes.
Puede crear un
subflujo como un archivo
.subflow o como un archivo
.msgflow. Elija qué tipo de subflujo utilizar basándose en la siguiente información:
- Un subflujo que se define en un archivo .subflow se puede
desplegar de cualquiera de las siguientes maneras:
- Por separado de cualquiera de los flujos de mensajes que utilizan este subflujo.
El subflujo y los flujos de mensajes que incluyen este subflujo deben desplegarse en el
mismo grupo de ejecución en un intermediario. El subflujo se puede desplegar directamente
en un grupo de ejecución en un intermediario, o como parte de una biblioteca. Si
actualiza este tipo de subflujo y lo vuelve a desplegar, todos los flujos de mensajes que
utilizan este subflujo, y no forman parte de una aplicación o servicio, se actualizan
automáticamente. No es necesario que vuelva a desplegar estos flujos de mensajes.
- Como parte de una aplicación o servicio.
- No puede utilizar los nodos siguientes en este tipo de subflujo:
- Nodos que representan subflujos que se definen en archivos .msgflow
- Nodos definidos por el usuario creados a partir de subflujos que se definen en archivos .msgflow
- Nodos MQOptimizedFlow
- Si crea
un archivo BAR que contiene código ESQL y un subflujo que se define en un archivo
.subflow, no puede incluir el código ESQL directamente en
archivos de flujo de mensajes compilado.
- Un subflujo que se define en un archivo .msgflow,
se incluye dentro de los flujos de mensajes padre que lo utilizan cuando el flujo de
mensajes se coloca en un archivo BAR. Por lo tanto, este tipo de subflujo sólo se puede
desplegar en un intermediario con el flujo de mensajes en el que se utiliza.
- Si actualiza este tipo de subflujo, debe volver a desplegar todos los flujos de
mensajes que utilizan el subflujo para que los cambios se utilicen.
- Este tipo de subflujo puede empaquetarse como un nodo definido por el usuario.
Condiciones que se aplican al convertir un subflujo entre
.msgflow y .subflow y viceversa
Puede
convertir un subflujo creado como un archivo
.msgflow en un
archivo
.subflow.
- Si el archivo .msgflow contiene subflujos que están definidos como
archivos .msgflow, estos subflujos también deben convertirse
en archivos .subflow.
- Si el archivo .msgflow se utiliza como un subflujo, el flujo padre
debe actualizarse para que haga referencia al nuevo archivo .subflow.
Puede
convertir un subflujo creado como un archivo
.subflow en un archivo
.msgflow.
- No puede utilizar el nombre de un archivo que ya exista en la aplicación, biblioteca
o proyecto de Message Broker en la que cree el subflujo como un archivo
.msgflow. Debe incluir .msgflow al final del nombre
de archivo del subflujo.
Condiciones que se aplican cuando se desea añadir un subflujo a un flujo
de mensajes
Puede añadir subflujos a un flujo de mensajes si se cumple cualquiera
de las siguientes condiciones:
- El subflujo que desea añadir a un flujo de mensajes está definido en una biblioteca, y
ha especificado la dependencia del proyecto de flujo de mensajes actual en ese otro
proyecto. Las aplicaciones y servicios pueden hacer referencia a bibliotecas.
Nota: Una
biblioteca es una agrupación lógica de código relacionado, datos, o ambas cosas, que
normalmente contiene subflujos reutilizables y otros tipos de recursos.
- El subflujo que desea añadir a un flujo de mensajes está definido en el mismo
proyecto de Message Broker, proyecto de aplicación o proyecto de servicio que el flujo de
mensajes.
Condiciones que se aplican cuando se desea añadir un subflujo a un
subflujo
Puede añadir subflujos a un subflujo en cualquiera de los
casos siguientes:
- Puede añadir subflujos que estén definidos en archivos .subflow
a subflujos que estén definidos en archivos .subflow y archivos
.msgflow.
- Puede añadir subflujos que estén definidos en archivos .msgflow a
subflujos que estén definidos sólo en archivos .msgflow.
Condiciones que se aplican cuando se despliega un subflujo
Puede
desplegar subflujos de las siguientes maneras:
- Despliegue un subflujo como un recurso independiente definido dentro de un proyecto
de Message Broker.
- Despliegue un subflujo como parte de un proyecto de aplicación.
- Despliegue un subflujo como parte de una operación de servicio.
- Despliegue un subflujo como parte de una biblioteca.
Puede desplegar
un subflujo en un grupo de ejecución enviando un archivo archivador de intermediario
(BAR) a un grupo de ejecución en un intermediario, que desempaqueta y almacena el contenido
listo para cuando se inicien los flujos de mensajes.
Se aplican las siguientes
condiciones cuando se despliega un subflujo como parte de una solución de integración:
- Si despliega un flujo de mensajes que contiene un subflujo que está definido en un
archivo .subflow, el subflujo se incluye automáticamente en el archivo BAR.
- Si despliega un subflujo que está contenido en una aplicación, debe desplegar la
aplicación en un grupo de ejecución, lo que da como resultado un despliegue completo de
la aplicación.
- Si despliega un subflujo que está contenido en un servicio, debe desplegar el
servicio en un grupo de ejecución, lo que da como resultado un despliegue completo del
servicio.
- Si despliega un subflujo que está contenido en una biblioteca, puede desplegar la
biblioteca en un grupo de ejecución directamente, fuera de una aplicación o un servicio. El
subflujo incluido en la biblioteca podrá entonces ser referenciado por otros
flujos de mensajes y subflujos que se desplieguen directamente en el mismo grupo de
ejecución que la biblioteca.
- Un subflujo que se ha creado como un archivo .msgflow en un proyecto
de Message Broker sólo se puede desplegar como un recurso separado si contiene al menos un
nodo de entrada.
Control de versiones
Utilice el nodo
Passthrough para habilitar el control de
versiones de un subflujo en tiempo de ejecución.
Al incluir un nodo de
Passthrough, puede añadir una etiqueta al flujo o subflujo de mensajes. Mediante la combinación de esta
etiqueta con la sustitución de palabras clave de su sistema de control de
versiones, puede identificar qué versión de un subflujo está incluida en
un flujo de mensajes desplegado.
Puede utilizar esta etiqueta para fines
personales. Si ha incluido las palabras de
versión correctas en la etiqueta, puede ver el valor de la etiqueta de las siguientes
maneras:
- Utilizando el mandato mqsireadbar
para leer las propiedades almacenadas en el archivo archivador de intermediario (BAR).
- En WebSphere Message Broker Toolkit, en las propiedades de un flujo de
mensajes desplegado, tal como se desplegó por última vez en un intermediario específico.
- En el entorno de ejecución, si habilita el rastreo de usuario para ese flujo de
mensajes.
Para los subflujos creados como un archivo
.subflow, debe tener en cuenta el comportamiento siguiente al
desplegar una nueva versión de un subflujo:
- Si el subflujo se despliega por separado de cualquiera de los flujos de mensajes que
utilizan este subflujo y despliega una nueva versión del subflujo, todos los flujos de
mensajes se actualizan automáticamente.
- Si el subflujo se despliega como parte de una aplicación o servicio, debe actualizar
las aplicaciones y servicios para que incluyan la nueva versión del subflujo, y volver
a desplegarlos.
Para los subflujos creados como un
archivo
.msgflow, debe tener en cuenta el comportamiento siguiente
al desplegar una nueva versión de un subflujo:
- Debe actualizar las aplicaciones, servicios y recursos independientes que utilizan el
subflujo para que incluyan la nueva versión del subflujo, y volver a desplegarlos.
Ejemplos
El uso de subflujos se muestra en los siguientes ejemplos:
El manejador de errores utiliza un subflujo para atrapar información sobre errores y
almacenar la información en una base de datos. La Respuesta de solicitud coordinada utiliza un subflujo para encapsular el almacenamiento de los valores
ReplyToQ y
ReplyToQMgr en un mensaje
WebSphere MQ de forma que la lógica de proceso pueda reutilizarse en otros flujos de mensajes y para permitir la sustitución de implementaciones alternativas.
Puede
ver información sobre los ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit o el Information Center
en línea. Puede
ejecutar ejemplos sólo cuando utilice el Information Center que está
integrado en WebSphere Message Broker Toolkit.