Desenvolver um Fluxo de Mensagens Utilizando uma Função ESQL Definida pelo Usuário

Antes de começar
Este é o nono estágio do cenário para executar enriquecimento de mensagem simples. Este tópico demonstra como desenvolver um fluxo de mensagens utilizando uma função ESQL definida pelo usuário. Também envolve o desenvolvimento de modelos de mensagens correspondentes e documentos de instâncias.
  1. Na definição de mensagem COMPLEX, no espaço de nomes www.complex.net, crie mensagens chamadas addev5in e addev5out, que tenham as seguintes estruturas:
    addev5in
       value1                    (xsd:decimal) elemento local
       operator                 (xsd:string) elemento local
       value2                    (xsd:decimal) elemento local
       rate                        (xsd:decimal) elemento local
    addev5out
       grossvalue               (xsd:decimal) elemento local
       netvalue                   (xsd:decimal) elemento local
  2. Crie um fluxo de mensagem chamado addev5, que contenha o seguinte mapeamento: MQInput > Mapeamento > MQOutput.
  3. Abra o mapa e selecione addev5in como a origem e addev5out como o destino.
  4. No projeto MAPPING3_COMPLEX_flows, crie um arquivo ESQL chamado addev5 e coloque estas funções nele:
    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. Na área de janela Planilha do Editor de Mapeamento de Mensagens, expanda a mensagem e selecione grossvalue.
  6. Na área de janela Expressão, digite a expressão:
    esql:calcGrossvalue($source/comp:addev5in/value1,
    $source/comp:addev5in/operator,
    $source/comp:addev5in/value2)
  7. Selecione o destino netvalue e, na área de janela Expressão, digite a seguinte expressão:
    esql:calcNetvalue($source/comp:addev5in/value1,
    $source/comp:addev5in/operator,
    $source/comp:addev5in/value2,
    $source/comp:addev5in/rate)
  8. Expanda a árvore Propriedades e configure os seguintes valores:
    MessageType      |       'addev5out'
  9. Crie as mensagens de instância a seguir com os cabeçalhos RFH2 apropriados:
    <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>
Você criou os seguintes recursos:
Agora implemente o conjunto de mensagens e fluxo de mensagens.

Implementar o Conjunto de Mensagens e o Fluxo de Mensagens

Este é o décimo estágio do cenário para executar enriquecimento de mensagem simples. Este tópico demonstra como implementar o conjunto de mensagens e o fluxo de mensagens e executar as mensagens da instância através do intermediário.
  1. Crie um arquivo bar chamado addev5.
  2. Inclua o conjunto de mensagens MAPPING3_COMPLEX_messages e o fluxo de mensagens addev5 no arquivo bar.
  3. Implemente o arquivo bar no intermediário.
  4. Coloque os documentos da instância na fila de entrada.
As mensagens de saída serão similares a:
<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 não houver nenhuma saída de mensagem, procure uma entrada no registro de eventos como a seguinte:
BIP2949 ( BRK.default ) Uma exceção ESQL gerada pelo usuário foi emitida. As informações adicionais
fornecidas com essa exceção são: ''Invalid Operator'' ''MOD''
'addev5.Mapping.ComIbmCompute' '%5' '%6' '%7' '%8' '%9' '%10' '%11'
Esta exceção foi emitida por uma instrução THROW EXCEPTION. Esse é o comportamento normal da instrução THROW; é uma exceção gerada pelo usuário, portanto, a ação do usuário é determinada pelo fluxo de mensagens e o tipo de exceção emitidos.
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ar25251_9_