ルーティング機能は、ISIを流れるメッセージ内の値によって、後続の処理を変える機能です。
通常は定義時に一意に決定する“サービスエンドポイント”、“シーケンス”を、メッセージ内の値によって、動的に変更するときに使用します。
ISIは、以下のルーティング機能を提供します。
インバウンドルーティング
以下の場合で受信したメッセージ内の値によってインバウンドのサービスエンドポイントを決定します。
CORBAアダプタやSOAPアダプタでメッセージを受信したとき
インバウンドのカスタムアダプタでメッセージを処理するとき
インバウンドのMQアダプタでメッセージを受信したとき
MQDやキュー間転送でメッセージを受信したとき
アウトバウンドルーティング
同期サービス呼出し、または非同期サービス呼出しにおいて、共通メッセージの値によって、アウトバウンドのサービスエンドポイントを決定します。
シーケンスルーティング
ISIサーバで受信した共通メッセージの値によって実行するシーケンスを決定します。
図2.5 ルーティング機能のイメージ
条件の指定については、以下の特長があります。
ペイロード
ペイロードは、FLAT形式、CSV形式、およびXML形式でも、指定可能です。
FLAT形式の場合は、条件(サービスエンドポイントやシーケンスを特定するための値とサービスエンドポイントまたはシーケンス)と、値の位置(先頭からのオフセット、バイト数)とともに指定します。
CSV形式の場合は、振分け条件(サービスエンドポイントやシーケンスを特定するための値とサービスエンドポイントまたはシーケンス)と、値の位置(行数、カラム数)で指定します。
XML形式の場合は、振分け条件(サービスエンドポイントやシーケンスを特定するための値とサービスエンドポイントまたはシーケンス)と、値の位置(XPath)で指定します。
条件に、<、>、<=、>=、=、!=を指定します。(文字列比較の場合は、=、!=)
共通メッセージのヘッダパラメタの値
条件に、数値比較(<、>、<=、>=、=、!=)と文字列比較(一致、不一致)を指定します。
比較対象に、ダイレクト値、またはほかのヘッダパラメタキー名を指定します。
注意
アウトバウンドルーティングは、ペイロードの値に加え、共通メッセージのヘッダパラメタの値も指定できます。
CSVファイルは、以下の形式で記述されている場合だけ読込みができます。
値はカンマで区切られている
値にカンマが存在する場合、値はダブルクォーテーションで囲まれている(例:"123,45")
値に含まれるダブルクォーテーションは、連続したダブルクォーテーション("")とし、値全体はダブルクォーテーションで囲まれている(例:"12" "34")
値に制御コードが存在しない
ペイロードの値が暗号化されている場合、ペイロードの値を利用したルーティングはできません。