Dieses Kapitel enthält folgende Abschnitte:
Mit dem Filterknoten leiten Sie Nachrichten entsprechend ihrem Inhalt weiter. Sie definieren die Route, indem Sie einen Filterausdruck in ESQL codieren. Der Filterausdruck kann Elemente der Eingabenachricht oder Nachrichteneigenschaften enthalten. Sie können zudem 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.
Dieser Knoten unterstützt ESQL-Anweisungen auf dieselbe Art wie der Rechenknoten und der Datenbankknoten. 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 geleitet 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 NULL-Ausdruck codieren, gibt der Knoten die Nachricht an das UNBEKANNT-Terminal weiter.
Wenn Ihr Nachrichtenfluss komplexere Weiterleitungsoptionen erfordert, können Sie den Knoten 'Weiterleitung_an_Zieladresse' (RouteToLabel) und den Zieladressenknoten (Label) verwenden.
Der Filterknoten wird in der Workbench durch folgendes Symbol dargestellt:
Die nachfolgenden Beispielprogramme verdeutlichen die Verwendung dieses Knotens:
Stellen Sie sich vor, Sie haben einen Online-Test mit 10 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, wird das Feld SCORE (Ergebnis) um den Wert 1 erhöht. Nachdem alle Antworten überprüft wurden, wird das Feld SCORE getestet, um zu sehen, ob sein Wert größer ist als 5. Ist dies der Fall, gibt der Filterknoten die Nachricht an den Nachrichtenfluss für erfolgreiche Kandidateneingaben weiter. Liegt der Wert unter 5, wird die Nachricht in den Rückweisungsprozess gefiltert, und eine Rückweisungsnachricht wird erstellt.
Wenn Sie eine Instanz des Filterknotens in einen Nachrichtenfluss eingereiht haben, können Sie ihn konfigurieren. Klicken Sie mit der rechten Maustaste in der Editoransicht auf den Knoten, und wählen Sie die Option Eigenschaften aus. Daraufhin werden die grundlegenden Eigenschaften des Knotens angezeigt.
Alle verbindlichen Eigenschaften, für die Sie einen Wert eingeben müssen (d. h. Eigenschaften ohne definierten Standardwert), sind dort mit einem Sternchen gekennzeichnet.
Konfigurieren Sie den Filterknoten wie folgt:
Auf z/OS-Systemen verwendet der Broker die vom Broker gestartete Task-ID oder die Benutzer-ID und das Kennwort, die im angepassten Datensatz <hlq>.SBIPPROC im mqsisetdbparms-Befehl 'JCL, BIPSDBP' angegeben wurden.
Codieren Sie die ESQL-Anweisungen zum Anpassen des Verhaltens des Filterknotens in einer ESQL-Datei, die mit dem Nachrichtenfluss verknüpft ist, in den Sie diese Instanz des Filterknotens eingeschlossen haben. Die ESQL-Datei, deren Name standardmäßig <Nachrichtenflussname>.esql lautet, enthält ESQL für jeden Knoten im Nachrichtenfluss, der sie erfordert. Jeder Code-Abschnitt, der zu einem bestimmten Knoten gehört, wird als Modul bezeichnet.
Wenn für diesen Nachrichtenfluss noch keine ESQL-Datei vorhanden ist, klicken Sie mit der rechten Maustaste auf den Filterknoten, und wählen Sie anschließend im Kontextmenü die Option 'ESQL öffnen' aus. Daraufhin wird in der ESQL-Editoransicht eine neue ESQL-Datei erstellt und geöffnet.
Ist die Datei bereits vorhanden, klicken Sie neben der Eigenschaft 'Filterausdruck' auf die Schaltfläche 'Durchsuchen'. Daraufhin wird das Dialogfeld zur Modulauswahl geöffnet, in dem die in den ESQL-Dateien festgelegten, verfügbaren Filterknotenmodule aufgeführt werden, auf die dieser Nachrichtenfluss zugreifen kann (ESQL-Dateien können in anderen, abhängigen Projekten definiert werden). Wählen Sie das entsprechende 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 für Sie erstellt und im Editor angezeigt. Sind die Datei und das Modul bereits vorhanden, positioniert der Editor die Datei und markiert das richtige Modul.
Bei Bedarf können Sie die entsprechende ESQL-Datei im Ressourcennavigator öffnen und diesen Knoten in der Entwurfsansicht auswählen.
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:
CREATE FILTER MODULE <Nachrichtenflussname>_Filter CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN RETURN TRUE; END; END MODULE;
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 zwischen den Anweisungen BEGIN und RETURN Ihren eigenen ESQL-Code zum Anpassen dieses Knotens ein. 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 den Wert NULL ergibt, Sie RETURN; codieren oder die RETURN-Anweisung übergehen, gibt der Knoten die Nachricht an das UNBEKANNT-Terminal weiter.
Sie können eine ESQL-Datei auch über
erstellen.Sie können in diesem Modul alle ESQL-Anweisungen einschließlich SET, WHILE, DECLARE und IF verwenden. Allerdings gibt der Filterknoten (im Gegensatz zum Rechenknoten) die Nachricht, die er an seinem Eingabeterminal empfängt, unverändert an sein Ausgabeterminal weiter. Das bedeutet, dass Sie wie beim Datenbankknoten nur auf eine Nachricht in einem Filterknoten verweisen können.
Da Sie keine Komponente der Nachricht modifizieren können, kann 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.
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 Kästchen nicht aktivieren, behandelt der Knoten Warnungen als normale Rückkehrcodes und gibt keine Ausnahmebedingung 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.
Wenn Sie es inaktivieren, müssen Sie ESQL einschließen, um nach allen Datenbankfehlern zu suchen, die eventuell nach jedem Datenbankaufruf (mit SQLCODE und SQLSTATE) zurückgegeben werden. Trat ein Fehler auf, müssen Sie ihn im Nachrichtenfluss bearbeiten, um die Integrität des Brokers und der Datenbank zu gewährleisten: der Fehler wird ignoriert, wenn Sie ihn nicht über ihren eigenen Prozess bearbeiten, da Sie kein Aufrufen der Standardfehlerbehandlung durch den Broker ausgewählt haben. Beispiel: Sie können die ESQL-Anweisung THROW einschließen, um in diesem Knoten eine Ausnahmebedingung auszugeben, oder Sie generieren mit dem Ausnahmeknoten zu einem späteren Zeitpunkt Ihre eigene Ausnahmebedingung.
Klicken Sie auf Abbrechen, um das Dialogfeld zu schließen und alle Änderungen zu verwerfen, die Sie an den Eigenschaften vorgenommen haben.
In der nachfolgenden Tabelle werden die Terminals des Filterknotens beschrieben.
Terminal | Beschreibung |
---|---|
Eingangsterminal | Das Eingangsterminal, das eine Nachricht zur Verarbeitung durch einen Knoten annimmt |
Fehlerterminal | Das Ausgabeterminal, an das die Nachricht geleitet wird, wenn während der Berechnung ein Fehler auftritt. |
Unbekannt | Das Ausgabeterminal, an das die Nachricht geleitet wird, wenn der angegebene Filterausdruck Unbekannt oder 'Null' 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 der nachfolgenden Tabelle werden die Knoteneigenschaften beschrieben. Die Spalte M zeigt an, ob die Eigenschaft obligatorisch ist (markiert mit einem Sternchen im Eigenschaftendialog, ob Sie einen Wert eingeben müssen, wenn kein Standardwert definiert ist). Die Spalte C zeigt an, ob die Eigenschaft konfigurierbar ist (Sie können den Wert ändern, wenn Sie der BAR-Datei den Nachrichtenfluss hinzufügen, um ihn einzusetzen).
In der nachfolgenden Tabelle werden die grundlegenden Eigenschaften des Filterknotens beschrieben.
Eigenschaft | M | C | Standard | Beschreibung |
---|---|---|---|---|
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). | |
Transaktion | Ja | Nein | Automatisch | Der Transaktionsmodus für den Knoten. Dieser kann Automatisch oder Festschreiben lauten. |
Filterausdruck | Ja | Nein | Filter | Der Name des Moduls in der ESQL-Ressource (Ressourcendatei), die die Anweisungen enthält, die für die im Knoten empfangene Nachricht ausgeführt werden sollen. |
Warnungen als Fehler behandeln | Ja | Nein | Nicht ausgewählt | SQL-Datenbankwarnungen als Fehler behandeln. Wenn Sie das Markierungsfeld aktivieren, wird der Vorgang ausgeführt. |
Ausnahmebedingung für Datenbankfehler ausgeben | Ja | Nein | Ausgewählt | Datenbankfehler führen dazu, dass der Broker eine Ausnahmebedingung auslöst. Wenn Sie das Markierungsfeld aktivieren, wird der Vorgang ausgeführt. |
In der nachfolgenden Tabelle werden die Beschreibungseigenschaften des Filterknotens beschrieben.
Eigenschaft | M | C | Standard | Beschreibung |
---|---|---|---|---|
Kurzbeschreibung | Nein | Nein | Kurze Beschreibung des Knotens | |
Ausführliche Beschreibung | Nein | Nein | Text, der den Zweck des Knotens im Nachrichtenfluss beschreibt |