Informationen zum Mustercode '.NETCompute-Knoten'

Mit dem Mustercode '.NETCompute-Knoten' filtern, ändern und setzen Sie Nachrichten unter Verwendung von C#-Code um. Verwenden Sie den .NETCompute-Knoten auf Windows-Brokern, um Ausgabenachrichten zu erstellen und mit Microsoft .NET Framework (.NET) oder Component Object Model (COM) zu interagieren.

Der Mustercode verwendet .NETCompute-Knoten, deren Code in C# geschrieben und anschließend mit Microsoft Visual Studio 2010 in eine Assemblierung (mit Erweiterung .dll) eingefügt wurde. WebSphere Message Broker installiert Vorlagen in Microsoft Visual Studio, die eine grundlegende Auswertungsmethodenstruktur bilden, der ein Flussentwickler dann eigenen Code hinzufügen kann. Dieses Konzept ähnelt dem Konzept der 'Compute'-, 'JavaCompute'- und 'PHPCompute'-Knoten. Da Leser dieses Beispiels (Mustercodes) möglicherweise keinen Zugriff auf eine Installation von Microsoft Visual Studio haben, wird eine vordefinierte Assemblierungsdatei zur Verfügung gestellt. Somit können Sie den Mustercode auch ohne Microsoft Visual Studio implementieren und ausführen. Im Thema Implementierung des Mustercodes '.NETCompute-Knoten' vorbereiten erfahren Sie, wo die Assemblierungsdatei gespeichert ist und wie sie verwendet werden kann. Der Mustercode enthält zudem auch den C#-Quellcode, zu dem Sie hier weitere Informationen finden.

Szenario:

Ein Einzelhandelsunternehmen betreibt mehrere Filialen an verschiedenen Standorten in einer Stadt. Während des gesamten Tages tätigen diese Filialen Verkaufstransaktionen. Bei jeder Transaktion wird eine XML-Nachricht an eine Eingabewarteschlange einer zentralen IT-Niederlassung geleitet. Desweiteren arbeiten die Filialen mit einem Kundentreueprogramm. Bei jeder Kundenregistrierung im Kundentreueprogramm wird eine XML-Nachricht in einem anderen Format (mit den persönlichen Zusatzinformationen des jeweiligen Kunden) an dieselbe Eingabewarteschlange gesendet. Das Unternehmen hat sich entschieden, WebSphere Message Broker zur Verarbeitung der Nachrichten einzusetzen. Die in der Lösung verwendete Weiterleitung und Umsetzung veranschaulicht die Funktionalität des .NETCompute-Knotens.

Folgender Nachrichtenfluss wird verwendet:

Die Nachricht gelangt wie folgt durch den Nachrichtenfluss:

  1. Die XML-Nachrichten 'SaleEnvelope' und 'LoyaltyProgram' werden über den ReadMessages-Knoten in den Nachrichtenfluss geleitet.
  2. Der 'Filter .NETCompute'-Knoten leitet die 'SaleEnvelope'-Nachrichten aus seinem alternativen Terminal, das mit dem 'Create .NETCompute'-Knoten verbunden ist, über den unteren Zweig des Nachrichtenflusses. 'LoyaltyProgram'-Nachrichten werden aus dem Ausgabeterminal des Filterknotens, der mit dem 'Modify .NETCompute'-Knoten verbunden ist, über den oberen Zweig des Nachrichtenflusses weitergeleitet.
  3. Der 'Modify .NETCompute'-Knoten ändert die 'LoyaltyProgram'-Nachricht so, dass sie eine vollständige Adresse beinhaltet, die dem Filialstandort entspricht, an dem der Kunde für das Programm registriert ist. Anschließend wird die geänderte XML-Nachricht vom MQOutput-Knoten 'WriteLoyaltyProgramMessage' in die Warteschlange DOTNET.OUT geschrieben.
  4. Der 'Create .NETCompute'-Knoten durchläuft die in der 'SaleEnvelope'-Nachricht enthaltenen Daten. Dabei wird für jedes Artikelelement (Item), das wiederum in der sich wiederholenden Rechnungsstruktur (Invoice) enthalten ist, ein Datensatz in der Ausgabenachricht erstellt. Die Ausgabenachricht wird unter Verwendung der DFDL-Nachrichtendomäne im CSV-Format (Comma Separated Value) erstellt. Die vom MQOutput-Knoten 'WriteStoreTransactionMessage' erstellte Ausgabenachricht enthält für jeden Artikel eine separate Zeile. Die kommagetrennten Felder in jeder Zeile enthalten die Werte für die Eigenschaften der einzelnen Artikel. Die Transaktionsdatensätze der Filiale werden als Einzelnachricht geschrieben, die alle Werte enthält.

Die nachfolgenden Abschnitte enthalten Beispiele zu zwei verschiedenen XML- Eingabetestnachrichten ('SaleEnvelope' und 'LoyaltyProgram'). Die Ausgabenachrichten sind im Abschnitt Mustercode ausführen aufgeführt.

'SaleEnvelope'-Eingabetestnachricht

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

'LoyaltyProgram'-Eingabetestnachricht

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

Mustercode '.NETCompute-Knoten' ausführen

Sobald Sie den Mustercode importiert und implementiert haben, können Sie ihn ausführen. Beachten Sie dabei die Anweisungen im Abschnitt Mustercodes ausführen.

Zurück zum Beginn des Mustercodes