Simplified Database Routing メッセージ・フローについて
Simplified Database Routing メッセージ・フローは、入力メッセージの内容の中に社員詳細がまだ存在しない場合、データベースから社員詳細を取り出します。
社員詳細は、入力メッセージで指定されている社員番号に基づいて取り出されます。
次にメッセージ・フローは、社員の管理者に基づいて取り出される追加情報に基づいて、応答メッセージをルーティングします。
入力メッセージの内容に基づき、さまざまなルーティング条件が満たされます。満たされたルーティング条件に応じて、以下の 1 つ以上の出力キューにメッセージが出力されます。
- SIMPLERROUTEDB_SNRSTAFF
- SIMPLERROUTEDB_ORDERCLOCK
- SIMPLERROUTEDB_KEYNOTFOUND
- SIMPLERROUTEDB_DEFAULT
下の図は、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 メッセージ・フローは、次のようなアクションを実行します。
- MQInput ノードは SIMPLERROUTEDB_IN キューから XML 入力メッセージを取得します。
メッセージは Route ノードに渡されます。
- Route ノードは入力メッセージの内容を調べて、社員の配属先部門フィールドが使用可能かどうかを確かめます。
フィールドが使用可能である場合、メッセージは Match ターミナルを通して DatabaseRoute ノードにルーティングされます。
フィールドが使用可能でない場合、社員詳細を取り出す必要があります。
メッセージは Default ターミナルを通して DatabaseRetrieve ノードにルーティングされます。
- DatabaseRetrieve ノードは、社員詳細を取り出すためにデータベース内の EMPLOYEE 表を照会します。データベース検索のキーとして、メッセージ内の社員番号が使用されます。
DatabaseRetrieve ノードで設定されるプロパティーは、EMPLOYEE 表に対するデータベース照会からどの値を取り出すか、それらの値を出力メッセージのどこに挿入するかを指定します。
- 社員番号がデータベース内のものと一致する場合、そのデータベースの値がメッセージに取り込まれます。
その後、メッセージは DatabaseRoute ノードに渡されます。
- 社員番号がデータベース内の値と一致しない場合、元の入力メッセージは、keyNotFound ターミナルを通して KeyNotFoundQ ノードに渡されます。
- DatabaseRoute ノードは、社員の詳細とその管理者を比較するために JOIN 演算を実行します。この JOIN 演算は次のような手順で行われます。
- 入力メッセージの中の配属先部門値をデータベース照会で使用して、DEPARTMENT 表内の部門管理者を見つけます。
- 管理者番号の列値 (DEPARTMENT.MGRNUM) を取り出し、これを使って EMPLOYEE 表にリンクして、特定の社員レコードを見つけます。
ここでは、DEPARTMENT.MGRNUM が EMPLOYEE.EMPNUM にリンクされます。見つかった社員レコードは、その社員の管理者の雇用レコードを参照します。
- ノードのデータベース照会に指定した値が、管理者用として戻されます。
- 次に、DatabaseRoute ノード内のフィルター式が処理されます。
式は true または false のどちらかになります。フィルター式は、次のように処理されます。
- 社員の配属先部門の値が DEPARTMENT 表のレコードと一致しない場合、メッセージは KeyNotFound ターミナルを通して KeyNotFoundQ ノードに渡されます。
- 社員の年齢が管理者の年齢より高く、管理者の姓が KWAN である場合、DatabaseRoute ノードは OlderThanMe ターミナルを通して SeniorStaffQ ノードに入力メッセージを渡します。
その後、次のフィルター式が評価されます。
- 入力メッセージにある社員の勤続年数が 10 より大きい場合、DatabaseRoute ノードは TenYearsService ターミナルを通して OrderClockQ ノードに入力メッセージを渡します。
- 2 つのフィルター式のどちらも true でない場合、DatabaseRoute ノードは Default ターミナルを通して DefaultQ ノードに入力メッセージを渡します。
- いずれかのノードで処理が失敗した場合、エラー処理のために、入力メッセージはノード内の Failure ターミナルを通して Trace ノードに渡されます。
Simplified Database Routing メッセージ・フロー・サンプルで使われるデータベース・ノードはデータベース内の情報を読み取りますが、データベース内のデータを更新することはまったくありません。
「Simplified Database Routing サンプルについて」に戻るsample