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.

Schließen Sie die Terminals an, 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 unbekannte Terminal weiter.

Wenn Ihr Nachrichtenfluss komplexere Weiterleitungsoptionen erfordert, können Sie den Knoten 'Weiterleitung_an_Zieladresse' und den Zieladressenknoten verwenden.

Der Filterknoten wird in der Workbench durch folgendes Symbol dargestellt:

Symbol für den Filterknoten

Diesen Knoten in einem Nachrichtenfluss verwenden

Die nachfolgenden Beispiele erläutern 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-Anteil, der zu einem bestimmten Knoten gehört, wird als Modul bezeichnet.

    Wenn für diesen Nachrichtenfluss nicht bereits eine ESQL-Datei vorhanden ist, klicken Sie mit der rechten Maustaste auf den Filterknoten und wählen anschließend im Kontextmenü die Option ESQL öffnen. 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 Standardname ändern. Achten Sie jedoch darauf, dass der von Ihnen angegebene Name mit dem Namen der entsprechenden Knoteneigenschaft Filterausdruck übereinstimmt.

    Fügen Sie Ihre eigene ESQL zum Anpassen dieses Knotens 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 den Wert NULL ergibt, Sie RETURN; codieren oder die RETURN-Anweisung übergehen, gibt der Knoten die Nachricht an das unbekannte 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, dessen Teil der Filterknoten ist, 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 Eigenschaften-Dialognavigator die Option "Grundeinstellung", und aktivieren bzw. inaktivieren Sie anschließend die beiden Kontrollkästchen:
    • Wenn Datenbankwarnmeldungen als Fehler behandelt werden und der Knoten die Ausgabenachricht an das Fehlerterminal weitergeben soll, aktivieren Sie das Kontrollkästchen Warnungen als Fehler behandeln. das Kontrollkästchen 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 Kontrollkästchen Ausnahme für Datenbankfehler ausgeben. Das Kontrollkästchen 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 Eigenschaften-Dialognavigator die Option "Beschreibung", 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 Verarbeitung ein Fehler auftritt.
Unknown (Unbekannt) Das Ausgabeterminal, an das die Nachricht geleitet wird, wenn der angegebene Filterausdruck den Wert unknown (unbekannt) oder Null ergibt.
False (Falsch) Das Ausgabeterminal, an das die Nachricht geleitet wird, wenn der angegebene Filterausdruck den Wert false (falsch) ergibt.
True (Wahr) Das Ausgabeterminal, an das die Nachricht geleitet wird, wenn der angegebene Filterausdruck den Wert true (wahr) 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 Standardwert 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 zum Ausführen gegen die im Knoten empfangene Nachricht enthält.
Warnungen als Fehler behandeln Ja Nein Gelöscht SQL-Datenbankwarnungen als Fehler behandeln. Wenn Sie das Kontrollkästchen 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 Kontrollkästchen aktivieren, wird der Vorgang ausgeführt.

In der nachfolgenden Tabelle werden die Beschreibungseigenschaften des Filterknotens beschrieben.

Eigenschaft M C Standardwert 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: 18.05.2006
ac04780_