BPEL サービスエンジン実行環境では、相互関係と呼ばれる仕組みが使用され、BPEL プロセスとそのパートナーサービスの間で一般的に発生し、長時間実行される複数のステートフルなメッセージ交換を追跡します。そのような会話でのメッセージは、WSDL ファイル内で定義された 1 つ以上のプロパティーからなる複合値へマップされます。会話の再開を有効にするために、BPEL サービスエンジン実行環境はインバウンドメッセージの内容とそのプロパティー情報を調べて、メッセージの内容を再構築し、そのメッセージに合ったプロセスインスタンスを選択します。
相互関係には、次の用語が適用されます。
相互関係セットを使用して、プロセス要素を定義できます。定義された相互関係セットは、メッセージアクティビティー (呼び出し、返信、および受信) によって使用されます。メッセージアクティビティーは、プロセスとパートナーサービスの間の会話を記述したものです。
呼び出しアクティビティーの相互関係セットは、指定された相互関係セットインスタンス内で検出されたデータと整合するデータがアウトバウンドメッセージに含まれていることを確認するために使用されます。
また、相互関係セット名は、ピック要素のメッセージ時分岐の中でも使用されます。
プロセス内で相互関係を有効にするには、次の 4 つの基本ステップに従います。
相互関係セットは、定義されると、名前属性とプロパティー属性を持ちます。同期呼び出しアクティビティー内の相互関係セットには、追加属性のパターンがあります。この属性は、相互関係セットが要求メッセージと応答メッセージのいずれか、あるいは両方に適用されるのかを指定します。
開始属性 (initiate) は、相互関係セットがメッセージのプロパティー値によって開始されるかどうかを示します。開始属性の値が Yes の場合、相互関係セットはメッセージ内で検出されたプロパティーの値によって開始されます。開始属性がない場合、この属性はデフォルト値の No になります。initiate=No のアクティビティーが、まだ開始されたことのない相互関係セットを使用しようとした場合は、bpws:correlationViolation の障害がスローされます。開始属性の値が Join の場合、アクティビティーは相互関係セットがまだ開始されていなければ、その相互関係セットを開始しようとします。