Oracle® Fusion Middleware Oracle Business Process Managementモデリングおよび実装ガイド 11g リリース1 (11.1.1.7) B61409-07 |
|
前 |
次 |
この章では、相関を使用して他のBPMNプロセスおよびサービスと通信するBPMNプロセスの開発方法について説明します。相関は、ピア・プロセスでメッセージを受信するインスタンスの識別に使用されます。
この章の内容は次のとおりです。
相関を使用すると、インスタンスの状態に基づいてビジネス・プロセスが相互に通信できます。プロセス内のすべてのプロセス・データ・オブジェクトの状態によって、インスタンスの状態が定義されます。
ビジネス・プロセスの相関を定義すると、インスタンスの状態によって他のプロセス内のインスタンスを識別したり、特定のインスタンスにメッセージを送信できます。
たとえば、販売プロセスと、対応する出荷およびメール送信プロセスとの通信に相関を使用できます。顧客が注文を確認すると、出荷プロセスは、注文IDを使用して両方のプロセスのインスタンスを検索するように定義する相関を使用し、出荷およびメール送信プロセスにメッセージを送信します。
相関を初期化すると、サービス・エンジンがインスタンスのローカライズにこの値を使用するため、値を変更できなくなります。相関に新しい値を割り当てようとすると、相関違反エラーが発生します。
フロー・オブジェクトの複数の相関を定義および初期化できます。メッセージを送信するフロー・オブジェクトは、フロー・オブジェクト用に定義された1つのみまたはすべての相関を使用できます。すべての既存の相関を使用する場合は、メッセージとともに送信するすべての値で同一インスタンスが識別される必要があります。
サービス・タスクなどのいくつかのフロー・オブジェクトは、2つのタイプの相関(入力および出力)を定義します。このような場合、同じアクティビティで相関を初期化して使用できます。
相関のスコープは、相関が定義されているプロセスまたはサブプロセスのインスタンスです。マルチインスタンス・ループ状態のサブプロセスの場合、相関のスコープはマルチインスタンス・サブプロセスの各インスタンスです。
次の一覧で、相関の様々なコンポーネントについて説明します。
相関定義
フロー・オブジェクト用に定義された相関キーのセットが含まれています。
相関キー
相関で使用するプロパティを定義します。相関キーを定義する場合は、識別するための名前を指定します。相関キーのスコープはプロジェクトであるため、相関キーを定義した後は、プロジェクト内のフロー・オブジェクトの相関定義にそれを使用できようになります。
BPMプロジェクトにBPELプロセスが含まれる場合は、BPELプロセスで定義された相関キーがBPMプロジェクト内での再利用のために自動的に表示されます。
相関プロパティ
プロパティは、注文ID、顧客名、社会保障番号など、プロセス内の非常に典型的な属性の抽象概念です。プロパティには、属性およびデータ型を識別するための名前が含まれています。プロパティは、基本のデータ型のみをサポートします。
相関プロパティ・エイリアス
式を使用して相関プロパティに値を割り当てる方法を定義できます。アクティビティの引数および事前定義済変数を使用して、相関プロパティ・エイリアスに値を割り当てることができます。
次のワークフローでは、相関を使用して相互に通信するビジネス・プロセスを含むプロジェクトを設計する際に実行する一般的な手順を説明します。
相互に通信するプロセスを設計します。
コール側プロセスで、他のプロセスにメッセージを送信するフロー・オブジェクトを追加します。
メッセージを送信するフロー・オブジェクトの相関を定義し、プロパティ・エイリアスを開始するように構成します。
相関を定義する方法の詳細は、22.4項「BPMN要素の相関の定義」を参照してください。
起動されたプロセスで、メッセージを受信するフロー・オブジェクトを追加します。
定義した相関を使用してプロパティ・エイリアスに値を割り当てるように、メッセージを受信するフロー・オブジェクトを構成します。
相関を定義する方法の詳細は、22.4項「BPMN要素の相関の定義」を参照してください。
ビジネス・プロセスの通信に使用する次のBPMNフロー・オブジェクトの相関を定義できます。
メッセージ・イベント
送信タスクおよび受信タスク
シグナル・イベント
1つのフロー・オブジェクトに対して複数の相関を定義できます。メッセージを送信するフロー・オブジェクトでは、相関を1つのみ使用するかすべて使用するかを選択できます。後者の場合、相関の起動に使用する値によって、同一インスタンスが識別されます。
フロー・オブジェクトのプロパティの定義中に、相関を定義できます。Studioには、簡易モードおよび拡張モードという、相関を定義するための2つのモードがあります。含まれるプロパティが1つのみの相関を定義する場合は、簡易モードを使用します。定義する相関に、それぞれ複数のプロパティを持つ複数の相関キーが含まれる場合は、拡張モードを使用します。
フロー・オブジェクトの相関を定義するには:
BPMN要素を右クリックします。
「プロパティ」ダイアログが表示されます。
「実装」タブをクリックします。
「相関」リンクをクリックします。
「相関定義」ダイアログが表示されます。
次のモードのいずれかを使用して相関を定義します。
簡易モード: 22.4.2項「簡易モードを使用して相関を定義する方法」の手順に従ってください。
拡張モード: 22.4.3項「拡張モードを使用して相関を定義する方法」の手順に従ってください。
簡易モードを使用すると、含まれるプロパティが1つのみの相関を定義できます。このモードでは、そのプロパティ用に定義される情報に基づいて相関部分を自動的に作成することで、相関の定義を簡略化します。
簡易モードを使用して相関を定義するには:
「プロパティ」リストから、プロパティを選択します。
「プロパティ」リストが空白の場合は、次の手順で新しいプロパティを作成します。
「プロパティ」リストの隣にある「新規」ボタンをクリックします。
名前を入力します。
タイプを選択します。
使用可能なタイプは、「文字列」、「整数」、「実数」、「小数」、ブール、「時間」です。
BPMN要素で相関の値を開始する場合は、「開始」を選択します。
「相関プロパティ・エイリアス」テキスト・ボックスで、相関プロパティに値を割り当てるための式を定義します。
複雑な式を定義するには、「相関プロパティ・エイリアス」テキスト・ボックスの隣にある「式ビルダー」ボタンをクリックします。詳細は、次を参照してください ...
「OK」をクリックします。
拡張モードを使用すると、複数の相関プロパティを持つ複数の相関キーを定義できます。
拡張モードを使用して相関を定義するには:
「相関定義」ダイアログで、「拡張モードに切替え」をクリックします。
「相関キー」表が表示されます。
各相関キーに、相関を追加する手順は次のとおりです。
「追加」ボタンをクリックします。
「相関キーの作成」ダイアログが表示されます。
既存の相関キーを選択するか、「新規相関キー」ボタンをクリックして新しい相関キーを作成します。
新しい相関キーを定義する方法の詳細は、22.5.2項「相関キーを構成する方法」を参照してください。
BPMN要素で相関の値を開始する場合は、「開始」を選択します。
「OK」をクリックします。
「相関プロパティ・エイリアス」セクションで、表示された各プロパティに対して、相関プロパティに値を割り当てる式を定義します。
複雑な式を定義するには、プロパティ・テキスト・ボックスの隣にある「式ビルダー」ボタンをクリックします。詳細は、次を参照してください ...
「OK」をクリックします。
「相関定義」ダイアログが閉じて、「相関」アイコンがカラーで表示されます。
プロジェクト・レベルで相関キーを定義すると、プロジェクト内のプロセスで相関キーを再利用できます。また、相関キーを使用するフロー・オブジェクトを追加する前に、相関キーの作成を決定することもできます。両方の場合とも、「構造」ビューから相関キーを作成する必要があります。
プロジェクト・レベルで相関キーを作成すると、後でフロー・オブジェクトの相関を定義する際にその相関キーを使用できます。
相関キーを作成するには:
ビジネス・プロセスを選択します。
「構造」ビューを開きます。
「構造」ビューの「相関」ノードを展開します。
「相関キー」ノードを右クリックします。
「新規」を選択します。
「相関キーの作成」ダイアログが表示されます。
定義する相関キーを構成するプロパティを構成できます。
相関キーを構成するには:
相関名を入力します。
「相関プロパティ」リストが空白の場合や相関に使用するプロパティが定義されていない場合は、新しい相関プロパティを定義する必要があります。相関プロパティを定義する手順は次のとおりです。
「新規」ボタンをクリックします。
「相関プロパティの作成」ダイアログが表示されます。
相関プロパティの名前を入力します。
タイプを選択します。
使用可能なタイプは、「文字列」、「整数」、「実数」、「小数」、ブール、「時間」です。
「OK」をクリックします。
相関を定義する相関プロパティを選択します。
「相関プロパティ」リストから、相関に含めるプロパティを選択します。
「選択」ボタンをクリックします。
選択したプロパティが、「選択済」リストに表示されます。
「OK」をクリックします。