相関セットは,サービスリクエスタから送信された要求電文を一意に識別するために利用する文字列です。
ビジネスプロセスの実行時,HCSCサーバでは,受付アクティビティダイアログの[インスタンス生成]に[yes]を指定した受付アクティビティへのリクエストごとにプロセスインスタンスを生成します。
サービスリクエスタからメッセージを受け取れるプロセスインスタンスがHCSCサーバ上に複数ある場合,HCSCサーバはメッセージに含まれる相関セットの値を利用してプロセスインスタンスを特定します。
例えば,あるビジネスプロセスに,非同期にメッセージを受信する受付アクティビティが二つ定義されているとします。一つ目の受付アクティビティへのメッセージに含まれる相関セットの値と,二つ目の受付アクティビティへのメッセージに含まれる相関セットの値が同じ場合,HCSCサーバはこれら二つメッセージが同一のプロセスインスタンスへのリクエストであると特定できます。
相関セットによるプロセスインスタンスの識別の例を次の図に示します。
図6-6 相関セットによるプロセスインスタンスの識別の例
このように,非同期にメッセージを送受信するビジネスプロセスを実現するには,送受信するメッセージからプロセスインスタンスを一意に特定するキーとなるように,相関セットを設計し,定義する必要があります。
相関セットは,メッセージに含まれる一つの部分または複数の部分の連結によって構成することができます。
ビジネスプロセスで相関セットを使用すると,相関セットの値をキーとして,プロセスインスタンスの実行履歴を検索できます。実行履歴を検索することで,特定のリクエストの実行状態を確認できます。プロセスインスタンスの実行履歴の詳細については,マニュアル「Cosminexus サービスプラットフォーム システム構築・運用ガイド」を参照してください。
ビジネスプロセスでは,受付アクティビティ,応答アクティビティおよびサービス呼出アクティビティに相関セットを設定できます。また,一つの電文には複数の相関セットを設定できます。
アクティビティごとに,相関セットの設定の要否,および相関セットの役割が異なります。
受付アクティビティおよび応答アクティビティでは,インスタンスの生成の設定,割り当てた相関セットを初期化するかどうかの設定によって,相関セットの指定の要否および相関セットの内容が異なります。
インスタンスの生成の設定は,受付アクティビティダイアログで設定できます。また,相関セットを初期化するかどうかの設定は,割当相関セット群ダイアログで設定できます。
各ダイアログの詳細については,「11.4.6 受付アクティビティダイアログ」,「11.4.7 応答アクティビティダイアログ」,または「11.4.2 割当相関セット群ダイアログ」を参照してください。
表6-6 相関セットの設定の要否と内容(受付・応答)
アクティビティ | インスタンスの生成 | 初期化の設定 | 設定の要否 | 最大設定数 | 設定した相関セットの内容 |
---|---|---|---|---|---|
受付 | yes | yes | 任意 | 1 | プロセスインスタンスを生成するとき,プロセスインスタンスを識別するための相関セットが,変数として定義されている受信メッセージから生成されます。 |
no | 設定不可 | - | - | ||
no | yes | 任意 | 1 | 生成済みのプロセスインスタンスを検索したあと,検索されたプロセスインスタンスに対する新たな相関セットが,変数として定義されている受信メッセージから生成されます。 | |
no | 必須 | 1 | 指定した相関セットは,生成済みのプロセスインスタンスを検索するために,変数として定義されている受信メッセージ内の相関セットとして利用されます。 | ||
応答 | - | yes | 任意 | 1 | サービスリクエスタに応答を返すとき,変数として定義されている応答メッセージから新たな相関セットが生成されます。 |
- | no | 任意 | 1 | サービスリクエスタに応答を返すとき,変数として定義されている応答メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。 |
サービス呼出アクティビティでは,割り当てた相関セットのパターンの設定,および相関セットを初期化するかどうかの設定によって,相関セットの指定の要否および相関セットの内容が異なります。
割り当てた相関セットのパターンの設定,および相関セットを初期化するかどうかの設定は,割当相関セット群ダイアログで設定できます。
割当相関セット群ダイアログの詳細については,「11.4.2 割当相関セット群ダイアログ」を参照してください。
表6-7 相関セットを割り当てられるアクティビティ(サービス呼出)
アクティビティ | パターンの設定 | 初期化の設定 | 設定の要否 | 最大設定数 | 設定した相関セットの内容 |
---|---|---|---|---|---|
サービス呼出 | out | yes | 任意 | 1 | サービス部品にメッセージを送信するとき,変数として定義されている送信メッセージから新たな相関セットが生成されます。 |
no | 任意 | 1 | サービス部品にメッセージを送信するとき,変数として定義されている送信メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。 | ||
in | yes | 任意 | 1 | サービス部品から応答を受けたとき,変数として定義されている応答メッセージから新たな相関セットが生成されます。 | |
no | 任意 | 1 | サービス部品から応答を受けたとき,変数として定義されている応答メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。 | ||
out-in | yes | 任意 | 1 |
| |
no | 任意 | 1 |
|
ビジネスプロセス内またはスコープ内のアクティビティで使用する相関セットを,変数と同様に追加したり,編集したりできます。詳細は,「6.5.1(5)(a) スコープアクティビティを使用している場合の変数の使用」を参照してください。
次のすべての条件に該当する場合,相関セットの定義情報の変更や削除はできません。
また,相関セットの定義で使用されている変数の定義情報を変更できない場合もあります。詳細は,「6.5.1(5)(d) 変数の定義情報の変更」を参照してください。
相関セットを定義するには,あらかじめ変数および相関セットとして利用する部分の部分指定を定義しておきます。新規に相関セットを定義する手順を次に示します。なお,相関セットは,繰り返しアクティビティ内のキャンバスでは定義できません。
「表6-7 相関セットを割り当てられるアクティビティ(サービス呼出)」に示すアクティビティから,相関セットを設定する手順を次に示します。
相関セットを利用するビジネスプロセスの定義について,例を用いて説明します。
次の図に示すように,申請とその結果を非同期で確認する申請結果確認のリクエストを受け付けるビジネスプロセスを例として利用します。
図6-7 定義するビジネスプロセスの例
上記の図に示したビジネスプロセスを定義する場合の変数,相関セット,および受付アクティビティの定義内容を次に示します。
表6-8 申請の要求電文に対応する変数の定義内容(例)
[変数・相関セット一覧]ダイアログ(変数情報の表示)での設定項目 | 設定する値 | |
---|---|---|
変数名 | 申請メッセージ | |
種別 | messageType | |
電文フォーマット | 申請メッセージ.xsd | |
部分指定 | 部分名 | 申請ID |
指定式 | /req1/id | |
型 | string |
表6-9 申請結果確認の要求電文に対応する変数の定義内容(例)
[変数・相関セット一覧]ダイアログ(変数情報の表示)での設定項目 | 設定する値 | |
---|---|---|
変数名 | 申請確認メッセージ | |
種別 | messageType | |
電文フォーマット | 申請確認メッセージ.xsd | |
部分指定 | 部分名 | 申請ID |
指定式 | /req2/id | |
型 | string |
表6-10 相関セットの定義内容(例)
[変数・相関セット一覧]ダイアログ(相関セット情報の表示)での設定項目 | 設定する値 | |
---|---|---|
相関セット名 | 申請相関ID | |
取得部 | 利用変数 | 申請メッセージ※ |
部分名 | 申請ID |
表6-11 申請のリクエストを受け付ける受付アクティビティの定義内容(例)
[受付アクティビティ]ダイアログでの設定項目 | 設定する値 | |
---|---|---|
アクティビティ名 | 申請受付 | |
オペレーション名 | request | |
割当変数 | 申請メッセージ | |
割当相関セット群 | 相関セット名 | 申請相関ID |
初期化 | yes | |
通信モデル | 非同期 | |
インスタンス生成 | yes |
表6-12 申請結果確認のリクエストを受け付ける受付アクティビティの定義内容(例)
[受付アクティビティ]ダイアログでの設定項目 | 設定する値 | |
---|---|---|
アクティビティ名 | 確認受付 | |
オペレーション名 | confirm | |
割当変数 | 申請確認メッセージ | |
割当相関セット群 | 相関セット名 | 申請相関ID |
初期化 | no | |
通信モデル | 同期 | |
インスタンス生成 | no |