Der Mustercode veranschaulicht, wie ein in Java geschriebener benutzerdefinierter Nachrichtenverarbeitungsknoten als Filterknoten verwendet werden kann. Der SearchFilter-Knoten sucht in einer XML-Nachricht, die zwanzig Kundennamen enthält, nach einem bestimmten Kundennamen.
Im folgenden Diagramm ist der Nachrichtenfluss 'SearchFilter' dargestellt:
Der SearchFilter-Knoten durchsucht den Inhalt einer XML-Eingabenachricht nach einer Zeichenfolge, die im Element 'SearchName' angegeben ist. Beispiel:
<SearchName>
Surname of customer
</SearchName>
Wenn der gesuchte Name in der XML-Eingabenachricht angezeigt wird, wird der vollständige Kundenname am Ende der Nachricht hinzugefügt. Wenn beispielsweise "Peter Schmitt" einer der zwanzig Kundennamen in der Eingabenachricht ist und die Zeichenfolge "Schmitt" im Element 'SearchName' angegeben ist, fügt der SearchFilter-Knoten den Eintrag "Peter Schmitt" am Ende der Nachricht hinzu.
Wenn der vollständige Kundenname in diesem Mustercode gefunden wird, wird er der Nachricht fünf Mal hinzugefügt. Dieser Mustercode veranschaulicht die zusätzlichen Funktionen des SearchFilter-Knotens. Der folgende Beispielcode, der aus der Java-Quellendatei com.ibm.broker.ude.samples.SearchFilterNode.java stammt, veranschaulicht, dass der Kundenname fünf Mal der Nachricht hinzugefügt wird.
// if the search name was found then add <Result> tag to output message if (customerElement.getFirstChild().getValue().equals(searchName)) { // indicate that the search name has been found result = true; // construct a concatenation of 5 full names using String Buffer // as this has improved performance over ordinary String concatenation StringBuffer fiveNames = new StringBuffer(); fiveNames.append(customerElement.getLastChild().getValue()); fiveNames.append(" "); fiveNames.append(searchName); fiveNames.append(" "); searchName = fiveNames.toString(); for (counter = 0; counter < 4; counter++) { fiveNames.append(searchName); } // Add a new <Result> tag to output message as the last child of <Message1> newtag = topOfBody.createElementAsLastChild(MbElement.TYPE_NAME, "Result", fiveNames.toString()); terminal = getOutputTerminal("True"); }
Die Java-Quellendatei 'com.ibm.broker.ude.samples.SearchFilterNode.java' befindet sich im Java-Projekt 'UDESampleJavaCode'.
Wenn der gesuchte Name in der XML-Eingabenachricht nicht gefunden wird, wird die Zeichenfolge "Not found" (Nicht gefunden) in der Baumstruktur 'LocalEnvironment' des SearchFilter-Knotens gespeichert. Der Knoten 'NotFound' fügt der Ausgabenachricht die Zeichenfolge "Not found" (Nicht gefunden) hinzu.
Im Mustercode 'SearchFilter' werden folgende Warteschlangen verwendet:
Zurück zu den Informationen zum Mustercode 'User-defined Extension'