判断は、実行時にメッセージのルーティングに関する判断を行う、統合点のタイプの1つです。通常、判断は、遷移の「条件のコード」プロパティに記述する内容ベースのルーティング・コードに従ってメッセージ本体を分析することで行われます。分析結果に基づいて、イベントは適切な受信アクティビティに送信されます。これは、条件付きルーティングまたは内容ベースのルーティングと呼ばれます。
注意: 統合点で使用できる判断は1つのみという制限はありません。必要な場合は、統合点で適切なターゲットを判断するために判断を連鎖させることができます。ジェネレータは、判断ツリーを実装する適切なワークフローおよびJavaを生成します。
判断を構成する要素の描画方法はいろいろありますが、どの場合にも次の要素が必ず含まれます。
送信システム
受信システム
送信システムに定義された少なくとも1つのチャネル
受信システムの受信アクティビティ
送信されるメッセージを表すオブジェクト・フロー状態
送信アクティビティからオブジェクト・フロー状態への遷移
オブジェクト・フロー状態からOR擬似状態への遷移
送信アクティビティは、オブジェクト・フロー状態で表されるメッセージを作成します。このメッセージは、1つ以上の受信アクティビティに送信されます。送信アクティビティまたは受信アクティビティ、あるいはその両方でアダプタが必要になる場合があります。チャネルに属すこれらのアダプタは、データを送信アクティビティから受け取り、BESを介した送信に適した形式に変換します。また、これらのアダプタは、メッセージをBESから受け取り、受信システムで使用される形式に変換します。各システムで定義されるチャネルは、メッセージを送受信します。チャネル・プロパティは、メッセージの送信に使用されるメカニズムを定義します(AQメッセージかどうか、どのメッセージ・プロトコルを使用するかなど)。
チャネルは、送信アクティビティおよび受信アクティビティと関連付けられている必要があります。関連付けを行うには、遷移の「チャネル」プロパティを使用します。このプロパティは、送信アクティビティからの遷移では出力チャネルを、受信アクティビティへの遷移では入力チャネルを識別します。遷移に定義される擬似状態およびルーティング規則は、メッセージを受信システムにルーティングする方法を判断します。
次に、判断の例を示します。この例では、Take Orderアクティビティが新規注文(Order[received])を生成します。擬似状態からの遷移に定義するカスタム内容ルーティングJavaコードは、メッセージのXMLの内容を分析し、Overseas ShippingシステムのClear for Exportアクティビティと、Domestic Shippingシステムのインスタンスの1つにあるAllocate Stockアクティビティのどちらに送信するかを判断します。
メッセージがDomestic Shippingシステムにルーティングされると、ジェネレータは、統合点コードの生成時に、遷移のブロードキャスト・フラグの値を調べます。ブロードキャストが選択されている場合、ジェネレータはすべてのシステム・インスタンスにメッセージを送信するコードを作成します。
ブロードキャストが選択されていない場合、ジェネレータでは、該当する遷移の「インスタンス・セレクタのコード」プロパティに指定されたコードを使用します。ユーザー独自の特定のインスタンスのメッセージ・ルーティング・ロジックは、ここで追加できます。
メッセージがOverseas Shipping Centerサブシステム(単一インスタンスのシステム)にルーティングされる場合、ブロードキャスト・フラグの値は無視されます。
ダイアグラムの図形が誤解を招くことがあります。判断に見えるものが実際は単純な統合点であったり、統合点でもないことがあります。
判断がアクティビティ内で行われることがあります。この場合、ルーティング・コードを生成する必要はありません。メッセージのルーティング前にハブのBESでそれ以上評価を行う必要がないことを示す送信アプリケーションのシグナルにより、メッセージが呼び出されます。E-Business統合コード・ジェネレータでは、このケースは単純な統合点として扱われます。
どちらの場合も、ルーティングはアクティビティで判断されます。ルーティング・コードを生成する必要はありません。BESには、アクティビティからResult[success]イベントまたはResult[failure]イベントが渡されます。
注意: ダイアグラムにオブジェクト・フロー状態が出現するまで、BESでメッセージのルーティングは制御できません。オブジェクト・フロー状態の出現前に統合点で発生した処理は、送信アクティビティで実行されたものと想定されます。上の2つのダイアグラムでは、オブジェクト・フロー状態と、受信アクティビティとの間に判断がないため、ルーティングは必要ありません。