Desarrollo de un flujo de mensajes utilizando una función ESQL definida por el usuario

Antes de empezar
Esta es la novena fase del escenario para realizar el enriquecimiento de mensaje simple. Este tema muestra cómo desarrollar un flujo de mensajes utilizando una función ESQL definida por el usuario. También incluye el desarrollo de los documentos de instancia y los modelos de mensaje correspondientes.
  1. En la definición de mensaje COMPLEX, en el espacio de nombres www.complex.net, cree los mensajes denominados addev5in y addev5out con las estructuras siguientes:
    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. Cree un flujo de mensajes denominado addev5, que contenga la correlación siguiente: MQInput -> Mapping -> MQOutput.
  3. Abra la correlación y seleccione addev5in como el origen y addev5out como el destino.
  4. En el proyecto MAPPING3_COMPLEX_flows, cree un archivo ESQL llamado addev5 y coloque estas funciones en dicho archivo:
    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. En el panel de hoja de cálculo del Editor de correlaciones de mensajes, expanda el mensaje y seleccione grossvalue.
  6. En el panel Expresión, entre la expresión:
    esql:calcGrossvalue($source/comp:addev5in/value1, 
    $source/comp:addev5in/operator, 
    $source/comp:addev5in/value2)
  7. Seleccione el netvalue de destino y, en el panel Expresión, entre la expresión siguiente:
    esql:calcNetvalue($source/comp:addev5in/value1, 
    $source/comp:addev5in/operator, 
    $source/comp:addev5in/value2, 
    $source/comp:addev5in/rate)
  8. Expanda el árbol de Propiedades y establezca los valores siguientes:
    MessageType      |       'addev5out'
  9. Cree los siguientes mensajes de instancia, con las cabeceras RFH2 adecuadas:
    <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>
Ha creado los recursos siguientes:
Ahora despliegue el conjunto de mensajes y el flujo de mensajes.

Despliegue del conjunto de mensajes y el flujo de mensajes

Esta es la décima fase del escenario para realizar el enriquecimiento de mensaje simple. Este tema muestra cómo desplegar el conjunto de mensajes y el flujo de mensajes, y cómo ejecutar los mensajes de instancia a través del intermediario.
  1. Cree un archivo bar denominado addev5.
  2. Añada el conjunto de mensajes MAPPING3_COMPLEX_messages y el flujo de mensajes addev5 al archivo bar.
  3. Despliegue el archivo bar en el intermediario.
  4. Coloque los documentos de instancia en la cola de entrada.
Los mensajes de salida serán parecidos a éste:
<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>
Si no hay ninguna salida de mensaje, busque una entrada parecida a la siguiente en las anotaciones de sucesos.
BIP2949 ( BRK.default ) Se ha emitido una
excepción ESQL generada por el usuario. La información adicional proporcionada con esta excepción es: ''Invalid Operator'' ''MOD'' 'addev5.Mapping.ComIbmCompute' '%5' '%6' '%7' '%8' '%9' '%10' '%11' 
Esta excepción ha sido emitida por una sentencia THROW EXCEPTION. Este es el comportamiento normal de la sentencia THROW; es una excepción generada por el usuario, así que la acción del usuario la determina el flujo de mensajes y el tipo de excepción generada.
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ar25251_9_