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: 04/05/2006
ar25251_9_