Simplified Database Routing サンプルの実行

Simplified Database Routing サンプルを実行して、次のようなタスクを実践することができます。

タスクごとに、メッセージを同じ WebSphere MQ キュー SIMPLERROUTEDB_IN 上に置きます。 SimplifiedDBRouting メッセージ・フローは、このキューからメッセージを取り出して処理します。 以下の手順は、Simplified Database Routing サンプル・メッセージ・フローを通して、用意されている自己定義 XML メッセージを配置する方法について説明し、それぞれの場合にメッセージ・フローからどのような出力を受け取るはずであるかを説明しています。 メッセージが SROUTEDB データベースを更新することはないため、4 つのうちのどのメッセージでも、任意の順序でメッセージ・フローに送信することができます。

サンプル・データベースの内容を表示することができます。 これは、DB2 データベースであれば、DB2 が提供するツール (DB2 コントロール・センターなど) が使用されるためです。

サンプルを実行すると、「The XMLNSC schema element was not found (XMLNSC スキーマ・エレメントが見つかりません)」や「Mandatory expression is not valid syntax (必須式が有効な構文ではありません)」などのエラー・メッセージまたは警告メッセージが、WebSphere Message Broker Toolkit の「問題」ビューに表示されることがあります。 このような警告またはエラーは、メッセージ・フロー内のいくつかのノードのプロパティーの XPath 式が、WebSphere Message Broker Toolkit でプリファレンスとして設定されている XPath 妥当性検査の要件を満たさないことを示します。 これらのメッセージは、実行時のサンプルの動作には影響しません。 ただし、エラー・メッセージが「問題」ビューに表示されるように XPath 妥当性検査プリファレンスが設定されている場合、ブローカー・アーカイブ・ファイルへのメッセージ・フローの追加や、メッセージ・フローがすでに入っているブローカー・アーカイブ・ファイルの再作成を行うことはできません。 また、メッセージ・フローをメッセージ・フロー・エディターに表示することもできません。 XPath 妥当性検査プリファレンスの厳密な設定を緩和し、エラーではなく警告を表示するには、次のようにします。

  1. 「ウィンドウ」>「プリファレンス」をクリックして、「ブローカー開発」を展開します。
  2. 「Xpath」を展開して、「妥当性検査」をクリックします。
  3. 妥当性検査のオプションごとに、メニューから「警告」を選択します。
  4. 「OK」をクリックします。
  5. エラーではなく警告が表示されるようにプリファレンスを変更した後、メッセージ・フローを保存します。 メッセージ・フローを保存すると、このフローは再び妥当性検査されます。

サンプルを実行して SIMPLERROUTEDB_FAILURE キューにメッセージが表示された場合、ブローカー・レジストリー内の JDBCProvider 別名 SIMPLERROUTEDB に対して設定されているデフォルトの DBMS JDBC プロバイダー設定が、ご使用の環境に対して正しいかどうか調べてください。 詳細は、DB2 データベース用の JDBC プロバイダー・エントリーの作成または Oracle データベース用の JDBC プロバイダー・エントリーの作成を参照してください。 サンプルの実行時にその他の問題が起きた場合、 WebSphere Message Broker 資料の『サンプル実行時の問題の解決』を参照してください。

usedbretrievenode.mbtest 内のテスト・メッセージを使った SimplifiedDBRouting メッセージ・フローの実行

SimplifiedDBRouting メッセージ・フローは、入力メッセージの EmpNumber (社員番号) フィールドにリストされている社員に関する社員詳細を取り出します。 メッセージ・フローはメッセージを変更し、最後にメッセージの内容を、2 番目のデータベース検索において社員の管理者の詳細と比較します。

SimplifiedDBRouting メッセージ・フローを実行するには、次のようにします。

  1. 「ブローカー開発」ビューで 「Simplified Database Routing メッセージ・フロー」プロジェクトを展開し、usedbretrievenode.mbtest ファイルをダブルクリックしてテスト・クライアントで開きます。
  2. テスト・クライアントで、「エンキュー」をクリックします。
  3. 「メッセージの送信」をクリックします。この入力メッセージは、SIMPLERROUTEDB_IN キュー上に置かれます。
  4. テスト・クライアントで、最初の「デキュー」をクリックします。
  5. 「メッセージの取得」をクリックし、SIMPLERROUTEDB_SNRSTAFF キューのメッセージを読み取ります。 この応答メッセージは、David Brown 氏(社員: 000010) を記録して社内スタッフのシニア・メンバーとして認識する必要があることを確認します。 以下の例は応答メッセージの形式を示しています。
    <EmpRecord>
          	<EmpNumber>000010</EmpNumber>
          	<FirstName>DAVID</FirstName>
          	<LastName>BROWN</LastName>
          	<YrsInService>10</YrsInService>
          	<AgeInYears>54</AgeInYears>
          	<WorkDept>D01</WorkDept>
    </EmpRecord>
  6. テスト・クライアントで、2 番目の「デキュー」をクリックします。
  7. 「メッセージの取得」をクリックし、SIMPLERROUTEDB_ORDERCLOCK キューのメッセージを読み取ります。 この応答メッセージは、David Brown 氏(社員: 000010) が、勤続 10 年の褒賞として管理者から時計を授与される必要があることを確認します。 以下の例は応答メッセージの形式を示しています。
    <EmpRecord>
          	<EmpNumber>000010</EmpNumber>
          	<FirstName>DAVID</FirstName>
          	<LastName>BROWN</LastName>
          	<YrsInService>10</YrsInService>
          	<AgeInYears>54</AgeInYears>
          	<WorkDept>D01</WorkDept>
    </EmpRecord>

usedbretrievenode_nofiltermatch.mbtest 内のテスト・メッセージを使った SimplifiedDBRouting メッセージ・フローの実行

SimplifiedDBRouting メッセージ・フローは、入力メッセージの EmpNumber (社員番号) フィールドにリストされている社員に関する社員詳細を取り出します。 メッセージ・フローはメッセージを変更し、最後にメッセージの内容を、2 番目のデータベース検索において社員の管理者の詳細と比較します。

SimplifiedDBRouting メッセージ・フローを実行するには、次のようにします。

  1. 「ブローカー開発」ビューで「Simplified Database Routing メッセージ・フロー」プロジェクトを展開し、usedbretrievenode_nofiltermatch.mbtest ファイルをダブルクリックしてテスト・クライアントで開きます。
  2. テスト・クライアントで、「エンキュー」をクリックします。
  3. 「メッセージの送信」をクリックします。この入力メッセージは、SIMPLERROUTEDB_IN キュー上に置かれます。
  4. テスト・クライアントで「デキュー」をクリックします。
  5. 「メッセージの取得」をクリックし、SIMPLERROUTEDB_DEFAULT キューのメッセージを読み取ります。 この応答メッセージは、Sally Kwan 氏 (社員: 000020) がどの DatabaseRoute ノード・フィルター式も満たさないことを確証します (この社員は勤続年数 10 年に満たないうえに、自分の配属先部門の管理者であるため自分自身より年長ではあり得ません)。その結果、変更後の入力メッセージはデフォルト・キューにルーティングされます。 以下の例は応答メッセージの形式を示しています。
    <EmpRecord>
          	<EmpNumber>000020</EmpNumber>
          	<FirstName>SALLY</FirstName>
          	<LastName>KWAN</LastName>
          	<YrsInService>9</YrsInService>
          	<AgeInYears>27</AgeInYears>
          	<WorkDept>D00</WorkDept>
    </EmpRecord>

bypassdbretrievenode.mbtest 内のテスト・メッセージを使った SimplifiedDBRouting メッセージ・フローの実行

SimplifiedDBRouting メッセージ・フローは、入力メッセージで提供された社員詳細を、データベース検索から得た管理者の詳細と比較します。

SimplifiedDBRouting メッセージ・フローを実行するには、次のようにします。

  1. 「ブローカー開発」ビューで「Simplified Database Routing メッセージ・フロー」プロジェクトを展開し、bypassdbretrievenode.mbtest ファイルをダブルクリックしてテスト・クライアントで開きます。
  2. テスト・クライアントで、「エンキュー」をクリックします。
  3. 「メッセージの送信」をクリックします。この入力メッセージは、SIMPLERROUTEDB_IN キュー上に置かれます。
  4. テスト・クライアントで、最初の「デキュー」をクリックします。
  5. 「メッセージの取得」をクリックし、SIMPLERROUTEDB_SNRSTAFF キューのメッセージを読み取ります。 この応答メッセージは、David Brown 氏(社員: 000010) を記録して社内スタッフのシニア・メンバーとして認識する必要があることを確認します。 以下の例は応答メッセージの形式を示しています。
    <EmpRecord>
          	<EmpNumber>000010</EmpNumber>
          	<FirstName>DAVID</FirstName>
          	<LastName>BROWN</LastName>
          	<YrsInService>10</YrsInService>
          	<AgeInYears>54</AgeInYears>
          	<WorkDept>D01</WorkDept>
    </EmpRecord>
  6. テスト・クライアントで、2 番目の「デキュー」をクリックします。
  7. 「メッセージの取得」をクリックし、SIMPLERROUTEDB_ORDERCLOCK キューのメッセージを読み取ります。 この応答メッセージは、David Brown 氏 (社員: 000010) が、勤続 10 年の褒賞として管理者から時計を授与される必要があることを確認します。以下の例は応答メッセージの形式を示しています。
    <EmpRecord>
          	<EmpNumber>000010</EmpNumber>
          	<FirstName>DAVID</FirstName>
          	<LastName>BROWN</LastName>
          	<YrsInService>10</YrsInService>
          	<AgeInYears>54</AgeInYears>
          	<WorkDept>D01</WorkDept>
    </EmpRecord>

bypassdbretrievenode_keynotfound.mbtest 内のテスト・メッセージを使った SimplifiedDBRouting メッセージ・フローの実行

SimplifiedDBRouting メッセージ・フローは、入力メッセージで提供された社員詳細を、データベース検索から得た管理者の詳細と比較します。

SimplifiedDBRouting メッセージ・フローを実行するには、次のようにします。

  1. 「ブローカー開発」ビューで「Simplified Database Routing メッセージ・フロー」プロジェクトを展開し、bypassdbretrievenode_keynotfound.mbtest ファイルをダブルクリックしてテスト・クライアントで開きます。
  2. テスト・クライアントで、「エンキュー」をクリックします。
  3. 「メッセージの送信」をクリックします。この入力メッセージは、SIMPLERROUTEDB_IN キュー上に置かれます。
  4. テスト・クライアントで「デキュー」をクリックします。
  5. 「メッセージの取得」をクリックし、SIMPLERROUTEDB_KEYNOTFOUND キューのメッセージを読み取ります。 この応答メッセージは、David Brown 氏(社員: 000010) の配属先部門の値が無効であることを確証します。 その結果、未変更の入力メッセージが keyNotFound キューにルーティングされます。 以下の例は応答メッセージの形式を示しています。
    <EmpRecord>
          	<EmpNumber>000010</EmpNumber>
          	<FirstName>DAVID</FirstName>
          	<LastName>BROWN</LastName>
          	<YrsInService>10</YrsInService>
          	<AgeInYears>54</AgeInYears>
          	<WorkDept>E00</WorkDept>
    </EmpRecord>

サンプルのホームに戻る