Nachrichtenfluss mit einer benutzerdefinierten ESQL-Funktion entwickeln

Vorbereitungen:
Dies ist der neunte Abschnitt des Szenarios zum Ausführen einer Erweiterung einfacher Nachrichteninhalte. In diesem Abschnitt wird veranschaulicht, wie Sie einen Nachrichtenfluss mit einer benutzerdefinierten ESQL-Funktion entwickeln können. Des Weiteren erfahren Sie, wie Sie entsprechende Nachrichtenmodelle und Instanzdokumente entwickeln.
  1. Erstellen Sie in der Nachrichtendefinition 'COMPLEX' im Namensbereich 'www.complex.net' die Nachrichten 'addev5in' und 'addev5out' mit folgenden Strukturen:
    addev5in
       value1                    (xsd:decimal) lokales Element
       operator                 (xsd:string) lokales Element
       value2                    (xsd:decimal) lokales Element
       rate                        (xsd:decimal) lokales Element
    addev5out
       grossvalue               (xsd:decimal) lokales Element
       netvalue                   (xsd:decimal) lokales Element
  2. Erstellen Sie den Nachrichtenfluss 'addev5' mit folgendem Zuordnungsinhalt: MQEmpfangsknoten > Zuordnungsknoten > MQSendeknoten.
  3. Öffnen Sie die Zuordnung, und wählen Sie 'addev5' als Quelle und 'addev5out' als Ziel aus.
  4. Erstellen Sie im Projekt 'MAPPING3_COMPLEX_flows' eine ESQL-Datei namens 'addev5', und fügen Sie folgende Funktionen ein:
    CREATE FUNCTION calcGrossvalue(IN value1 DECIMAL, IN operator CHAR,
     IN value2 DECIMAL) RETURNS DECIMAL
              BEGIN   
                  DECLARE outval DECIMAL;
                  CASE operator
                  WHEN 'PLUS' THEN
                      SET outval = value1 + value2;
                  WHEN 'MINUS' THEN
                      SET outval = value1 - value2;
                  WHEN 'MULTIPLY' THEN
                      SET outval = value1 * value2;
                  WHEN 'DIVIDE' THEN
                      SET outval = value1 / value2;
                         ELSE
                      THROW USER EXCEPTION MESSAGE 2949 VALUES('Ungültiger Operator', Operator);
                      SET outval = -999999;
                  END CASE;
                RETURN outval;
              END;
    CREATE FUNCTION calcNetvalue(IN value1 DECIMAL, IN operator CHAR, IN value2 DECIMAL,
     IN rate DECIMAL) RETURNS DECIMAL
        BEGIN   
            DECLARE grossvalue DECIMAL;
            SET grossvalue=calcGrossvalue(value1, operator, value2);
            RETURN (grossvalue * rate );
        END;
  5. Erweitern Sie im Spreadsheetfenster des Nachrichtenzuordnungseditor die Nachricht, und wählen Sie 'grossvalue' aus.
  6. Geben Sie im Spreadsheetfenster folgenden Ausdruck ein:
    esql:calcGrossvalue($source/comp:addev5in/value1, 
    $source/comp:addev5in/operator, 
    $source/comp:addev5in/value2)
  7. Wählen Sie das Ziel 'netvalue', und geben Sie im Ausdrucksfenster folgenden Ausdruck ein:
    esql:calcNetvalue($source/comp:addev5in/value1, 
    $source/comp:addev5in/operator, 
    $source/comp:addev5in/value2, 
    $source/comp:addev5in/rate)
  8. Erweitern Sie die Eigenschaftenbaumstruktur, und richten Sie die folgenden Werte ein:
    Nachrichtentyp      |       'addev5out'
  9. Erstellen Sie folgende Instanznachrichten mit den entsprechenden RFH2-Headern:
    <comp:addev5in xmlns:comp="http://www.complex.net">
    <value1>125.32</value1>
    <operator>PLUS</operator>
    <value2>25.86</value2>
    <rate>0.60</rate>
    </comp:addev5in>
    <comp:addev5in xmlns:comp="http://www.complex.net">
    <value1>118.00</value1>
    <operator>MINUS</operator>
    <value2>245.01</value2>
    <rate>0.30</rate>
    </comp:addev5in>
    <comp:addev5in xmlns:comp="http://www.complex.net">
    <value1>254.02</value1>
    <operator>MULTIPLY</operator>
    <value2>3.21</value2>
    <rate>0.75</rate>
    </comp:addev5in>
    <comp:addev5in xmlns:comp="http://www.complex.net">
    <value1>1456.33</value1>
    <operator>DIVIDE</operator>
    <value2>18.58</value2>
    <rate>0.92</rate>
    </comp:addev5in>
    <comp:addev5in xmlns:comp="http://www.complex.net">
    <value1>254.02</value1>
    <operator>MOD</operator>
    <value2>3.21</value2>
    <rate>0.75</rate>
    </comp:addev5in>
Sie haben folgende Ressourcen erstellt:
Setzen Sie nun die Nachrichtengruppe und den Nachrichtenfluss ein.

Nachrichtengruppe und Nachrichtenfluss einsetzen

Dies ist der 10. Abschnitt des Szenarios zum Ausführen einer Erweiterung einfacher Nachrichteninhalte. Dieser Abschnitt veranschaulicht, wie Sie die Nachrichtengruppe und den Nachrichtenfluss einsetzen und die Instanznachrichten über den Broker ausführen können.
  1. Erstellen Sie eine BAR-Datei namens 'addev5'.
  2. Fügen Sie die Nachrichtengruppe 'MAPPING3_COMPLEX_messages' und den Nachrichtenfluss 'addev5' der BAR-Datei hinzu.
  3. Setzen Sie die BAR-Datei für den Broker ein.
  4. Stellen Sie die Instanzdokumente in die Eingabewarteschlange.
Die Ausgabenachrichten sehen wie folgt aus:
<comp:addev5out xmlns:comp="http://www.complex.net">
<grossvalue>151.18</grossvalue>
<netvalue>90.708</netvalue>
</comp:addev5out>
<comp:addev5out xmlns:comp="http://www.complex.net">
<grossvalue>-127.01</grossvalue>
<netvalue>-38.103</netvalue>
</comp:addev5out>
<comp:addev5out xmlns:comp="http://www.complex.net">
<grossvalue>815.4042</grossvalue>
<netvalue>611.55315</netvalue>
</comp:addev5out>
<comp:addev5out xmlns:comp="http://www.complex.net">
<grossvalue>78.38159311087190527448869752421959</grossvalue>
<netvalue>72.11106566200215285252960172228202</netvalue>
</comp:addev5out>
Falls keine Nachricht ausgegeben wird, suchen Sie im Ereignisprotokoll nach einem Eintrag, der ähnlich dem folgenden aussieht:
BIP2949 ( BRK.default ) A user generated ESQL exception has been thrown. (Es wurde eine benutzergenerierte ESQL-Ausnahme ausgelöst.) Weitere Informationen, die mit dieser Ausnahmebedingung bereitgestellt werden: ''Ungültiger Operator'' ''MOD'' 'addev5.Mapping.ComIbmCompute' '%5' '%6' '%7' '%8' '%9' '%10' '%11' 
Diese Ausnahmebedingung wurde von der Anweisung THROW EXCEPTION generiert. Dies ist das normale Verhalten einer THROW-Anweisung; da dies eine benutzergenerierte Ausnahme ist, wird die Benutzeraktion vom Nachrichtenfluss und vom ausgelösten Ausnahmetyp bestimmt.
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ar25251_9_