Sviluppo di un flusso di messaggi mediante una funzione ESQL definita dall'utente

Prima di iniziare
Questa è la nona fase dello scenario per l'esecuzione dell'ampliamento di messaggi semplici. In questo argomento viene mostrato come sviluppare un flusso di messaggi mediante una funzione ESQL definita dall'utente. Implica inoltre lo sviluppo di documenti di istanza e di modelli di messaggi corrispondenti.
  1. Nella definizione dei messaggi COMPLEX, nello spazio dei nomi www.complex.net, creare messaggi denominati addev5in e addev5out, che hanno le seguenti strutture:
    addev5in
       value1                    (xsd:decimal) local element
       operator                 (xsd:string) local element
       value2                    (xsd:decimal) local element
       rate                        (xsd:decimal) local element
    addev5out
       grossvalue               (xsd:decimal) local element
       netvalue                   (xsd:decimal) local element
  2. Creare un flusso di messaggi denominato addev5, che contiene la seguente mappatura: MQInput > Mapping > MQOutput.
  3. Aprire la mappa e selezionare addev5in come origine e addev5out come destinazione.
  4. Nel progetto MAPPING3_COMPLEX_flows, creare un file ESQL denominato addev5 ed inserirvi queste funzioni:
    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('Invalid 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. Nel riquadro Foglio elettronico dell'editor di mappatura dei messaggi espandere il messaggio e selezionare grossvalue.
  6. Nel riquadro relativo all'espressione, immettere:
    esql:calcGrossvalue($source/comp:addev5in/value1, 
    $source/comp:addev5in/operator, 
    $source/comp:addev5in/value2)
  7. Selezionare il netvalue di destinazione e nel riquadro relativo immettere la seguente espressione:
    esql:calcNetvalue($source/comp:addev5in/value1, 
    $source/comp:addev5in/operator, 
    $source/comp:addev5in/value2, 
    $source/comp:addev5in/rate)
  8. Espandere la struttura ad albero delle proprietà ed impostare i seguenti valori:
    MessageType      |       'addev5out'
  9. Creare i seguenti messaggi di istanza, con le intestazioni RFH2 appropriate:
    <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>
Sono state create le seguenti risorse:
A questo punto distribuire la serie ed i flusso di messaggi.

Distribuzione della serie e del flusso di messaggi

Questa è la decima fase dello scenario per l'esecuzione dell'ampliamento di messaggi semplici. In questo argomento viene mostrato come distribuire la serie ed il flusso di messaggi ed eseguire i messaggi di istanza mediante il broker.
  1. Creare un file bar denominato addev5.
  2. Aggiungere la serie di messaggi MAPPING3_COMPLEX_messages ed il flusso di messaggi addev5 al file bar.
  3. Distribuire il file bar al broker.
  4. Inserire i documenti di istanza nella coda di input.
I messaggi di output risultano simili al seguente:
<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>
Se non è presente alcun output di messaggio che ricerca una voce nella registrazione eventi come il seguente:
BIP2949 ( BRK.default ) A user generated ESQL exception has been thrown. The additional 
le informazioni fornite con questa eccezione sono: ''Invalid Operator'' ''MOD'' 
'addev5.Mapping.ComIbmCompute' '%5' '%6' '%7' '%8' '%9' '%10' '%11' 
Questa eccezione è stata generata da un'istruzione THROW EXCEPTION. Questo è il funzionamento normale dell'istruzione THROW; questa è un'eccezione generata dall'utente, l'azione dell'utente è quindi determinata dal flusso di messaggi e dal tipo di eccezione generata.
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ar25251_9_