Acerca del ejemplo Nodo .NETCompute

El ejemplo Nodo .NETCompute filtra, modifica y transforma mensajes utilizando código que se ha escrito en C#. Puede utilizar el nodo .NETCompute en intermediarios de Windows para construir mensajes de salida e interactuar con aplicaciones de Microsoft .NET Framework (.NET) o de Modelo de objetos componentes (COM).

El ejemplo utiliza nodos .NETCompute cuyo código se ha escrito en C# y luego se ha incorporado a un ensamblado (con extensión .dll) utilizando Microsoft Visual Studio 2010. WebSphere Message Broker instala Plantillas en Microsoft Visual Studio, que proporcionan una estructura de método Evaluate básica a la que un desarrollador de flujos puede añadir luego su propio código. Este es un concepto similar al del nodo Compute, el nodo JavaCompute y el nodo PHPCompute. Puede que los lectores de este ejemplo no tengan acceso a una instalación de Microsoft Visual Studio, por lo que se proporciona un archivo de ensamblado precompilado. Esto significa que incluso sin Microsoft Visual Studio, puede igualmente desplegar y ejecutar el ejemplo. El tema Preparación para el despliegue del ejemplo de Nodo .NETCompute describe el lugar donde se encuentra el archivo de ensamblado y cómo se puede utilizar. El ejemplo también proporciona el código fuente en C#, el cual puede ver aquí.

Escenario:

Una empresa minorista tiene varias tiendas en distintos lugares de una ciudad. Las tiendas realizan transacciones de venta durante todo el día. Cada transacción da lugar a un mensaje XML que se direcciona a una cola de entrada en una oficina central de TI. Las tiendas también están introduciendo un programa de fidelización de clientes. Para cada registro de cliente en el programa de fidelización, se envía un mensaje XML en un formato diferente (que contiene los detalles personales del cliente) a la misma cola de entrada. La empresa ha decidido utilizar WebSphere Message Broker para procesar los mensajes. El direccionamiento y las transformaciones que se utilizan en la solución demuestran las funciones del nodo .NETCompute.

El flujo de mensajes utilizado es:

Los mensajes pasan a través del flujo de mensajes de la siguiente manera:

  1. Los mensajes XML SaleEnvelope, y los mensajes XML LoyaltyProgram, entran en el flujo de mensajes a través del nodo ReadMessages.
  2. El nodo .NETCompute Filter direcciona los mensajes SaleEnvelope fuera de su terminal Alternate (alternativo)(que está conectado al nodo .NETCompute Create) y a lo largo de la rama inferior del flujo de mensajes. Los mensajes LoyaltyProgram se direccionan fuera del terminal Out (de salida) del nodo Filter (que está conectado al nodo .NETCompute Modify) y a lo largo de la rama superior del flujo de mensajes.
  3. El nodo .NETCompute Modify modifica el mensaje LoyaltyProgram para que incluya una dirección completa que corresponda a la ubicación de la tienda donde el cliente se inscrito en el programa. El mensaje XML modificado se graba entonces en la cola DOTNET.OUT mediante el nodo MQOutput WriteLoyaltyProgramMessage.
  4. El nodo .NETCompute Create itera sobre los datos contenidos en el mensaje SaleEnvelope y para cada elemento Item (que a su vez está dentro de la estructura repetitiva Invoice), se crea un registro en el mensaje de salida. El mensaje de salida se crea utilizando el dominio de mensajes DFDL y representa un formato CSV (Valores separados por comas). El mensaje de salida, que se crea mediante el nodo MQOutput WriteStoreTransactionMessage, contiene una línea aparte para representar cada Item. Los campos separados por comas de cada línea contienen valores para las propiedades de cada Item. Los registros de transacciones de tienda se graban como un único mensaje que contiene todos los datos simultáneamente.

Las secciones siguientes incluyen ejemplos de los dos tipos distintos de mensajes XML de prueba de entrada (SaleEnvelope y LoyaltyProgram). Los mensajes de salida se incluyen en la sección Ejecutar el ejemplo.

Mensaje de prueba SaleEnvelope de entrada

<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>

Mensaje de prueba LoyaltyProgram de entrada

<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>

Ejecución del ejemplo Nodo .NETCompute

Después de haber importado y desplegado el ejemplo, puede ejecutarlo siguiendo las instrucciones de la sección Ejecutar el ejemplo.

Volver a la página inicial del ejemplo