6.5.2 相関セットの定義

相関セットは,サービスリクエスタから送信された要求電文を一意に識別するために利用する文字列です。

<この項の構成>
(1) 相関セットによるプロセスインスタンスの識別
(2) 相関セットを割り当てられるアクティビティ
(3) 相関セットを使用する場合の注意事項
(4) 相関セットの定義方法
(5) 相関セットを利用した定義の例

(1) 相関セットによるプロセスインスタンスの識別

ビジネスプロセスの実行時,HCSCサーバでは,受付アクティビティダイアログの[インスタンス生成]に[yes]を指定した受付アクティビティへのリクエストごとにプロセスインスタンスを生成します。

サービスリクエスタからメッセージを受け取れるプロセスインスタンスがHCSCサーバ上に複数ある場合,HCSCサーバはメッセージに含まれる相関セットの値を利用してプロセスインスタンスを特定します。

例えば,あるビジネスプロセスに,非同期にメッセージを受信する受付アクティビティが二つ定義されているとします。一つ目の受付アクティビティへのメッセージに含まれる相関セットの値と,二つ目の受付アクティビティへのメッセージに含まれる相関セットの値が同じ場合,HCSCサーバはこれら二つメッセージが同一のプロセスインスタンスへのリクエストであると特定できます。

相関セットによるプロセスインスタンスの識別の例を次の図に示します。

図6-6 相関セットによるプロセスインスタンスの識別の例

[図データ]

このように,非同期にメッセージを送受信するビジネスプロセスを実現するには,送受信するメッセージからプロセスインスタンスを一意に特定するキーとなるように,相関セットを設計し,定義する必要があります。

相関セットは,メッセージに含まれる一つの部分または複数の部分の連結によって構成することができます。

ビジネスプロセスで相関セットを使用すると,相関セットの値をキーとして,プロセスインスタンスの実行履歴を検索できます。実行履歴を検索することで,特定のリクエストの実行状態を確認できます。プロセスインスタンスの実行履歴の詳細については,マニュアル「Cosminexus サービスプラットフォーム システム構築・運用ガイド」を参照してください。

(2) 相関セットを割り当てられるアクティビティ

ビジネスプロセスでは,受付アクティビティ,応答アクティビティおよびサービス呼出アクティビティに相関セットを設定できます。また,一つの電文には複数の相関セットを設定できます。

アクティビティごとに,相関セットの設定の要否,および相関セットの役割が異なります。

(a) 受付アクティビティ,応答アクティビティの場合

受付アクティビティおよび応答アクティビティでは,インスタンスの生成の設定,割り当てた相関セットを初期化するかどうかの設定によって,相関セットの指定の要否および相関セットの内容が異なります。

インスタンスの生成の設定は,受付アクティビティダイアログで設定できます。また,相関セットを初期化するかどうかの設定は,割当相関セット群ダイアログで設定できます。

各ダイアログの詳細については,「11.4.6 受付アクティビティダイアログ」,「11.4.7 応答アクティビティダイアログ」,または「11.4.2 割当相関セット群ダイアログ」を参照してください。

表6-6 相関セットの設定の要否と内容(受付・応答)

アクティビティインスタンスの生成初期化の設定設定の要否最大設定数設定した相関セットの内容
受付yesyes任意1プロセスインスタンスを生成するとき,プロセスインスタンスを識別するための相関セットが,変数として定義されている受信メッセージから生成されます。
no設定不可
noyes任意1生成済みのプロセスインスタンスを検索したあと,検索されたプロセスインスタンスに対する新たな相関セットが,変数として定義されている受信メッセージから生成されます。
no必須1指定した相関セットは,生成済みのプロセスインスタンスを検索するために,変数として定義されている受信メッセージ内の相関セットとして利用されます。
応答yes任意1サービスリクエスタに応答を返すとき,変数として定義されている応答メッセージから新たな相関セットが生成されます。
no任意1サービスリクエスタに応答を返すとき,変数として定義されている応答メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。
(凡例)
-:該当しません。

(b) サービス呼出アクティビティの場合

サービス呼出アクティビティでは,割り当てた相関セットのパターンの設定,および相関セットを初期化するかどうかの設定によって,相関セットの指定の要否および相関セットの内容が異なります。

割り当てた相関セットのパターンの設定,および相関セットを初期化するかどうかの設定は,割当相関セット群ダイアログで設定できます。

割当相関セット群ダイアログの詳細については,「11.4.2 割当相関セット群ダイアログ」を参照してください。

表6-7 相関セットを割り当てられるアクティビティ(サービス呼出)

アクティビティパターンの設定初期化の設定設定の要否最大設定数設定した相関セットの内容
サービス呼出outyes任意1サービス部品にメッセージを送信するとき,変数として定義されている送信メッセージから新たな相関セットが生成されます。
no任意1サービス部品にメッセージを送信するとき,変数として定義されている送信メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。
inyes任意1サービス部品から応答を受けたとき,変数として定義されている応答メッセージから新たな相関セットが生成されます。
no任意1サービス部品から応答を受けたとき,変数として定義されている応答メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。
out-inyes任意1
送信時
サービス部品にメッセージを送信するとき,変数として定義されている送信メッセージから新たな相関セットが生成されます。
受信時
サービス部品から応答を受けたとき,変数として定義されている応答メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。
no任意1
送信時
サービス部品にメッセージを送信するとき,変数として定義されている送信メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。
受信時
サービス部品から応答を受けたとき,変数として定義されている応答メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。

(3) 相関セットを使用する場合の注意事項

(a) スコープアクティビティを使用している場合の相関セットの使用

ビジネスプロセス内またはスコープ内のアクティビティで使用する相関セットを,変数と同様に追加したり,編集したりできます。詳細は,「6.5.1(5)(a) スコープアクティビティを使用している場合の変数の使用」を参照してください。

(b) 相関セットの定義情報の変更

次のすべての条件に該当する場合,相関セットの定義情報の変更や削除はできません。

また,相関セットの定義で使用されている変数の定義情報を変更できない場合もあります。詳細は,「6.5.1(5)(d) 変数の定義情報の変更」を参照してください。

注意
相関セットの定義情報を変更すると,その相関セットを割り当てた個所に,再度割り当てが必要になる場合があります。
例えば,あるアクティビティに相関セットAを割り当て,その後,その相関セットAの名前を相関セットBに変更した場合,次のどちらかを行ってください。
  • アクティビティへ再度相関セットを割り当てる。
  • 再度相関セットAを定義する。

(4) 相関セットの定義方法

(a) 相関セットの新規定義

相関セットを定義するには,あらかじめ変数および相関セットとして利用する部分の部分指定を定義しておきます。新規に相関セットを定義する手順を次に示します。なお,相関セットは,繰り返しアクティビティ内のキャンバスでは定義できません。

  1. 次のどちらかの方法で,変数・相関セット一覧ダイアログを表示します。
    • ビジネスプロセス定義画面のキャンバス上の[変数・相関セット]アイコンをクリックします。
    • 次に示すアクティビティダイアログの[編集]ボタンをクリックします。
      ・受付アクティビティ
      ・応答アクティビティ
      ・サービス呼出アクティビティ
  2. 一覧から「相関セット一覧」を選択します。
  3. 相関セット名を入力します。
  4. [行追加]ボタンをクリックし,[取得部]に利用変数および部分名を追加します。
  5. 利用するメッセージ型の変数が複数ある場合は,利用変数および部分名をドロップダウンリストから選択します。
    なお,相関セットに指定できるのは,メッセージ型の変数,かつメッセージ型以外の部分名です。
  6. [追加]ボタンをクリックします。
    相関セット一覧に,追加した相関セットが表示されます。
  7. [OK]ボタンをクリックします。
(b) アクティビティからの相関セットの設定

「表6-7 相関セットを割り当てられるアクティビティ(サービス呼出)」に示すアクティビティから,相関セットを設定する手順を次に示します。

  1. 各アクティビティのダイアログの[設定]ボタンをクリックします。
    割当相関セット群ダイアログが表示されます。
  2. アクティビティに割り当てる相関セットを[相関セット群]から選択します。
  3. [相関セット群]にない場合は,[編集]ボタンをクリックします。
  4. 変数・相関セット一覧ダイアログが表示されるので,相関セットを追加します。
  5. 割当相関セット群ダイアログで初期化するかどうかを指定します。

(5) 相関セットを利用した定義の例

相関セットを利用するビジネスプロセスの定義について,例を用いて説明します。

次の図に示すように,申請とその結果を非同期で確認する申請結果確認のリクエストを受け付けるビジネスプロセスを例として利用します。

図6-7 定義するビジネスプロセスの例

[図データ]

上記の図に示したビジネスプロセスを定義する場合の変数,相関セット,および受付アクティビティの定義内容を次に示します。

変数および相関セットの定義
次の表に示すように,利用する変数と相関セットを定義します。変数および相関セットは,[変数・相関セット一覧]ダイアログで定義します。[変数・相関セット一覧]ダイアログについては,「11.4.1 変数・相関セット一覧ダイアログ」を参照してください。

表6-8 申請の要求電文に対応する変数の定義内容(例)

[変数・相関セット一覧]ダイアログ(変数情報の表示)での設定項目設定する値
変数名申請メッセージ
種別messageType
電文フォーマット申請メッセージ.xsd
部分指定部分名申請ID
指定式/req1/id
string

表6-9 申請結果確認の要求電文に対応する変数の定義内容(例)

[変数・相関セット一覧]ダイアログ(変数情報の表示)での設定項目設定する値
変数名申請確認メッセージ
種別messageType
電文フォーマット申請確認メッセージ.xsd
部分指定部分名申請ID
指定式/req2/id
string

表6-10 相関セットの定義内容(例)

[変数・相関セット一覧]ダイアログ(相関セット情報の表示)での設定項目設定する値
相関セット名申請相関ID
取得部利用変数申請メッセージ
部分名申請ID
注※
利用変数には「申請メッセージ」と「申請確認メッセージ」のどちらでも指定できます。
 

受付アクティビティの定義
次の表に示すように,受付アクティビティを定義します。受付アクティビティは受付アクティビティダイアログで定義します。受付アクティビティダイアログについては,「11.4.6 受付アクティビティダイアログ」を参照してください。

表6-11 申請のリクエストを受け付ける受付アクティビティの定義内容(例)

[受付アクティビティ]ダイアログでの設定項目設定する値
アクティビティ名申請受付
オペレーション名request
割当変数申請メッセージ
割当相関セット群相関セット名申請相関ID
初期化yes
通信モデル非同期
インスタンス生成yes

表6-12 申請結果確認のリクエストを受け付ける受付アクティビティの定義内容(例)

[受付アクティビティ]ダイアログでの設定項目設定する値
アクティビティ名確認受付
オペレーション名confirm
割当変数申請確認メッセージ
割当相関セット群相関セット名申請相関ID
初期化no
通信モデル同期
インスタンス生成no