Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編

[目次][用語][索引][前へ][次へ]

5.5.2 相関セットの定義

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

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

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

ビジネスプロセスは,受付アクティビティダイアログの[インスタンス生成]に[yes]を指定した受付アクティビティへの要求ごとに,プロセスインスタンスを生成します。

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

例えば,あるビジネスプロセスに,サービスリクエスタからの要求を受け付ける受付アクティビティが2つ定義されているとします。1つ目の受付アクティビティへ要求を行い,2つ目の受付アクティビティでビジネスプロセスが待ち受け状態になっている場合,1つ目の受付アクティビティへの要求電文に含まれる相関セットの値と同じ値を2つ目の受付アクティビティへの要求電文に含めます。相関セットに同じ値を指定することで,2つの要求が同じプロセスインスタンスへのリクエストであると特定できます。これによって,2つ目の受付アクティビティ以降の処理を継続できます。

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

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

[図データ]

複数の受付アクティビティがあるビジネスプロセスを実現するには,要求電文に含まれる値のうち,どの値を相関セットに使用するかをビジネスプロセスに定義する必要があります。ビジネスプロセスおよびサービスリクエスタを設計するときに,プロセスインスタンスを一意に特定するキーとなる値をサービスリクエスタからの要求電文に設定してください。

相関セットは,要求電文に含まれる1つの部分または複数の部分の連結によって構成することができます。

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

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

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

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

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

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

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

受付アクティビティダイアログについては,マニュアル「サービスプラットフォーム リファレンス」の「1.4.7 受付アクティビティダイアログ」を参照してください。割当相関セット群ダイアログについては,マニュアル「サービスプラットフォーム リファレンス」の「1.4.3 割当相関セット群ダイアログ」を参照してください。

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

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

(凡例)
−:該当しません。

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

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

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

割当相関セット群ダイアログの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「1.4.3 割当相関セット群ダイアログ」を参照してください。

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

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

送信時
サービス部品にメッセージを送信するとき,変数として定義されている送信メッセージから新たな相関セットが生成されます。

受信時
サービス部品から応答を受けたとき,変数として定義されている応答メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。
no 任意 1

送信時
サービス部品にメッセージを送信するとき,変数として定義されている送信メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。

受信時
サービス部品から応答を受けたとき,変数として定義されている応答メッセージ内の相関セットの値と,プロセスインスタンスの相関セットの値とが一致しているかどうかがチェックされます。

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

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

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

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

相関セットの定義情報は必要に応じて変更または削除できます。

相関セットの定義で使用されている変数の定義情報を変更する場合の注意事項については,「5.5.1(5)(d) 変数の定義情報の変更」を参照してください。

ビジネスプロセスをバージョンアップしたあとに相関セットを変更する場合は注意が必要です。詳細は,「5.9.4(3) ビジネスプロセスのバージョンアップ時の注意事項」を参照してください。

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

ビジネスプロセスのグローバル変数で相関セットが宣言されている場合,該当するプロセスインスタンスの処理が完了するまでの間が有効範囲となります。

また,スコープ内のアクティビティで使用する相関セットを宣言している場合,該当するスコープ内の処理が完了するまでの間が有効範囲となります。

処理が完了した時点で相関セットは無効となります。

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

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

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

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

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

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

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

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

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

図5-9 定義するビジネスプロセスの例

[図データ]

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

変数および相関セットの定義
次の表に示すように,利用する変数と相関セットを定義します。変数および相関セットは,[変数・相関セット一覧]ダイアログで定義します。[変数・相関セット一覧]ダイアログについては,マニュアル「サービスプラットフォーム リファレンス」の「1.4.1 変数・相関セット一覧ダイアログ」を参照してください。

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

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

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

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

表5-9 相関セットの定義内容(例)

[変数・相関セット一覧]ダイアログ(相関セット情報の表示)での設定項目 設定する値
相関セット名 申請相関ID
取得部 利用変数 申請メッセージ
部分名 申請ID

注※
利用変数には「申請メッセージ」と「申請確認メッセージ」のどちらでも指定できます。
 

受付アクティビティの定義
次の表に示すように,受付アクティビティを定義します。受付アクティビティは受付アクティビティダイアログで定義します。受付アクティビティダイアログについては,マニュアル「サービスプラットフォーム リファレンス」の「1.4.7 受付アクティビティダイアログ」を参照してください。

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

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

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

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