Hitachi

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


5.5.2 相関セットの定義

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

〈この項の構成〉

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

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

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

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

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

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

[図データ]

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

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

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

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

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

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

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

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

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

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

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

アクティビティ

インスタンスの生成

初期化の設定

設定の要否

最大設定数

設定した相関セットの内容

受付

yes

yes

任意

1

プロセスインスタンスを生成するとき,プロセスインスタンスを識別するための相関セットが,変数として定義されている受信メッセージから生成されます。

no

設定不可

no

yes

任意

1

生成済みのプロセスインスタンスを検索したあと,検索されたプロセスインスタンスに対する新たな相関セットが,変数として定義されている受信メッセージから生成されます。

no

必須

1

指定した相関セットは,生成済みのプロセスインスタンスを検索するために,変数として定義されている受信メッセージ内の相関セットとして利用されます。

応答

yes

任意

1

サービスリクエスタに応答を返すとき,変数として定義されている応答メッセージから新たな相関セットが生成されます。

no

任意

1

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

(凡例)

−:該当しません。

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

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

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

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

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

アクティビティ

パターンの設定

初期化の設定

設定の要否

最大設定数

設定した相関セットの内容

サービス呼出

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)(e) 変数の定義情報の変更」を参照してください。

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

注意事項

相関セットの定義情報を変更すると,その相関セットを割り当てた個所に,再度割り当てが必要になる場合があります。

例えば,あるアクティビティに相関セットAを割り当て,その後,その相関セットAの名前を相関セットBに変更した場合,次のどちらかを行ってください。

  • アクティビティへ再度相関セットを割り当てる。

  • 再度相関セットAを定義する。

(c) 相関セットの有効範囲

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

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

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

(d) フォルト処理を定義する場合の相関セット

  • スコープアクティビティにフォルト処理を定義する場合に,フォルトコネクションの接続先のアクティビティに相関セットを定義するときに注意する点を説明します。

    • フォルトコネクションの接続先のアクティビティには,フォルト処理を定義したスコープの外側のスコープで定義された相関セットを定義してください。スコープ内で定義された相関セットは定義できません。

    • フォルトコネクションの接続先のアクティビティに定義した相関セットと,フォルト処理を定義したスコープで定義した相関セットが,同じ名前でないことを確認してください。同じ名前の相関セットが定義されていると,アクティビティ実行時にフォルト処理を定義したスコープの相関セットが使用され,意図しない動作をするおそれがあるためです。

  • 次のアクティビティで同じ相関セットを使用したい場合は,フォルト処理を定義したスコープの外側のスコープで定義された相関セットを使用するよう定義してください。

    • スコープ内に定義したアクティビティ

    • フォルトコネクションの接続先のアクティビティ

(e) 補償処理を定義する場合の相関セット

  • スコープアクティビティに補償処理を定義する場合に,補償コネクションの接続先のアクティビティに相関セットを定義するときに注意する点を説明します。

    • 補償コネクションの接続先のアクティビティには,補償処理を定義したスコープの外側のスコープで定義された相関セットを定義してください。スコープ内で定義された相関セットは定義できません。

    • 補償コネクションの接続先のアクティビティに定義した相関セットと,補償処理を定義したスコープで定義した相関セットが,同じ名前でないことを確認してください。同じ名前の相関セットが定義されていると,アクティビティ実行時に補償処理を定義したスコープの相関セットが使用され,意図しない動作をするおそれがあるためです。

  • スコープの実行が完了すると,スコープに定義された相関セットは無効化されます。そのため,次のアクティビティで同じ相関セットを使用したい場合は,補償処理を定義したスコープの外側のスコープで定義された相関セットを使用するよう定義してください。

    • スコープ内に定義したアクティビティ

    • 補償コネクションの接続先のアクティビティ

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

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

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

  1. 次のどちらかの方法で,変数・相関セット一覧ダイアログを表示します。

    • ビジネスプロセス定義画面のキャンバス上の[変数・相関セット]アイコンをクリックします。

    • 次に示すアクティビティダイアログの[編集]ボタンをクリックします。

      ・受付アクティビティ

      ・応答アクティビティ

      ・サービス呼出アクティビティ

  2. 一覧から「相関セット一覧」を選択します。

  3. 相関セット名を入力します。

  4. [行追加]ボタンをクリックし,[取得部]に利用変数および部分名を追加し,相関セットとして使用する部分を指定します。

    相関セットに指定できるのは,メッセージ型の変数(XML型)で,かつメッセージ型以外の型を指定した部分名です。

    利用するメッセージ型の変数が複数ある場合は,利用変数および部分名をドロップダウンリストから選択します。

    なお,複数の部分を連結して連結後の文字列を相関セット値として設定する場合は,さらに[行追加]ボタンをクリックして利用変数および部分名を追加します。

  5. [追加]ボタンをクリックします。

    相関セット一覧に,追加した相関セットが表示されます。

  6. [OK]ボタンをクリックします。

(b) アクティビティからの相関セットの設定

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

  1. 各アクティビティのダイアログの[設定]ボタンをクリックします。

    割当相関セット群ダイアログが表示されます。

  2. アクティビティに割り当てる相関セットを[相関セット群]から選択します。

  3. [相関セット群]にない場合は,[編集]ボタンをクリックします。

  4. 変数・相関セット一覧ダイアログが表示されるので,相関セットを追加します。

  5. 割当相関セット群ダイアログで初期化するかどうかを指定します。

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

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

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

図5‒10 定義するビジネスプロセスの例

[図データ]

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

変数および相関セットの定義

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

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

[変数・相関セット一覧]ダイアログ(変数情報の表示)での設定項目

設定する値

変数名

申請メッセージ

種別

XML

電文フォーマット

申請メッセージ.xsd

部分指定

部分名

申請ID

指定式

/req1/id

string

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

[変数・相関セット一覧]ダイアログ(変数情報の表示)での設定項目

設定する値

変数名

申請確認メッセージ

種別

XML

電文フォーマット

申請確認メッセージ.xsd

部分指定

部分名

申請ID

指定式

/req2/id

string

表5‒10 相関セットの定義内容(例)

[変数・相関セット一覧]ダイアログ(相関セット情報の表示)での設定項目

設定する値

相関セット名

申請相関ID

取得部

利用変数

申請メッセージ

部分名

申請ID

注※

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

受付アクティビティの定義

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

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

[受付アクティビティ]ダイアログでの設定項目

設定する値

アクティビティ名

申請受付

オペレーション名

request

割当変数

申請メッセージ

割当相関セット群

相関セット名

申請相関ID

初期化

yes

通信モデル

非同期

インスタンス生成

yes

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

[受付アクティビティ]ダイアログでの設定項目

設定する値

アクティビティ名

確認受付

オペレーション名

confirm

割当変数

申請確認メッセージ

割当相関セット群

相関セット名

申請相関ID

初期化

no

通信モデル

同期

インスタンス生成

no