WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Benutzerdefinierte Knoten hinzufügen und verbinden

Über die Message Broker-Java™-API kann eine Musterinstanz geändert werden, um benutzerdefinierte Knoten hinzuzufügen und mit anderen Knoten zu verbinden.

Der Code, der zum Hinzufügen und Verbinden benutzerdefinierter Knoten erforderlich ist, unterscheidet sich von dem Code, der für integrierte Knoten und untergeordnete Nachrichtenflussknoten erforderlich ist.

Beim Erstellen von Java-Code für benutzerdefinierte Knoten müssen folgende Aspekte berücksichtigt werden:
  • Benutzerdefinierte Knoten werden von Instanzen der Klasse GenericNode unterstützt. Um Nachrichtenflüssen benutzerdefinierte Knoten hinzuzufügen, können Sie Instanzen der Klasse GenericNode erstellen und sie der Nachrichtenflussinstanz hinzufügen.
  • Wenn Sie Instanzen eines benutzerdefinierten Knotens abrufen möchten, rufen Sie die Methode getNodeByName() auf und setzen Sie das zurückgegebene Objekt in ein Objekt der Klasse GenericNode um.
  • Die auf den benutzerdefinierten Knoten definierten Terminals sind nicht automatisch in der Message Broker-Java-API verfügbar. Wenn Sie eine Instanz der Klasse GenericNode erstellen, sind darin weder Eingabe- noch Ausgabeterminals aufgeführt. Die Methoden getInputTerminals() und getOutputTerminals() geben leere Listen zurück.
  • Führen Sie zum Abrufen eines Eingabeterminals für die Klasse GenericNode die Methode getInputTerminal() aus und übergeben Sie den Terminalnamen, der auf dem generischen Knoten vorhanden ist. Diese Methode gibt das Eingabeterminal zurück und stellt es in dem Nachrichtenflussobjekt zur Verfügung, das den generischen Knoten enthält. Nachdem Sie die Methode getInputTerminal() mit einem bekannten Terminalnamen ausgeführt haben, wird beim Aufruf von getInputTerminals() dieser Eingabeterminal zurückgegeben.
  • Führen Sie zum Abrufen eines Ausgabeterminals für die Klasse GenericNode die Methode getOutputTerminal() aus und übergeben Sie den Terminalnamen, der auf dem generischen Knoten vorhanden ist. Diese Methode gibt das Ausgabeterminal zurück und stellt es in dem Nachrichtenflussobjekt zur Verfügung, das den generischen Knoten enthält. Nachdem Sie die Methode getOutputTerminal() mit einem bekannten Terminalnamen ausgeführt haben, wird beim Aufruf von getOutputTerminals() dieser Ausgabeterminal zurückgegeben.
Das folgende Beispiel zeigt, wie ein benutzerdefinierter Knoten zu einem Nachrichtenfluss hinzugefügt und mit einem integrierten Knoten verbunden werden kann:
  1. Es wird ein MQInput-Knoten erstellt und zum Nachrichtenfluss hinzufügt.
  2. Mithilfe der Klasse GenericNode wird ein benutzerdefinierter Knoten erstellt und zum Nachrichtenflussobjekt hinzugefügt.
  3. Das statische Ausgabeterminal von MQInput wird der Variablen outputTerminal zugeordnet.
  4. Das Eingabeterminal des benutzerdefinierten Knotens wird der Variablen inputTerminal zugeordnet, indem die Methode getInputTerminal() mit dem bekannten Terminalnamen In ausgeführt wird.
  5. Die Knoten werden mithilfe der Methode connect() miteinander verbunden.
  6. Der letzte Abschnitt des Codes zeigt, dass der Eingabeknoten jetzt im Nachrichtenfluss zur Verfügung steht und in der Methode getInputTerminals() der benutzerdefinierten Knoteninstanz verwendet werden kann.
MessageFlow mf1 = patternInstanceManager.getMessageFlow("MyFlowProject", "main.msgflow");

MQInputNode mqinNode = new MQInputNode();
mqinNode.setNodeName("My Input Node");
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());
} 
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:22:35


TaskthemaTaskthema | Version 8.0.0.5 | bc31145_