Simplified Database Routing メッセージ・フローについて

Simplified Database Routing メッセージ・フローは、入力メッセージの内容の中に社員詳細がまだ存在しない場合、データベースから社員詳細を取り出します。 社員詳細は、入力メッセージで指定されている社員番号に基づいて取り出されます。 次にメッセージ・フローは、社員の管理者に基づいて取り出される追加情報に基づいて、応答メッセージをルーティングします。 入力メッセージの内容に基づき、さまざまなルーティング条件が満たされます。満たされたルーティング条件に応じて、以下の 1 つ以上の出力キューにメッセージが出力されます。

下の図は、Simplified Database Routing メッセージ・フローを示しています。

Simplified Database Routing メッセージ・フローの画面取り

以下の表は、Simplified Database Routing メッセージ・フローで使用されるノードのタイプをリストしています。

ノード・タイプ ノード名
MQInput MQInput
Route Route
DatabaseRetrieve

DatabaseRetrieve

DatabaseRoute DatabaseRoute
MQOutput FailureQ、KeyNotFoundQ、SeniorStaffQ、OrderClockQ、DefaultQ
Trace Trace

詳しくは、WebSphere Message Broker の資料で、ビルトイン・ノードを参照してください。

Simplified Database Routing メッセージ・フローは、次のようなアクションを実行します。

  1. MQInput ノードは SIMPLERROUTEDB_IN キューから XML 入力メッセージを取得します。 メッセージは Route ノードに渡されます。
  2. Route ノードは入力メッセージの内容を調べて、社員の配属先部門フィールドが使用可能かどうかを確かめます。 フィールドが使用可能である場合、メッセージは Match ターミナルを通して DatabaseRoute ノードにルーティングされます。 フィールドが使用可能でない場合、社員詳細を取り出す必要があります。 メッセージは Default ターミナルを通して DatabaseRetrieve ノードにルーティングされます。
  3. DatabaseRetrieve ノードは、社員詳細を取り出すためにデータベース内の EMPLOYEE 表を照会します。データベース検索のキーとして、メッセージ内の社員番号が使用されます。 DatabaseRetrieve ノードで設定されるプロパティーは、EMPLOYEE 表に対するデータベース照会からどの値を取り出すか、それらの値を出力メッセージのどこに挿入するかを指定します。
  4. 社員番号がデータベース内のものと一致する場合、そのデータベースの値がメッセージに取り込まれます。 その後、メッセージは DatabaseRoute ノードに渡されます。
  5. 社員番号がデータベース内の値と一致しない場合、元の入力メッセージは、keyNotFound ターミナルを通して KeyNotFoundQ ノードに渡されます。
  6. DatabaseRoute ノードは、社員の詳細とその管理者を比較するために JOIN 演算を実行します。この JOIN 演算は次のような手順で行われます。
    1. 入力メッセージの中の配属先部門値をデータベース照会で使用して、DEPARTMENT 表内の部門管理者を見つけます。
    2. 管理者番号の列値 (DEPARTMENT.MGRNUM) を取り出し、これを使って EMPLOYEE 表にリンクして、特定の社員レコードを見つけます。 ここでは、DEPARTMENT.MGRNUM が EMPLOYEE.EMPNUM にリンクされます。見つかった社員レコードは、その社員の管理者の雇用レコードを参照します。
    3. ノードのデータベース照会に指定した値が、管理者用として戻されます。
  7. 次に、DatabaseRoute ノード内のフィルター式が処理されます。 式は true または false のどちらかになります。フィルター式は、次のように処理されます。
    1. 社員の配属先部門の値が DEPARTMENT 表のレコードと一致しない場合、メッセージは KeyNotFound ターミナルを通して KeyNotFoundQ ノードに渡されます。
    2. 社員の年齢が管理者の年齢より高く、管理者の姓が KWAN である場合、DatabaseRoute ノードは OlderThanMe ターミナルを通して SeniorStaffQ ノードに入力メッセージを渡します。 その後、次のフィルター式が評価されます。
    3. 入力メッセージにある社員の勤続年数が 10 より大きい場合、DatabaseRoute ノードは TenYearsService ターミナルを通して OrderClockQ ノードに入力メッセージを渡します。
    4. 2 つのフィルター式のどちらも true でない場合、DatabaseRoute ノードは Default ターミナルを通して DefaultQ ノードに入力メッセージを渡します。
  8. いずれかのノードで処理が失敗した場合、エラー処理のために、入力メッセージはノード内の Failure ターミナルを通して Trace ノードに渡されます。

Simplified Database Routing メッセージ・フロー・サンプルで使われるデータベース・ノードはデータベース内の情報を読み取りますが、データベース内のデータを更新することはまったくありません。

「Simplified Database Routing サンプルについて」に戻るsample