Mit dem Filter-Knoten leiten Sie Nachrichten entsprechend ihrem Inhalt weiter.
Dieses Thema ist in folgende Abschnitte eingeteilt:
Erstellen Sie einen Filterausdruck in ESQL, um die Route zu definieren, welche die Nachricht nehmen soll. Der Filterausdruck kann Elemente der Eingabenachricht oder Nachrichteneigenschaften enthalten, und Sie können Daten aus einer externen Datenbank verwenden, um den Ausdruck zu vervollständigen. Das Ausgabeterminal, an das die Nachricht geleitet wird, hängt davon ab, ob der Ausdruck den Wert 'True' (wahr), 'False' (falsch) oder 'Unknown' (unbekannt) ergibt.
Verbinden Sie die Terminals, die alle Situationen unterstützen, die aus der Filterung entstehen könnten. Wenn der Knoten die Nachricht an ein nicht verbundenes Terminal weitergibt, wird sie verworfen, auch wenn sie transaktionsorientiert ist.
Der Filter-Knoten unterstützt ESQL-Anweisungen auf dieselbe Art wie der Compute-Knoten und der Datenbank-Knoten. Die letzte ausgeführte Anweisung muss eine RETURN <Ausdruck>-Anweisung sein, deren Ausdruck einen Booleschen Wert ergibt. Dieser Boolesche Wert bestimmt das Terminal, an das die Nachricht weitergeleitet wird. In vielen Fällen ist der Weiterleitungsalgorithmus ein einfacher Vergleich der Nachrichtenfeldwerte. Der Vergleich wird vom Ausdruck beschrieben, und die RETURN-Anweisung ist die einzige Anweisung. Wenn Sie RETURN ohne einen Ausdruck (RETURN;) oder mit einem Nullausdruck codieren, gibt der Knoten die Nachricht an das Terminal UNKNOWN weiter.
Wenn Ihr Nachrichtenfluss komplexere Weiterleitungsoptionen erfordert, verwenden Sie den RouteToLabel-Knoten und den Label-Knoten.
Der Filter-Knoten befindet sich im Ablagefach Routing der Palette und wird in der WebSphere Message Broker Toolkit durch folgendes Symbol dargestellt:
Die nachfolgenden Mustercodes verdeutlichen die Verwendung dieses Knotens:
Informationen zu Beispielen können nur bei Verwendung des in das WebSphere Message Broker Toolkit integrierten bzw. online verfügbaren Information Center angezeigt werden. Muster können nur ausgeführt werden, wenn das im WebSphere Message Broker Toolkit integrierte Information Center verwendet wird.
Angenommen, Sie haben einen Online-Test mit zehn Multiple-Choice-Fragen erstellt. In jeder ankommenden Nachricht stehen Kandidatennamen und Adresse, gefolgt von mehreren Antworten. Jede Antwort wird geprüft und, wenn sie richtig ist, das Ergebnisfeld um eins erhöht. Nachdem alle Antworten geprüft wurden, wird nachgesehen, ob der Wert im Ergebnisfeld größer als fünf ist. Ist dies der Fall, gibt der Filter-Knoten die Nachricht an den Nachrichtenfluss für erfolgreiche Kandidateneingaben weiter. Liegt der Wert unter fünf, wird die Nachricht an den Zurückweisungsprozess übergeben, und es wird eine Zurückweisungsnachricht erstellt.
Nachdem Sie eine Instanz des Filter-Knotens in einen Nachrichtenfluss eingereiht haben, können Sie den Knoten konfigurieren; siehe Nachrichtenflussknoten konfigurieren. Die Eigenschaften des Knotens werden in der Ansicht 'Eigenschaften' angezeigt. Alle obligatorischen Eigenschaften, für die Sie einen Wert eingeben müssen (d. h. Eigenschaften ohne definierten Standardwert), sind mit einem Stern gekennzeichnet.
In der folgenden Tabelle werden die Filter-Knotenterminals beschrieben .
Terminal | Beschreibung |
---|---|
Eingabeterminal (In) | Das Eingabeterminal, das eine Nachricht zur Verarbeitung durch einen Knoten annimmt. |
Fehlerterminal (Failure) | Das Ausgabeterminal, an das die Nachricht geleitet wird, wenn während der Verarbeitung ein Fehler auftritt. |
Unbekannt (Unknown) | Das Ausgabeterminal, an das die Nachricht geleitet wird, wenn der angegebene Filterausdruck unknown oder einen Nullwert ergibt. |
False | Das Ausgabeterminal, an das die Nachricht geleitet wird, wenn der angegebene Filterausdruck False ergibt. |
True | Das Ausgabeterminal, an das die Nachricht geleitet wird, wenn der angegebene Filterausdruck True ergibt. |
In den folgenden Tabellen werden die Knoteneigenschaften beschrieben. Die Spalte M zeigt an, ob die Eigenschaft obligatorisch ist (markiert mit einem Sternchen, wenn ein Wert eingegeben werden muss, weil kein Standardwert definiert ist). Die Spalte C zeigt an, ob die Eigenschaft konfigurierbar ist (Wert kann geändert werden, wenn der Nachrichtenfluss zur BAR-Datei hinzugefügt wird, um ihn einzusetzen).
In der folgenden Tabelle werden die Beschreibungseigenschaften des Filter-Knotens beschrieben.
Eigenschaft | M | C | Standardwert | Beschreibung |
---|---|---|---|---|
Knotenname | Nein | Nein | Knotentyp | Der Name des Knotens. |
Kurzbeschreibung | Nein | Nein | Eine Kurzbeschreibung des Knotens. | |
Ausführliche Beschreibung | Nein | Nein | Text, der den Zweck des Knotens im Nachrichtenfluss beschreibt. |
In der folgenden Tabelle werden die grundlegenden Eigenschaften des Filter-Knotens beschrieben.
Eigenschaft | M | C | Standardwert | Beschreibung | Eigenschaft des Befehls mqsiapplybaroverride |
---|---|---|---|---|---|
Datenquelle | Nein | Ja | Der Name der ODBC-Datenquelle für die Datenbank mit den Tabellen, auf die Sie
in der mit diesem Knoten verknüpften ESQL-Datei verweisen (wie unter der Eigenschaft
Filterausdruck festgelegt). Dieser Name gibt die entsprechende Datenbank auf dem System an, auf dem dieser Nachrichtenfluss ausgeführt werden soll. Der Broker stellt mit der Benutzer-ID und den Kennwortdaten, die Sie in den Befehlen mqsicreatebroker, mqsichangebroker oder mqsisetdbparms angegeben haben, eine Verbindung zu dieser Datenbank her.
Wenn der ESQL-Code, der diesem Knoten zugeordnet ist, eine PASSTHRU-Anweisung oder SELECT-Funktion und einen Datenbankverweis enthält, müssen Sie für die Eigenschaft Datenquelle einen Wert angeben. |
dataSource | |
Transaktion | Ja | Nein | Automatisch | Der Transaktionsmodus für den Knoten. Folgende Werte stehen zur Verfügung:
|
|
Filterausdruck | Nein | Nein | Filter | Der Name des Moduls innerhalb der ESQL-Ressource (Datei), das die Anweisungen enthält, die für die im Knoten empfangene Nachricht ausgeführt werden sollen. Die ESQL-Datei, deren Name standardmäßig <Nachrichtenflussname>.esql lautet, enthält ESQL-Code für jeden Knoten im Nachrichtenfluss, der dies erfordert. Jeder Code-Abschnitt, der zu einem bestimmten Knoten gehört, wird als Modul bezeichnet. Wenn der Modulname
ein oder mehrere Leerzeichen enthalten soll, geben Sie ihn unter der Eigenschaft
Filterausdruck in doppelten Anführungszeichen an. Kodieren Sie die ESQL-Anweisungen zum Anpassen des Verhaltens des Filter-Knotens in einer ESQL-Datei, die mit dem Nachrichtenfluss verknüpft ist, in den Sie diese Instanz des Filter-Knotens eingeschlossen haben. Wenn für diesen Nachrichtenfluss nicht bereits eine ESQL-Datei vorhanden ist, klicken Sie doppelt auf den Filter-Knoten, oder klicken Sie mit der rechten Maustaste auf den Knoten und klicken sie dann im Kontextmenü auf ESQL öffnen, um in der ESQL-Editoransicht eine neue ESQL-Datei zu erstellen und zu öffnen. Wenn die Datei bereits vorhanden ist, klicken Sie auf Durchsuchen neben der Eigenschaft Filterausdruck. Daraufhin wird das Dialogfenster 'Modulauswahl' angezeigt, in dem die verfügbaren Filter-Knotenmodule aufgelistet werden, die in den ESQL-Dateien, auf die von diesem Nachrichtenfluss zugegriffen werden kann, definiert sind (ESQL-Dateien können in anderen, abhängigen Projekten definiert werden. Wählen Sie das geeignete Modul aus, und klicken Sie auf OK; wenn keine geeigneten Module zur Verfügung stehen, ist diese Liste leer. Falls das von Ihnen angegebene Modul nicht existiert, wird es automatisch erstellt und im Editor angezeigt. Wenn die Datei und das Modul bereits vorhanden sind, wird das richtige Modul im Editor hervorgehoben. Wenn für diesen Knoten das Gerüst eines Moduls in einer neuen oder bereits bestehenden ESQL-Datei erstellt wird, besteht es aus folgender ESQL. In diesem Beispiel wird der Standardname des Moduls verwendet:
Wenn Sie ein eigenes ESQL-Modul erstellen, müssen Sie genau dieses Gerüst erstellen. Sie können den Standardnamen ändern. Achten Sie jedoch darauf, dass der von Ihnen angegebene Name mit dem Namen der entsprechenden Knoteneigenschaft Filterausdruck übereinstimmt. Fügen Sie zum Anpassen dieses Knotens eigenen ESQL-Code hinter der BEGIN-Anweisung und vor der RETURN-Anweisung hinzu. Wenn der Ausdruck in der RETURN-Anweisung nicht den Wert TRUE (wahr) oder FALSE (falsch) ergibt, wird sein Wert ermittelt, um das Terminal zu bestimmen, an das die Nachricht weitergegeben wird. Wenn der Ausdruck einen Nullwert ergibt, Sie RETURN; codieren oder die RETURN-Anweisung übergehen, gibt der Knoten die Nachricht an das Terminal UNKNOWN weiter. |
|
Sie können in diesem Modul alle ESQL-Anweisungen einschließlich SET, WHILE, DECLARE und IF verwenden. Allerdings gibt der Filter-Knoten (im Gegensatz zum Compute-Knoten) die Nachricht, die er an seinem Eingabeterminal empfängt, unverändert an sein Ausgabeterminal weiter. Deshalb befindet sich im Filter-Knoten, ebenso wie im Datenbank-Knoten, nur eine Nachricht, auf die Sie sich beziehen können. Die in einem Filter-Knoten verwendeten ESQL-Korrelationsnamen unterscheiden sich von denen, die für einen Compute-Knoten verwendet werden. Weitere Informationen zu Korrelationsnamen finden Sie in den zugehörigen Links. Da keine Komponente der Nachricht modifiziert werden kann, können Sie über die Zuordnungsanweisung (die SET-Anweisung, nicht die SET-Klausel der INSERT-Anweisung) nur temporären Variablen Werte zuordnen. Der Umfang dieser Aktionen, die Sie mit einer Zuordnungsanweisung vornehmen können, ist daher begrenzt. |
|||||
Warnungen als Fehler behandeln | Ja | Nein | Nicht ausgewählt | Wenn Datenbankwarnungen als Fehler behandelt werden sollen und die Ausgabenachricht vom Knoten
an das Fehlerterminal (Failure) weitergegeben werden soll, aktivieren Sie
Warnungen als Fehler behandeln. Das
Kontrollkästchen ist zu Beginn inaktiviert. Wenn Sie es aktivieren, behandelt der Knoten alle positiven Rückkehrcodes von der Datenbank als Fehler und generiert Ausnahmebedingungen auf dieselbe Art wie bei negativen oder schwerwiegenden Fehlern. Wenn Sie das Kontrollkästchen nicht aktivieren, behandelt der Knoten Warnungen als normale Rückkehrcodes und löst keine Ausnahmebedingungen aus. Die höchstwertige Warnung, die ausgegeben werden kann, lautet nicht gefunden. Sie kann in den meisten Fällen als normaler Rückkehrcode sicher bearbeitet werden. |
|
Ausnahmebedingung für Datenbankfehler ausgeben | Ja | Nein | Ausgewählt | Wenn der Broker bei Erkennung eines Datenbankfehlers eine Ausnahmebedingung generieren soll,
aktivieren Sie Ausnahme für Datenbankfehler
ausgeben. Das Kontrollkästchen ist zu Beginn aktiviert.
Wenn Sie es inaktivieren, müssen Sie ESQL-Code einfügen, um nach allen Datenbankfehlern zu suchen, die eventuell nach jedem Datenbankaufruf (mit SQLCODE und SQLSTATE) zurückgegeben werden. Wenn ein Fehler auftrat, müssen Sie ihn im Nachrichtenfluss bearbeiten, um die Integrität des Brokers und der Datenbank zu gewährleisten. Wenn Sie den Fehler nicht über einen eigenen Prozess bearbeiten, wird er ignoriert, da Sie sich gegen den Aufruf der Standardfehlerbehandlung durch den Broker entschieden haben. Beispiel: Sie können die ESQL-Anweisung THROW einschließen, um in diesem Knoten eine Ausnahmebedingung auszugeben, oder Sie generieren mit dem Throw-Knoten zu einem späteren Zeitpunkt Ihre eigene Ausnahmebedingung. |
|
Verbinden, bevor Fluss startet |
Nein |
Ja |
Nicht ausgewählt |
Standardmäßig stellt der Broker eine Verbindung mit der Datenquelle her, wenn dies in einem Nachrichtenfluss erforderlich ist. Wenn Sie das Kontrollkästchen aktivieren, werden Datenquellenverbindungen hergestellt, bevor der Nachrichtenfluss eine Nachricht empfängt, und nicht erst während der Nachrichtenflussverarbeitung. |
Eigenschaft | O | K | Standardwert | Beschreibung |
---|---|---|---|---|
Ereignisse | Nein | Nein | Ohne | Auf dieser Registerkarte werden Ereignisse angezeigt, die Sie für den Knoten
definiert haben. Standardmäßig sind für keinen Knoten in einem Nachrichtenfluss
Überwachungsereignisse definiert. Über Hinzufügen,
Bearbeiten und Löschen können Sie
Überwachungsereignisse für den Knoten erstellen, ändern oder löschen (Details siehe
Überwachungsereignisquellen mithilfe von Überwachungseigenschaften konfigurieren). Sie können hier angezeigte Ereignisse aktivieren oder inaktivieren, indem Sie das Kontrollkästchen Aktiviert aktivieren oder inaktivieren. |