Filterknoten

Dieses Kapitel enthält folgende Abschnitte:

Zweck

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:

Symbol für Filterknoten

Diesen Knoten in einem Nachrichtenfluss verwenden

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.

Filterknoten konfigurieren

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:

  1. Geben Sie unter Datenquelle den Namen der entsprechenden Datenbank an, unter dem sie in dem System gespeichert ist, in 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.

    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.

  2. Geben Sie unter Filterausdruck das Modul in der ESQL-Datei an, das die ESQL-Anweisungen enthält, die der Knoten ausführt. Wenn der Modulname ein oder mehrere Leerzeichen enthalten soll, geben Sie ihn unter der Eigenschaft Filterausdruck in Anführungszeichen an.

    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 Datei > Neu > ESQL-Nachrichtenflussdatei 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.

  3. Wählen Sie im Dropdown-Menü die Einstellung Transaktion. Folgende Werte stehen zur Verfügung:
    • Automatisch (Standardwert). Der Nachrichtenfluss, zu dem der Filterknoten gehört, wird festgeschrieben, wenn er erfolgreich ist. Das heißt dass die Aktionen, die Sie im ESQL-Modul definieren, ausgeführt werden und die Nachricht den Nachrichtenfluss weiter durchläuft. Wenn der Nachrichtenfluss fehl schlägt, wird er zurückgesetzt. Wenn Sie also die Option Automatisch auswählen, hängt die Fähigkeit, die Aktionen des Filterknotens in der Datenbank festzuschreiben bzw. zurückzusetzen, vom Erfolg oder Scheitern des gesamten Nachrichtenflusses ab.
    • Festschreiben. Wenn Sie alle nicht festgeschriebenen Aktionen festschreiben möchten, die in diesem Nachrichtenfluss in der mit diesem Knoten verbundenen Datenbank ausgeführt werden, und zwar unabhängig von Erfolg oder Scheitern des gesamten Nachrichtenflusses, wählen Sie die Option Festschreiben. Die Datenbankänderungen werden festgeschrieben, selbst wenn der Nachrichtenfluss fehlschlägt.
  4. Wählen Sie im Navigator des Eigenschaftendialogs die Option 'Grundeinstellung', und aktivieren bzw. inaktivieren Sie anschließend die beiden Markierungsfeld:
    • Wenn Datenbankwarnmeldungen als Fehler behandelt werden und der Knoten die Ausgabenachricht an das Fehlerterminal weitergeben soll, aktivieren Sie das Markierungsfeld Warnungen als Fehler behandeln. Das Markierungsfeld ist ursprünglich 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 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 der Broker bei Feststellung eines Datenbankfehlers eine Ausnahmebedingung generieren soll, aktivieren Sie das Markierungsfeld Ausnahme für Datenbankfehler ausgeben. Das Markierungsfeld ist ursprünglich aktiviert.

      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.

  5. Wählen Sie im Navigator des Eigenschaftendialogs die Option 'Beschreibung' aus, um ein kurze und/oder ausführliche Beschreibung einzugeben.
  6. Klicken Sie auf Übernehmen, um die Änderungen am Filterknoten vorzunehmen, ohne das Dialogfeld mit den Eigenschaften zu schließen. Klicken Sie auf OK, um die Änderungen zu übernehmen und das Dialogfeld mit den Eigenschaften zu schließen.

    Klicken Sie auf Abbrechen, um das Dialogfeld zu schließen und alle Änderungen zu verwerfen, die Sie an den Eigenschaften vorgenommen haben.

Terminals und Eigenschaften

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
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac04780_