BPM には、既存のビジネスプロセスインスタンスを、ビジネスプロセスに着信するメッセージと照合するための方法が用意されています。相関キーとは、着信メッセージと BPM エンジンの両方に含まれている個々のデータ値のことです。着信メッセージに設定済みの相関キーに一致する値が含まれている場合、その値に関連付けられた一意のビジネスプロセスインスタンスは、処理を続行してビジネスプロセスの次のステップに進みます。メッセージの相関を定義するために、次のタスクを実行できます。
メッセージの相関の使用例については、「メッセージの相関によるリンクと順序付け」を参照してください。
相関キーは、購買発注番号などのビジネスプロセスで定義できる値であり、特定のビジネスプロセスインスタンスに関する情報を関連付けて配信するための方法を提供します。コンポーネント間の非同期メッセージ交換の場合は、インスタンス ID の相関を実装する必要があります。非同期メッセージ交換を使用する場合の例として、ビジネスプロセスの中間で受信アクティビティーを作成する場合があります。
プロジェクトエクスプローラで、ビジネスプロセスを右クリックし、「プロパティー」をクリックします。
「相関」タブをクリックします。
「相関キー」セクションで、「作成」をクリックします。
「新規相関キー」ダイアログボックスが表示されます。
「名前」フィールドに、相関キーの名前またはエイリアスを入力します。
「ツリーから選択」フィールドで、このエイリアスに追加するメッセージタイプをリストから選択します。ビジネスプロセス内のステップのための一意の識別子を構成する 1 つ以上の相関キーを選択します。
「追加」をクリックして、新しいエイリアスを「選択したエイリアスリスト」に保存します。
「タイプ」フィールドの値は自動的に入力されます。
「了解」をクリックします。
相関キーを作成するか、または相関キーが自動的に作成されたあとは、メッセージタイプを追加または削除することによってそのキーを変更することができます。
プロジェクトエクスプローラで、ビジネスプロセスを右クリックし、「プロパティー」をクリックします。
「相関」タブをクリックします。
「相関キー」セクションで、変更するキーをクリックし、「編集」をクリックします。
次のいずれかの操作を行います。
「了解」をクリックします。
相関キーを作成するか、または相関キーが自動的に作成されたあとは、すでに使用されなくなったキーを削除することができます。一部の相関キーは削除できません。
プロジェクトエクスプローラで、ビジネスプロセスを右クリックし、「プロパティー」をクリックします。
「相関」タブをクリックします。
「相関キー」セクションで、削除するキーを選択し、「削除」をクリックします。
「了解」をクリックします。
相関セットとは、プロパティー (相関キー) のグループのことであり、そのグループ内のすべてのメッセージで共有されます。相関セットでは、メッセージやビジネスプロセスインスタンスとの会話が照合されます。たとえば、購入と支払いに関するすべての情報が関連付けられるように、トランザクションに購買発注番号と請求書番号を割り当てることができます。
相関セットに名前を付ける場合は、一意の名前を使用してください。相関セット名が重複していると、監視および復旧データベースのインデックス作成で問題が発生します。一意性を保証するために、相関セット名にビジネスプロセス名を含めることを考慮してください。
「相関」タブをクリックします。
「相関セット」セクションで、「作成」をクリックします。
「新規相関セット」ダイアログボックスが表示されます。
「名前」フィールドで、新しい相関セットの名前を入力します。
「リストから選択」ボックスで、相関セットに追加する相関キーを選択します。複数のキーを選択するには、Ctrl キーを使用します。
右矢印ボタンをクリックして、選択項目を相関セットに移動します。
「了解」をクリックします。
相関セットを作成するか、または相関セットが自動的に作成されたあとは、相関キーを追加または削除することによってその相関セットを変更することができます。
プロジェクトエクスプローラで、ビジネスプロセスを右クリックし、「プロパティー」をクリックします。
「相関」タブをクリックします。
「相関セット」セクションで、変更する相関セットをクリックし、「編集」をクリックします。
「相関セットの編集」ダイアログボックスが表示されます。
次のいずれかの操作を行います。
「了解」をクリックします。
相関セットを作成するか、または相関セットが自動的に作成されたあとは、すでに使用されなくなったセットを削除することができます。一部の相関セットは削除できません。
プロジェクトエクスプローラで、ビジネスプロセスを右クリックし、「プロパティー」をクリックします。
「相関」タブをクリックします。
「相関セット」セクションで、削除するセットを選択し、「削除」をクリックします。
「了解」をクリックします。
ビジネスプロセス内で 1 つ以上の相関セットを使用する場合は、これらのセットを受信アクティビティーにバインドし、さらに使用する前にこれらのセットを初期化する必要があります。これにより、使用される前に相関セットがメモリー内に作成されることが保証されます。
アクティビティー内のセットを初期化することを選択した場合は、両方のビジネスプロセス属性を使用することを選択するか、または使用するビジネスプロセス属性を指定する必要があります。
ビジネスプロセスデザイナで、アクティビティーを選択します。
「ビジネスプロセスデザイナ」ツールバーで、「プロパティーシートの表示」をクリックします。
「相関の使用」フィールドをクリックし、省略記号 (...) をクリックします。
「相関の使用」ダイアログボックスが表示されます。
「追加」をクリックします。
「相関セットの割り当て」ダイアログボックスが表示されます。
「リストから選択」パネルで、アクティビティーにバインドする相関セットの名前を選択し、「追加」をクリックします。
「了解」をクリックします。
「相関の使用」ダイアログボックスで、「了解」をクリックします。
一連のメッセージに対して条件を課したり、メッセージのグループをまとめて処理したり、特定のタイプのすべてのメッセージを受信確認の有無に従って決定を行ったりすることができます。BPM のリンクと順序付けの機能を使用することにより、メッセージを別々のコンテナにソートし、個々のメッセージではなくメッセージのコンテナに対してビジネスルールを実行することができます。コンテナのリンク識別子 (相関 ID) によって、コンテナが区別され、識別されたメッセージがそのコンテナにリンクされます。
BPM は、メッセージを取得すると、受信したメッセージとビジネスプロセスインスタンスの相関を取ります。BPM によって相関の一致が検出された場合は、メッセージが、そのビジネスプロセスのコンテナに格納されます。それ以外の場合は、新しいビジネスプロセスインスタンスがインスタンス化されます。
たとえば、ビジネスプロセスが、継続ポインタによって分割された HL7 メッセージを処理するとします。このビジネスプロセスには、この状態を検出し、HL7 メッセージが完全に組み立て直されるまでそのメッセージの処理を遅延させるロジックが含まれています。このコンテナは、同じ継続ポインタのすべての HL7 メッセージが受信されると、「完全」とみなされます。
この例では、ビジネスプロセスが、学生に以降の学習を許可するために 3 つのコース成績を受信することを予期しています。これらのコースは、数学、英語、およびコンピューター科学です。各メッセージには、コース成績、コースタイプ、およびメッセージの所属先を示す相関 ID が含まれています。
相関 ID である 101 を含む新しいメッセージが着信します。最初に、新しく到着したメッセージに関して一致が存在するかどうかを確認するために、BPM はこのメッセージの相関を取ります。これは最初のメッセージであるため、一致は検出されず、新しいインスタンスが作成されます。2 番目のメッセージには相関 ID である 101 が含まれています。BPM がこのメッセージの相関を取り、一致が検出されるため、このメッセージは最初のメッセージと同じビジネスインスタンスに転送されます。3 番目のメッセージには相関 ID である 102 が含まれています。相関の一致が存在しないため、このメッセージは新しいビジネスインスタンスに転送されます。この処理が、各コースタイプの成績が受信されるまで続きます。
このプロセスは、カウントまたは有効期限に基づいて設定された条件に応じて続行されます。メッセージの相関に関するビジネスプロセスのサンプルを次に示します。メインのビジネスプロセスは、File eWay を使用して DTD ベースのメッセージを読み取り、このメッセージをアンマーシャルしたあと、サブプロセスを呼び出してこのアンマーシャルされたメッセージを渡します。
このサブプロセスは、イベントベースの決定と while ループ内のタイマーイベントを使用して、アンマーシャルされたメッセージを受信します。while ループは、指定されたカウントに達するか、または期限切れになるまで続行されます。メッセージが受信されると、それらのメッセージは、要件が満たされるまでコンテナに格納されます。
タイマーイベントによって有効期限が設定されます。期限切れになった場合は、ループ条件が false に設定されてループが終了します。メッセージが受信された場合は、メッセージカウンタが増分され、メッセージの最大数が受信された場合は、ループが終了します。処理が完了すると、日付がファイルに書き込まれます。