Utilice la API Java™ de Message Broker para modificar una instancia de patrón para añadir nodos definidos por el usuario y para conectar nodos definidos por el usuario a otros nodos.
El código necesario para añadir y conectar un nodo definido por el usuario es diferente de código necesario para los nodos incorporados y los nodos de subflujo.
Al escribir código Java para nodos
definidos por el usuario debe tener en cuenta la información siguiente:
- Los nodos definidos por el usuario están soportados por instancias de la clase GenericNode.
Para añadir nodos definidos por el usuario a flujos de mensajes, cree instancias de GenericNode y añádalas a la instancia de flujo de mensajes.
- Para recuperar instancias existentes de un nodo definido por el usuario, llame
a getNodeByName() y convierta el objeto devuelto
a un objeto GenericNode.
- Los terminales definidos en los nodos definidos por el
usuario no están disponibles automáticamente en la API Java de Message Broker. Si crea una instancia de una
clase GenericNode, ésta no tiene ningún terminal de entrada o de salida listado. Los
métodos getInputTerminals() y getOutputTerminals()
devuelven una lista vacía.
- Para obtener un terminal de entrada para una clase GenericNode,
llame a getInputTerminal() y pase el nombre de terminal que existe en el nodo genérico. Este método
devuelve el terminal de entrada y hace que
esté disponible en el objeto de flujo de mensajes que contiene el nodo genérico. Después de haber utilizado
getInputTerminal() con un nombre de terminal conocido,
este terminal de entrada se devuelve si se utiliza getInputTerminals().
- Para obtener un terminal de salida para una clase GenericNode,
llame a getOutputTerminal() y pase el nombre de terminal que existe en el nodo genérico. Este método devuelve el terminal de
salida y hace que esté disponible en el objeto de flujo
de mensajes que contiene el nodo genérico. Después de haber utilizado getOutputTerminal() con
un nombre de terminal conocido, este terminal de salida será devuelto si se ha utilizado
getOutputTerminals().
En el ejemplo siguiente se muestra cómo puede añadir un nodo definido por el usuario para un flujo de mensajes y conectarlo a un nodo incorporado:
- Se crea un nodo MQInput y se añade al flujo de mensajes.
- Se crea un nodo definido por el usuario utilizando la clase GenericNode y se añade al objeto de flujo de mensajes.
- El
terminal de salida estático de MQInput se asigna a la variable outputTerminal.
- El terminal de
entrada del nodo definido por el usuario se asigna a la variable inputTerminal utilizando
el método getInputTerminal() con el nombre In de terminal conocida.
- Los nodos se conectan utilizando el método connect().
- La sección final de código
muestra que el nodo de entrada ya está disponible para utilizar en el
flujo de mensajes, utilizando el método getInputTerminals() de la instancia de nodo definido por el usuario.
MessageFlow mf1 = patternInstanceManager.getMessageFlow("MyFlowProject", "main.msgflow");
MQInputNode mqinNode = new MQInputNode();
mqinNode.setNodeName("Mi nodo de entrada");
mqinNode.setQueueName("IN");
mf1.addNode(mqinNode);
GenericNode myNode = new GenericNode("MyUserDefinedNode");
myNode.setNodeName("MyNode");
mf1.addNode(myNode);
OutputTerminal outputTerminal = mqinNode.OUTPUT_TERMINAL_OUT;
InputTerminal inputTerminal = myNode.getInputTerminal("In");
mf1.connect(outputTerminal, inputTerminal);
InputTerminal[] inputTerminals = myNode.getInputTerminals();
System.out.println("Input terminals on my node:");
for (int i = 0; i < inputTerminals.length; i++) {
InputTerminal inputTerminal = inputTerminals[i];
System.out.println(inputTerminal.getName());
}