18 他のプロセスおよびサービスとの通信
他のプロセスおよびサービスと通信するビジネス・プロセスを設計する方法を学習します。
18.1 プロセスの入力と出力の定義
操作をBusiness Process Model and Notation (BPMN)プロセスに追加するときは、他のプロセスまたはサービスとの通信に使用できるポイントをプロセス内に定義します。通常、プロセスが他のプロセスまたはサービスと通信するときは、入力が要求され、出力が返されます。
BPMNプロセス操作の定義に使用するフロー・イベントでは、入力引数と出力引数を定義できます。これらの入力引数と出力引数によって、プロセスの入力と出力が定義されます。
18.1.2 メッセージ開始イベントへのデータの関連付けの定義方法
プロセスに入力引数を定義した後は、その内容をプロセス内のデータ・オブジェクトにマップする必要があります。
メッセージ開始イベントにデータ・アソシエーションを定義するには:
- プロセスのメッセージ開始イベントを選択します。
- 開始イベントを右クリックして、「データ・アソシエーション」をクリックします。
- 右側のリストから「出力」の下にリストされたテキスト・ボックスに、データ・オブジェクトをドラッグします。
- 「適用」をクリックします。
18.1.3 プロセスへの出力引数の定義方法
メッセージ終了イベントを含むプロセスを作成するときは、終了イベントごとに出力引数を定義する必要があります。それらはプロセスに対する出力引数になります。
プロセスに出力引数を定義するには:
- メッセージ終了イベントをプロセスに追加します。
- メッセージ終了イベントを右クリックし、「プロパティ」を選択します。
- 「実装」タブをクリックします。
- 「インタフェースの定義」を選択します。
- 「追加」アイコンをクリックします。
- 名前と引数タイプを決定します。
- 「変更の適用」をクリックします。
18.2 送信タスクおよび受信タスクを使用した、プロセス間の通信
送信タスクおよび受信タスクを使用すると、他のBPMNプロセスを起動して、起動したプロセスからメッセージを受信できます。受信タスクによって開始され、送信タスクを含むプロセスは、Oracle Business Process Management (Oracle BPM)アプリケーション内の他のプロセスやサービスから使用できるサービスとして公開されます。
図18-1は、送信タスクおよび受信タスクを使用してプロセスを起動し、レスポンスを受信する場合の基本的な動作の概要を示しています。
次のステップは、送信タスクおよび受信タスクを使用してプロセス間で通信する場合のシナリオの例を示しています。
-
プロセスAが起動されます。
-
プロセスAのトークンが送信タスクに到達します。
-
送信タスクによって、プロセスBが起動されます。
この動作は、送信タスクの実装によって定義されます。
-
プロセスAのトークンは、プロセスの次のフロー・オブジェクトに進みます。
-
受信タスクによって、プロセスBのプロセス・インスタンスが開始されます。
受信タスクには、「インスタンスの作成」プロパティが定義されている必要があります。「受信タスクによるプロセスの開始」を参照してください。
-
新しく作成されたトークンがプロセスBに沿って進みます。
-
プロセスの具体的な動作に応じて、次のシナリオが発生する場合があります。
-
プロセスAのトークンが、プロセスBからの送信タスクとペアになっている受信タスクに到達すると、プロセスAのトークンはレスポンスを受信するまで待機します。
レスポンスを受信した後、プロセスAのトークンは次のフロー・オブジェクトに移動します。
-
プロセスBのトークンが、プロセスA内の受信タスクとペアになっている送信タスクに到達すると、プロセスBはプロセスAにレスポンスを送信します。
プロセスBのトークンは、次のフロー・オブジェクトに移動します。
-
-
両方のプロセスが引き続き実行されます。
この後に、さらに送信タスクと受信タスクのペアを使用して、2つのプロセス間での通信を定義できます。
18.3 メッセージのスロー・イベントおよびキャッチ・イベントを使用した、プロセス間の通信
スロー・イベントとキャッチ・イベントを組み合せて使用することによって、他のBPMNプロセスを起動したり、他のBPMNプロセスと通信できます。
スロー・イベントを使用して他のプロセスを起動する場合は、次の条件を満たしている必要があります。
-
起動されるプロセスは、非同期プロセスである必要があります。
メッセージ・スロー・イベントを使用して同期プロセスを起動することもできますが、起動したプロセスから同期的にメッセージをキャッチするメカニズムは用意されていません。
同期プロセスを起動する場合は、サービス・タスクを使用します。詳細は、サービス・タスクの概要を参照してください。
-
最初にメッセージ・スロー・イベントを使用する場合は、他のプロセスのメッセージ開始イベントとペアにする必要があります。
これは、プロセス・インスタンスをトリガーするために必要となります。インスタンスがトリガーされた後は、2つ目のプロセスによってキャッチされる後続のメッセージ・スロー・イベントを使用できます。
メッセージ開始イベントで開始し、メッセージ終了イベントで終了するプロセスは、Oracle BPMアプリケーション内の他のプロセスやサービスから使用できるサービスとして公開されます。
他のプロセスから起動されたプロセスは、子プロセスであるとはみなされません。このことは、強制終了イベントをプロセスの終了点として使用するプロセスを設計する場合に重要となります。たとえば、コール側プロセスの終了イベントでは、メッセージ・スロー・イベントによって起動されたプロセスは停止しません。
図18-2は、メッセージ・スロー・イベントおよびキャッチ・イベントを使用してプロセスを起動し、レスポンスを受信する場合の基本的な動作を示しています。
次のステップは、メッセージ・スロー・イベントおよびメッセージ・キャッチ・イベントを使用してプロセス間で通信を行う場合のシナリオの例を示しています。
-
プロセスAが起動されます。
-
プロセスAのトークンが、プロセスBを起動するように構成されているメッセージ・スロー・イベントに到達します。
-
メッセージ・スロー・イベントからプロセスBのメッセージ開始イベントにメッセージが送信されます。
-
プロセスAのトークンは、次のフロー・オブジェクトに進みます。
-
メッセージ開始イベントによって、プロセスBのインスタンスがトリガーされます。
-
新しく作成されたトークンがプロセスBに沿って進みます。
-
プロセスの動作に応じて、次のシナリオが発生する場合があります。
-
プロセスAのトークンが、プロセスBからのスロー・イベントとペアになっているキャッチ・イベントに到達すると、プロセスAのトークンはメッセージを受信するまで待機します。
メッセージを受信した後、プロセスAのトークンは次のフロー・オブジェクトに移動します。
-
プロセスBのトークンが、プロセスAのキャッチ・イベントとペアになっているスロー・イベントに到達すると、プロセスBはプロセスAにメッセージをスローします。
プロセスBのトークンは、次のフロー・オブジェクトに移動します。
-
-
両方のプロセスが引き続き実行されます。
この後に、さらにキャッチ・イベントとスロー・イベントのペアを使用して、2つのプロセス間での通信を定義できます。
18.4 会話の定義
複数のプロセス間のメッセージ交換は、会話によってグループ化されます。プロセス間のメッセージ交換をコラボレーションと呼びます。1つのプロジェクト内に複数の会話を定義すると、そのプロジェクト内のプロセス間で再利用できます。
18.4.1 会話の概要
複数のプロセス間のメッセージ交換は、会話によってグループ化されます。プロセス間のメッセージ交換をコラボレーションと呼びます。1つのプロジェクト内に複数の会話を定義すると、そのプロジェクト内のプロセス間で再利用できます。
コラボレーション・ダイアグラムを使用すると、会話における他の参加者とプロセスの相互作用もプロセス・フローに表示できます。
デフォルトでは、BPMプロジェクトに1つの会話が定義されています。複数の会話を定義しない場合は、このデフォルトの会話を使用して、プロジェクト内のプロセス間のすべてのメッセージ交換を収集する必要があります。
プロジェクトごとに定義できるデフォルトの会話は1つのみです。ただし、デフォルトで使用する会話ではなく、別の会話をデフォルトとして使用するようにプロジェクトを変更できます。
様々なタイプの会話を使用すると、プロセスが他のプロセスやサービスとの間で確立できる各種の相互作用を指定できます。次に、各タイプの会話について説明します:
-
インタフェースの定義: 他のサービスやプロセスでBPMNプロセスとの対話のために起動可能な操作の定義に使用します。
-
インタフェースの使用: ビジネス・カタログのコンポーネントからのインタフェースを使用するようにプロセスを構成する場合に使用します。
-
プロセス・コール: 別のBPMNプロセスの起動に使用します。
-
サービス・コール: BPMプロジェクトに定義されているサービスの起動に使用します。
18.4.2 会話の使用
以降の項では、Oracle Business Process Composerを使用して会話を定義および構成する方法について説明します。
18.4.2.1 会話の定義方法
- プロセスを開きます。
- プロセス・エディタ・ツールバーで「会話の編集」ボタンをクリックします。
- 会話の追加ボタンをクリックします。
- 会話の名前を入力します。
- 定義する会話のタイプを選択します。
- 「OK」をクリックします。
18.4.2.2 デフォルトの会話の設定方法
- プロセスを開きます。
- プロセス・エディタ・ツールバーで「会話の編集」ボタンをクリックします。
- リストから会話を選択し、「編集」ボタンをクリックします。
- 「デフォルトの会話」チェック・ボックスをクリックします。
- 「OK」をクリックします。
18.5 サービスの使用
Oracle Business Process Composerでは、ビジネス・カタログに新しいサービスを作成できます。これらのサービスは、標準的なWebサービスに基づきます。
後続の項では、Oracle Business Process Composerを使用してサービスを作成する方法について説明します。