.NETCompute ノードのサンプルについて

.NETCompute ノードのサンプルは、C# で記述されたコードを使用して、メッセージのフィルター、変更、および変換を行います。 Windows ブローカーで .NETCompute ノードを使用して、出力メッセージの構成および Microsoft .NET Framework (.NET) またはコンポーネント・オブジェクト・モデル (COM) アプリケーションとの相互作用を行えます。

このサンプルは、コードが C# で記述され、Microsoft Visual Studio 2010 を使用してアセンブリー (拡張子は .dll) にビルドされた .NETCompute ノードを使用します。 WebSphere Message Broker はテンプレートを Microsoft Visual Studio にインストールします。 Microsoft Visual Studio では、フロー開発者が独自のコードを追加できる基本的な Evaluate メソッド構造が提供されています。 これは、Compute ノード、JavaCompute ノード、PHPCompute ノードと類似した概念です。 このサンプルの読者が Microsoft Visual Studio インストール済み環境へのアクセスを持っていない場合があるため、ビルド済みのアセンブリー・ファイルが提供されています。 つまり、Microsoft Visual Studio がなくても、サンプルをデプロイし、実行できます。 トピック『.NETCompute ノードのサンプルのデプロイメントの準備』では、アセンブリー・ファイルが置かれている場所とその使用方法について説明されています。 サンプルでは、C# ソース・コード (ここを参照) も提供されています。

シナリオ:

ある小売会社はある都市の中の別々の場所にいくつかの店舗を持っています。 店舗は一日中、売買取引を行います。 各取引は、XML メッセージとして中央の IT オフィスの入力キューに送られます。 また、店舗は顧客ロイヤルティー・プログラムの提供も行っています。 顧客がロイヤルティー・プログラムに登録するたびに、XML メッセージが別の形式 (顧客の個人情報を含む) で同じ入力キューに送信されます。 会社は WebSphere Message Broker を使用して、これらのメッセージを処理することを決定しました。 このソリューションで使用されるルーティングおよび変換により、.NETCompute ノードの機能が示されます。

使用されるメッセージ・フローは次のとおりです。

メッセージはメッセージ・フローを以下のように移動していきます。

  1. XML SaleEnvelope メッセージおよび XML LoyaltyProgram メッセージは、ReadMessages ノードを介してメッセージ・フローに入ります。
  2. Filter .NETCompute ノードは、SaleEnvelope メッセージをその Alternate ターミナル (Create .NETCompute ノードに接続されている) からメッセージ・フローの下部の分岐に沿って経路指定します。 LoyaltyProgram メッセージは、Filter ノードの Out ターミナル (Modify .NETCompute ノードに接続されている) からメッセージ・フローの上部の分岐に沿って経路指定されます。
  3. Modify .NETCompute ノードは、LoyaltyProgram メッセージを変更して、顧客がそのプログラムに登録した店舗の場所に対応する完全な住所を含むようにします。 そして、変更された XML メッセージが WriteLoyaltyProgramMessage MQOutput ノードによってキュー DOTNET.OUT に入れられます。
  4. Create .NETCompute ノードは SaleEnvelope メッセージに含まれているデータを繰り返し、Item エレメント (それ自体の中に繰り返す Invoice 構造を含む) ごとに、Record が出力メッセージに作成されます。 出力メッセージは DFDL メッセージ・ドメインを使用して作成され、Comma Separated Value 形式で示されます。 出力メッセージ (WriteStoreTransactionMessage MQOutput ノードによって作成される) では、各 Item が個別の行で示されます。 各行のコンマ区切りフィールドには、各 Item のプロパティーの値が保持されます。 店舗の取引レコードは、同じ時点のすべてのデータを含む単一のメッセージとして書き込まれます。

以下のセクションでは、2 つの別個の種類の入力テスト XML メッセージ (SaleEnvelope および LoyaltyProgram) の例が示されています。 出力メッセージは、『サンプルの実行』セクションに含まれています。

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

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

.NETCompute ノードのサンプルの実行

このサンプルをインポートしてデプロイすると、以下のサンプルの実行の項の手順に従ってサンプルを実行できます。

サンプルのホームに戻る