Sobre a Amostra .NETCompute Node

A amostra .NETCompute Node filtra, modifica e transforma as mensagens usando código que foi gravado em C#. É possível usar o nó .NETCompute em brokers do Windows para construir mensagens de saída e interagir com aplicativos Microsoft .NET Framework (.NET) ou Modelo de Objeto Componente (COM).

A amostra usa nós .NETCompute cujo código foi gravado em C# e, em seguida, construído em um conjunto (com a extensão .dll) usando o Microsoft Visual Studio 2010. O WebSphere Message Broker instala Modelos no Microsoft Visual Studio que fornecem uma estrutura básica do método Avaliar na qual um desenvolvedor de fluxo pode então incluir seu próprio código. Este é um conceito semelhante aos nós Compute, JavaCompute e PHPCompute. Os leitores dessa amostra podem não ter acesso a uma instalação do Microsoft Visual Studio, portanto, um arquivo de conjunto pré-construído é fornecido. Isso significa que mesmo sem o Microsoft Visual Studio, ainda é possível implementar e executar a amostra. O tópico Preparando a Implementação da Amostra .NETCompute Node descreve onde o arquivo do conjunto está localizado e como pode ser usado. A amostra também fornece o código de origem C#, sobre o qual é possível ler aqui.

Cenário:

Uma empresa de varejo possui várias lojas em diferentes locais de uma cidade. As lojas realizam transações de vendas durante todo o dia. Cada transação resulta no roteamento de uma mensagem XML para uma fila de entrada em um escritório central de TI. As lojas também estão apresentando um programa de fidelidade ao cliente. Para cada registro de cliente no programa de fidelidade, uma mensagem XML em um formato diferente (contendo os detalhes pessoais do cliente) é enviada para a mesma fila de entrada. A empresa decidiu usar o WebSphere Message Broker para processar as mensagens. O roteamento e as transformações usadas na solução demonstram os recursos do nó .NETCompute.

O fluxo de mensagens usado é:

As mensagens passam pelo fluxo de mensagens da seguinte forma:

  1. As mensagens XML SaleEnvelope e as mensagens XML LoyaltyProgram entram no fluxo de mensagens por meio do nó ReadMessages.
  2. O nó Filtrar .NETCompute roteia mensagens SaleEnvelope de seu terminal Alternativo (ligado ao nó Criar .NETCompute) e ao longo da ramificação inferior do fluxo de mensagens. Mensagens LoyaltyProgram são roteadas do terminal de Saída do nó Filtrar (ligado ao nó Modificar .NETCompute) e ao longo da ramificação superior do fluxo de mensagens.
  3. O nó Modificar .NETCompute modifica a mensagem LoyaltyProgram para que ela inclua um endereço completo que corresponda ao local da loja em que o cliente se registrou para o programa. A mensagem XML modificada é então gravada na fila DOTNET.OUT pelo nó WriteLoyaltyProgramMessage MQOutput.
  4. O nó Criar .NETCompute é iterado sobre os dados contidos na mensagem SaleEnvelope e para cada elemento Item (que, por si só, está dentro da estrutura Fatura de repetição) é criado um Registro na mensagem de saída. A mensagem de saída é criada usando-se o domínio de mensagem DFDL e representa um formato Comma Separated Value. A mensagem de saída, criada pelo nó WriteStoreTransactionMessage MQOutput, contém uma linha separada representando cada Item. Os campos separados por vírgula em cada linha contêm valores para as propriedades de cada Item. Os registros de transação da loja são gravados como uma única mensagem contendo todos os dados ao mesmo tempo.

As seções a seguir incluem exemplos dos dois diferentes tipos de mensagens XML de teste de entrada (SaleEnvelope e LoyaltyProgram). As mensagens de saída são incluídas na seção Executando a Amostra.

Mensagem de Teste de Entrada SaleEnvelope

<SaleEnvelope>
  <Header>
    <SaleListCount>1</SaleListCount>
  </Header>
  <SaleList>
    <Invoice><Initial>K</Initial>
      <Initial>A</Initial>
      <Surname>Braithwaite</Surname>
      <Item><Code>00</Code>
        <Code>01</Code>
        <Code>02</Code>
        <Description>Twister</Description>
        <Category>Games</Category>
        <Price>00.30</Price>
        <Quantity>01</Quantity>
      </Item>
      <Item>
        <Code>02</Code>
        <Code>03</Code>
        <Code>01</Code>
        <Description>The Times Newspaper</Description>
        <Category>Books and Media</Category>
        <Price>00.20</Price>
        <Quantity>01</Quantity>
      </Item>
      <Balance>00.50</Balance>
      <Currency>Sterling</Currency>
    </Invoice>
    <Invoice>
      <Initial>T</Initial>
      <Initial>J</Initial>
      <Surname>Dunnwin</Surname>
      <Item>
        <Code>04</Code>
        <Code>05</Code>
        <Code>01</Code>
        <Description>The Origin of Species</Description>
        <Category>Books and Media</Category>
        <Price>22.34</Price>
        <Quantity>02</Quantity>
      </Item>
      <Item>
        <Code>06</Code>
        <Code>07</Code>
        <Code>01</Code>
        <Description>Microscope</Description>
        <Category>Miscellaneous</Category>
        <Price>36.20</Price>
        <Quantity>01</Quantity>
      </Item>
      <Balance>81.84</Balance>
      <Currency>Euros</Currency>
    </Invoice>
  </SaleList>
  <Trailer>
    <CompletionTime>12.00.00</CompletionTime>
  </Trailer>
</SaleEnvelope>

Mensagem de Teste de Entrada LoyaltyProgram

<LoyaltyProgram
      xmlns:applicant="http://www.example.org/applicant"
      xmlns:store="http://www.example.org/store">
  <applicant:ApplicantDetails>
    <applicant:FirstName>Ben</applicant:FirstName>
    <applicant:LastName>Thompson</applicant:LastName>
    <applicant:HouseNo>1</applicant:HouseNo>
    <applicant:Street>Happiness Avenue</applicant:Street>
    <applicant:Town>Grumpyville</applicant:Town>
  </applicant:ApplicantDetails>
  <store:StoreDetails>
    <store:StoreID>001</store:StoreID>
  </store:StoreDetails>
</LoyaltyProgram>

Executando a Amostra .NETCompute Node

Após ter importado e implementado a amostra, você pode executá-la seguindo as instruções na seção Executando a Amostra.

Voltar para o Início da Amostra