ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Business Process Managementモデリングおよび実装ガイド
11g リリース1(11.1.1)
B61409-01
  目次へ移動
目次

前
 
次
 

19 他のBPMNプロセスおよびサービスとの通信

この章では、他のBPMNプロセスおよびサービスと通信するBPMNプロセスの開発方法を説明します。他のプロセスまたはサービスを起動し、複数のプロセスにメッセージをブロードキャストし、特定のブロードキャスト・メッセージを待機するようにプロセスを構成する方法を説明します。

この章の内容は次のとおりです。

19.1 他のBPMNプロセスおよびサービスとの通信の概要

Oracle BPMでは、BPMNプロセスが他のプロセスまたはサービスと通信するために、次の手段が用意されています。

19.1.1 同期および非同期操作の概要

メッセージ・イベント、送信および受信タスク、およびサービス・タスクは、操作を使用して他のBPMNプロセスまたはサービスと通信します。これらの操作は同期または非同期のいずれをも使用できます。

同期および非同期操作の主な相違点は、起動時の反応の方法です。

同期操作を起動する際、メッセージを送信し、レスポンスを待ってからプロセス・フローを続行します。

非同期操作を起動する際、メッセージを送信しますが、応答を待たずにプロセス・フローを続行します。非同期操作はメッセージを受信したら実行を開始します。非同期操作の応答は、コールバック操作を起動することによって取得できます。非同期操作の実行が完了する前にコールバック操作を起動した場合、応答を受信する前に非同期操作が完了するまで待機する必要があります。

メッセージ・イベントと送信および受信タスクでは、操作を対応するコールバックに関連付ける方法を指定する必要があります。会話を使用すると、1つ以上の操作をそのコールバックとともにグループ化できます。会話により、BPMNプロセスへのアクセスに使用する複数の操作を定義できます。

19.2 メッセージ・イベントを使用した他のBPMNプロセスおよびサービスとの通信

メッセージ・イベントを使用すると、プロジェクト内の他のBPMNプロセスおよびサービスと通信できます。

メッセージ・イベントは次の場合に使用できます。


注意:

送信タスクおよび受信タスクでは、メッセージ・スロー・イベントおよびメッセージ・キャッチ・イベントと同様の機能が実行されます。ただし、これらを1つのプロセス内で混在させないことをお薦めします。

異なるメッセージ・イベントの実装は、イベントのタイプと、会話内でのその役割によって異なります。表19-1で、メッセージ・イベントの様々な実装を説明します。

表19-1 メッセージ・イベントの実装

イベント 会話の開始 会話の継続

メッセージ開始

  • 操作のインタフェースの定義

  • ビジネス・カタログのインタフェースの使用

使用不可

メッセージ・スロー

  • サービスの起動

  • BPMNプロセスの起動

インタフェースを定義する開始イベントまたはキャッチ・イベントを継続する場合:

  • 非同期操作のコールバック・インタフェースを定義します。

  • 同期操作の出力を定義します。

  • 同期操作の例外を定義します。

サービスまたはBPMNプロセスを起動するメッセージ・スローを続行する場合:

  • 継続するのと同じサービスまたはBPMNプロセスから操作を起動します。

メッセージ・キャッチ

  • 操作のインタフェースの定義

  • ビジネス・カタログのインタフェースの使用

インタフェースを定義する開始イベントまたはキャッチ・イベントを継続する場合:

  • イニシエータ・イベントのインタフェースの使用

  • 操作のインタフェースの定義

サービスまたはBPMNプロセスを起動するスロー・イベントを続行する場合:

  • サービスまたはBPMNプロセスのコールバックを起動します。

メッセージ終了

使用不可

インタフェースを定義する開始イベントまたはキャッチ・イベントを継続する場合:

  • 非同期操作のコールバックの定義

  • 同期操作の出力を定義します。

  • 同期操作の例外を定義します。

サービスまたはBPMNプロセスを起動するスロー・イベントを続行する場合:

  • 継続するのと同じサービスまたはBPMNプロセスから操作を起動します。


19.3 メッセージ・イベントを使用した非同期サービスおよび非同期BPMNプロセスの起動

メッセージ・イベントを使用て、非同期サービスおよび非同期BPMNプロセスを起動できます。

サービスまたはBPMNプロセスから非同期操作を起動する場合、会話を開始するよう構成された中間スロー・メッセージ・イベントを使用する必要があります。

BPMNサービス・エンジンがメッセージ・スロー・イベントを実行する際、次のものに基づいてXMLメッセージを作成します。

その後、XMLメッセージをサービスまたはBPMNプロセスに送信し、プロセス・フローの残りの実行を継続します。非同期サービスまたはBPMプロセスが応答するのを待機しません。

非同期サービスまたはBPMNプロセスはメッセージを受信し、リクエストされた操作を実行します。完了すると、起動元のBPMNプロセスに操作の結果のメッセージを送信します。

非同期操作を起動したBPMNプロセスは、結果を取得するのに、コールバック操作を待機する必要があります。BPMNプロセスは、コールバック操作を待機するメッセージ・キャッチ・イベントを定義する必要があります。このメッセージ・キャッチ・イベントは会話を継続させ、操作を起動したメッセージ・スロー・イベントをイニシエータ・イベントとして使用します。

トークンがメッセージ・キャッチ・イベントに到達すると、非同期プロセスが完了していれば即時応答を受信できますが、そうでなければ応答を取得するのに非同期プロセスが完了するまで待機する必要があります。

図19-1 メッセージ・イベントを使用した非同期サービスまたはBPMNプロセスの起動

図19-1の説明が続きます
「図19-1 メッセージ・イベントを使用した非同期サービスまたはBPMNプロセスの起動」の説明

19.3.1 メッセージ・イベントを使用した非同期サービス操作の起動方法

メッセージ・イベントを使用して非同期サービス操作を起動できます。

メッセージ・イベントを使用して非同期サービス操作を起動するには:

  1. 非同期サービス操作を起動するBPMプロセスを編集します。

  2. プロセス中の非同期サービス操作を起動する場所を決定します。

  3. プロセス中の決定した場所にメッセージ・スロー・イベントを追加します。

  4. メッセージ・スロー・イベントを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「会話」セクションで「開始」を選択します。

  8. 「プロパティ」セクションで、「実装」リストから「サービス・コール」を選択します。

    選択したサービスは非同期サービスである必要があります。

  9. 「名前」フィールドの隣の「参照」ボタンをクリックします。

    「タイプ」ダイアログが表示されます。

  10. 起動する非同期サービスを選択します。

  11. 「OK」をクリックします。

  12. 「操作」リストで、非同期サービスから起動する操作を選択します。

  13. 非同期サービスが引数を必要とする場合、メッセージ・スロー・イベントのデータ・アソシエーションを構成します。

    データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。

  14. 「OK」をクリックします。

  15. 19.3.2項「メッセージ・イベントを使用した非同期サービスのコールバック操作の受信方法」の手順を実行し、非同期プロセスのコールバック操作を起動します。

19.3.2 メッセージ・イベントを使用した非同期サービスのコールバック操作の受信方法

メッセージ・イベントを使用して、非同期操作とペアになるコールバック操作を受信できます。

メッセージ・イベントを使用した非同期サービスのコールバック操作を受信するには:

  1. 非同期サービスのコールバックを受信するBPMプロセスを編集します。

  2. プロセス中の非同期サービスのコールバック操作を受信する場所を決定します。

  3. プロセス中の決定した場所にメッセージ・キャッチ・イベントを追加します。

  4. メッセージ・キャッチ・イベントを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「会話」セクションで「続行」を選択します。

    「プロパティ」セクションが変更され、「イニシエータ・ノード」リストが表示されます。

  8. 「イニシエータ・ノード」リストで、非同期サービスを起動するプロセス中のアクティビティを選択します。

    「プロパティ」セクションの内容が変更され、「名前」フィールドおよび「操作」リストが表示されます。「名前」フィールドには、イニシエータ・イベントが起動する操作に対応する非同期サービスが表示されます。

  9. 「OK」をクリックします。

    「タイプ」ダイアログが閉じ、メッセージ・キャッチ・イベントのプロパティ・ダイアログに、「名前」フィールドで選択したサービスが表示されます。

  10. 「操作」リストから、受信するコールバック操作を選択します。

  11. 非同期サービスが引数を必要とする場合、メッセージ・スロー・イベントのデータ・アソシエーションを構成します。

    データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。

  12. 「OK」をクリックします。

19.3.3 メッセージ・イベントを使用した非同期サービス操作の起動時に行われる処理

メッセージ・スロー・イベントを使用して非同期サービス操作を起動する際、BPMNサービス・エンジンはサービスが応答するまで待機しません。メッセージ・スロー・イベントに続くフロー・オブジェクトの実行を継続します。

BPMNプロセスは、メッセージ・キャッチ・イベントを使用してサービス・コールバック操作を起動することにより、非同期サービスのレスポンスを取得できます。

サービスの実行が完了した後も、BPMNプロセスはメッセージ・キャッチ・イベントを使用してコールバック操作を起動するまでサービス・レスポンスを受信しません。

BPMNサービス・エンジンがメッセージ・キャッチ・イベントを実行する間もサービスがまだ実行中であれば、エンジンは、トークンをプロセス中の次のフロー・オブジェクトに渡す前に、サービス操作が完了するまで待機します。

19.3.4 メッセージ・イベントを使用した非同期BPMNプロセス操作の起動方法

メッセージ・イベントを使用して非同期BPMNプロセスのノードを起動できます。

メッセージ・イベントを使用して非同期BPMNプロセス操作を起動するには:

  1. 非同期BPMNプロセスを起動するBPMプロセスを編集します。

  2. プロセス中の非同期BPMNプロセスを起動する場所を決定します。

  3. プロセス中の決定した場所にメッセージ・スロー・イベントを追加します。

  4. メッセージ・スロー・イベントを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「会話」セクションで、「開始」を選択します。

  8. 「プロパティ」セクションで、「実装」リストから「プロセス・コール」を選択します。

  9. 「プロセス」フィールドの隣の「参照」ボタンをクリックします。

    「タイプ」ダイアログが表示されます。

  10. 起動する非同期BPMNプロセスを選択します。

  11. 「OK」をクリックします。

  12. 「ノード」リストで、非同期BPMNプロセスからノードを選択します。

  13. 非同期BPMNプロセスが引数を必要とする場合、メッセージ・スロー・イベントのデータ・アソシエーションを構成します。

    データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。

  14. 「OK」をクリックします。

  15. 19.3.5項「メッセージ・イベントを使用した非同期BPMNプロセスのコールバック操作の起動方法」の手順を実行し、非同期プロセスのコールバック操作を起動します。

19.3.5 メッセージ・イベントを使用した非同期BPMNプロセスのコールバック操作の起動方法

メッセージ・イベントを使用して、BPMNプロセスの非同期ノードとペアになるコールバック操作を起動できます。

メッセージ・イベントを使用した非同期BPMNプロセスのコールバック操作を起動するには:

  1. 非同期BPMNプロセスのコールバックを起動するBPMプロセスを編集します。

  2. プロセス中の非同期BPMNプロセスのコールバック操作を起動する場所を決定します。

  3. プロセス中の決定した場所にメッセージ・キャッチ・イベントを追加します。

  4. メッセージ・キャッチ・イベントを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「会話」セクションで「続行」を選択します。

    「プロパティ」セクションが変更され、「イニシエータ・ノード」リストが表示されます。

  8. 「イニシエータ・ノード」リストで、非同期プロセスを起動するプロセス中のアクティビティを選択します。

    「プロパティ」セクションの内容が変更され、「プロセス」フィールドおよび「ノード」リストが表示されます。「プロセス」フィールドには、イニシエータ・イベントが起動するノードの名前が表示されます。

  9. 「OK」をクリックします。

    「タイプ」ダイアログが閉じ、メッセージ・キャッチ・イベントのプロパティ・ダイアログに、「名前」フィールドで選択したサービスが表示されます。

  10. 「ノード」リストから、起動するコールバック操作を選択します。

  11. 非同期BPMNプロセスが引数を必要とする場合、メッセージ・スロー・イベントのデータ・アソシエーションを構成します。

    データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。

  12. 「OK」をクリックします。

19.3.6 メッセージ・イベントを使用した非同期BPMNプロセスの起動時に行われる処理

メッセージ・スロー・イベントを使用して非同期BPMNプロセスを起動する際、BPMNサービス・エンジンはBPMNプロセスが応答するまで待機しません。メッセージ・スロー・イベントに続くフロー・オブジェクトの実行を継続します。

起動するBPMNプロセスは、メッセージ・キャッチ・イベントを使用してサービス・コールバック操作を起動することにより、非同期BPMNプロセスのレスポンスを取得できます。

非同期BPMNプロセスの実行が完了した後も、起動するBPMNプロセスは、非同期BPMNプロセスからメッセージを受信するメッセージ・キャッチ・イベントに到達するまでレスポンスを受信しません。

BPMNサービス・エンジンがメッセージ・キャッチ・イベントを実行する間も非同期BPMNプロセスがまだ実行中であれば、エンジンは、トークンをプロセス中の次のフロー・オブジェクトに渡す前に、非同期BPMNプロセスが完了するまで待機します。

19.4 境界イベントとして構成されたメッセージ・イベントの使用

境界イベントとして構成されたメッセージ・キャッチ・イベントを使用して、アクティビティが実行している間、イベントを待機させられます。アクティビティの実行が完了した後にメッセージを受信すると、イベントはトリガーされません。

境界メッセージ・キャッチ・イベントは、連続しないイベントまたは連続するイベントとして構成できます。

連続しない境界メッセージ・キャッチ・イベントは、予期したメッセージが到着すると、アクティビティの実行を停止します。次に、エンジンにより、メッセージ・キャッチ・イベントに対して定義されたフローの実行が開始されます。連続しない境界メッセージ・キャッチ・イベントに対して定義されたフローにより、メイン・プロセス・フローを再開することが可能です。

連続する境界キャッチ・イベントは、現在のアクティビティの実行を停止しません。予期したメッセージが到着すると、現在のアクティビティとパラレルに、エンジンによってメッセージ・キャッチ・イベントに対して定義されたフローの実行が開始されます。連続する境界メッセージ・キャッチ・イベントに対して定義されたフローでは、メイン・プロセス・フローを再開できません。

19.5 サービス・タスクを使用したサービスおよびBPMNプロセスの同期操作の起動

サービス・タスクを使用して、サービスおよびBPMNプロセスで同期操作を起動できます。

BPMNサービス・エンジンがサービス・タスクを実行する際、サービス・タスクで指定された操作を起動し、レスポンスを待機します。同期サービスまたはBPMNプロセスからレスポンスを受信するまで、BPMNサービス・エンジンはトークンを次のアクティビティに移動しません。

サービス・タスクから使用できるサービスには、同期操作を公開するBPELプロセス、SOAメディエータおよびSOAアダプタが含まれます。また、サービス・タスクを使用して、同期操作を公開する他のBPMNプロセスも起動できます。

BPMNプロセスで同期操作を定義する方法は、20.4項「メッセージ・イベントを使用した、BPMNプロセス・インタフェースの同期操作の定義」または20.8項「送信および受信タスクを使用した、BPMNプロセスでの同期操作の定義」を参照してください。

図19-2 サービス・タスクを使用した同期BPMNプロセスまたはサービスの起動

図19-2の説明が続きます
「図19-2 サービス・タスクを使用した同期BPMNプロセスまたはサービスの起動」の説明

19.5.1 サービス・タスクを使用した同期サービス操作の起動方法

同期サービス操作を起動するには、サービス・タスクを使用する必要があります。

サービス・タスクを使用して同期サービス操作を起動するには:

  1. BPMNプロセスを編集します。

  2. プロセス中の同期サービス操作を起動する場所を決定します。

  3. プロセス中の決定した場所にサービス・タスクを追加します。

  4. サービス・タスクを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「サービス・タスク」セクションで「サービス」を選択します。

  8. 「名前」フィールドの隣の「参照」ボタンをクリックします。

    「タイプ」ダイアログが表示されます。

  9. 起動する同期サービスを選択します。

  10. 「OK」をクリックします。

  11. 「操作」リストで、同期サービスから起動する操作を選択します。

  12. 同期サービスが入力データを必要とするか、出力データを返す場合、サービス・タスクのデータ・アソシエーションを構成して、プロジェクト内のデータ・オブジェクトがどのようにこのデータにマッピングされるかを指定する必要があります。

    データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。

  13. 「OK」をクリックします。

19.5.2 サービス・タスクを使用した同期サービス操作の起動時に行われる処理

BPMNサービス・エンジンがサービス・タスクを実行する際、サービスが応答するまで待機してからプロセス・フローを続行します。サービスの実行が完了すると、レスポンスをサービス・タスクに送信します。

サービス操作が出力データを返す場合、このデータは、サービス・タスクのデータ・アソシエーションを使用してプロジェクト内のデータ・オブジェクトにマッピングされます。

19.5.3 サービス・タスクを使用した同期BPMNプロセス操作の起動方法

同期BPMNプロセス操作を起動するには、サービス・タスクを使用する必要があります。

サービス・タスクを使用して同期BPMNプロセス操作を起動するには:

  1. BPMNプロセスを編集します。

  2. プロセス中の同期BPMNプロセスを起動する場所を決定します。

  3. プロセス中の決定した場所にサービス・タスクを追加します。

  4. サービス・タスクを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「サービス・タスク」セクションで「プロセス」を選択します。

  8. 「プロセス」フィールドの隣の「参照」ボタンをクリックします。

    「タイプ」ダイアログが表示されます。

  9. 起動する同期サービスを選択します。

  10. 「OK」をクリックします。

  11. 「ノード」リストで、同期BPMNプロセスから起動するイベントまたはアクティビティを選択します。

  12. 同期BPMNプロセスが入力データを必要とするか、出力データを返す場合、サービス・タスクのデータ・アソシエーションを構成して、プロジェクト内のデータ・オブジェクトがどのようにこのデータにマッピングされるかを指定する必要があります。

    データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。

  13. 「OK」をクリックします。

19.5.4 サービス・タスクを使用した同期BPMNプロセス操作の起動時に行われる処理

BPMNサービス・エンジンがサービス・タスクを実行する際、同期BPMNプロセスが応答するまで待機してからプロセス・フローを続行します。同期BPMNプロセスの実行が完了すると、レスポンスをサービス・タスクに送信します。

同期BPMNプロセスが出力データを返す場合、このデータは、サービス・タスクのデータ・アソシエーションを使用してプロジェクト内のデータ・オブジェクトにマッピングされます。

19.6 送信および受信タスクを使用した他のBPMNプロセスおよびサービスとの通信

送信および受信タスクを使用すると、プロジェクト内の他のBPMNプロセスおよびサービスと通信できます。

メッセージ・イベントと送信および受信タスクとの唯一の違いは、送信および受信タスクには境界イベントを追加できる点です。非同期サービスを起動し、境界として構成されたタイマー・イベントを使用して期限を追加する場合、メッセージ・イベントではなく送信および受信タスクを使用する必要があります。

送信および受信タスクは次の場合に使用できます。

プロセスの開始操作を定義するために受信タスクを使用する場合、None開始イベントの後に置き、インスタンスを作成するよう構成する必要があります。

異なるメッセージ・イベントの実装は、イベントのタイプと、会話内でのその役割によって異なります。表19-1で、メッセージ・イベントの様々な実装を説明します。


注意:

送信タスクおよび受信タスクでは、メッセージ・スロー・イベントおよびメッセージ・キャッチ・イベントと同様の機能が実行されます。ただし、これらを1つのプロセス内で混在させないことをお薦めします。

表19-2 送信および受信タスクの実装

タスク 会話の開始 会話の継続

送信タスク

  • サービスの起動

  • BPMNプロセスの起動

インタフェースを定義する受信タスクを続行する場合:

  • 非同期操作のコールバック・インタフェースを定義します。

  • 同期操作の出力を定義します。

  • 同期操作の例外を定義します。

受信タスク

  • 操作のインタフェースの定義

  • ビジネス・カタログのインタフェースの使用

インタフェースを定義する受信タスクを続行する場合:

  • 継続する受信タスクのインタフェースを使用します。

  • 操作のインタフェースの定義

サービスまたはBPMNプロセスを起動する送信タスクを続行する場合:

  • サービスまたはBPMNプロセスのコールバックを起動します。


19.7 送信および受信タスクを使用した非同期サービスおよび非同期BPMNプロセスの起動

送信および受信タスクを使用して、サービスおよびBPMNプロセスで非同期操作を起動できます。

サービスまたはBPMNプロセスから非同期操作を起動する場合、会話を開始するよう構成された送信タスクを使用する必要があります。

BPMNサービス・エンジンが送信タスクを実行する際、次のものに基づいてXMLメッセージを作成します。

その後、XMLメッセージをサービスまたはBPMNプロセスに送信し、プロセス・フローの残りの実行を継続します。非同期サービスまたはBPMプロセスが応答するのを待機しません。

非同期サービスまたはBPMNプロセスはメッセージを受信し、リクエストされた操作を実行します。完了すると、起動元のBPMNプロセスに操作の結果のメッセージを送信します。

非同期操作を起動したBPMNプロセスは、結果を取得するために、コールバック操作を起動する必要があります。コールバック操作を起動すると、非同期プロセスが完了していれば即時応答を受信できますが、そうでなければ応答を取得するのに非同期プロセスが完了するまで待機する必要があります。

図19-3 送信および受信タスクを使用した非同期サービスまたはBPMNプロセスの起動

図19-3の説明が続きます
「図19-3 送信および受信タスクを使用した非同期サービスまたはBPMNプロセスの起動」の説明

19.7.1 送信タスクを使用した非同期サービス操作の起動方法

送信タスクを使用して非同期サービス操作を起動できます。

送信タスクを使用して非同期サービス操作を起動するには:

  1. 非同期サービスを起動するBPMプロセスを編集します。

  2. プロセス中の非同期サービスを起動する場所を決定します。

  3. プロセス中の決定した場所に送信タスクを追加します。

  4. 送信タスクを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「会話」セクションで「開始」を選択します。

  8. 「プロパティ」セクションで、「実装」リストから「サービス・コール」を選択します。

  9. 「名前」フィールドの隣の「参照」ボタンをクリックします。

    「タイプ」ダイアログが表示されます。

  10. 起動する非同期サービスを選択します。

  11. 「OK」をクリックします。

  12. 「操作」リストで、非同期サービスから起動する操作を選択します。

  13. 非同期サービスが入力データを必要とする場合、送信タスクのデータ・アソシエーションを構成して、プロジェクト内のデータ・オブジェクトがどのようにこの入力データにマッピングされるかを指定する必要があります。

    データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。

  14. 「OK」をクリックします。

  15. 19.7.2項「受信タスクを使用した非同期サービスのコールバック操作の起動方法」の手順を実行し、非同期プロセスのコールバック操作を起動します。

19.7.2 受信タスクを使用した非同期サービスのコールバック操作の起動方法

受信タスクを使用して、非同期サービス操作とペアになるコールバック操作を起動できます。

非同期サービスのコールバック操作を起動するには:

  1. 非同期サービスのコールバックを起動するBPMプロセスを編集します。

  2. プロセス中の非同期サービスのコールバック操作を起動する場所を決定します。

  3. プロセス中の決定した場所に受信タスクを追加します。

  4. 受信タスクを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「会話」セクションで「続行」を選択します。

    「プロパティ」セクションが変更され、「イニシエータ・ノード」リストが表示されます。

  8. 「イニシエータ・ノード」リストで、非同期サービスを起動するプロセス中のアクティビティを選択します。

    「プロパティ」セクションの内容が変更され、「名前」フィールドおよび「操作」リストが表示されます。

  9. 「名前」フィールドの隣の「参照」ボタンをクリックして非同期プロセスを選択します。

    「タイプ」ダイアログが表示されます。

  10. コールバックを起動する非同期サービスを選択します。

  11. 「OK」をクリックします。

    「タイプ」ダイアログが閉じ、受信タスクのプロパティ・ダイアログに、「名前」フィールドで選択したサービスが表示されます。

  12. 「操作」リストから、起動するコールバック操作を選択します。

  13. コールバック操作が入力データを必要とする場合、受信タスクのデータ・アソシエーションを構成して、プロジェクト内のデータ・オブジェクトがどのようにこの入力データにマッピングされるかを指定する必要があります。

    データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。

  14. 「OK」をクリックします。

19.7.3 送信および受信タスクを使用した非同期サービスの起動時に行われる処理

送信タスクを使用して非同期サービス操作を起動する際、BPMNサービス・エンジンはサービスが応答するまで待機しません。送信タスクに続くフロー・オブジェクトの実行を継続します。

BPMNプロセスは、受信タスクを使用してサービス・コールバック操作を起動することにより、非同期サービスのレスポンスを取得できます。

サービスの実行が完了した後も、BPMNプロセスは受信タスクを使用してコールバック操作を起動するまでサービス・レスポンスを受信しません。

BPMNサービス・エンジンが受信タスクを実行する間もサービスがまだ実行中であれば、エンジンは、トークンをプロセス中の次のフロー・オブジェクトに渡す前に、サービス操作が完了するまで待機します。

19.7.4 送信タスクを使用した非同期BPMNプロセス操作の起動方法

送信タスクを使用して非同期BPMNプロセス操作を起動できます。

非同期BPMNプロセス操作を起動するには:

  1. 非同期BPMNプロセスを起動するBPMプロセスを編集します。

  2. プロセス中の非同期BPMNプロセスを起動する場所を決定します。

  3. プロセス中の決定した場所に送信タスクを追加します。

  4. 送信タスクを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「会話」セクションで「開始」を選択します。

  8. 「プロパティ」セクションで、「実装」リストから「プロセス・コール」を選択します。

  9. 「プロセス」フィールドの隣の「参照」ボタンをクリックします。

    「タイプ」ダイアログが表示されます。

  10. 起動する非同期BPMNプロセスを選択します。

  11. 「OK」をクリックします。

  12. 「ノード」リストで、非同期BPMNプロセスから操作を選択します。

  13. 非同期BPMNプロセスが入力データを必要とする場合、送信タスクのデータ・アソシエーションを構成して、プロジェクト内のデータ・オブジェクトがどのようにこの入力データにマッピングされるかを指定する必要があります。

    データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。

  14. 「OK」をクリックします。

  15. 19.7.5項「受信タスクを使用した非同期BPMNプロセスのコールバック操作の起動方法」の手順を実行し、非同期プロセスのコールバック操作を起動します。

19.7.5 受信タスクを使用した非同期BPMNプロセスのコールバック操作の起動方法

受信タスクを使用して、非同期プロセス操作とペアになるコールバック操作を起動できます。

非同期BPMNプロセスのコールバック操作を起動するには:

  1. 非同期BPMNプロセスのコールバックを起動するBPMプロセスを編集します。

  2. プロセス中の非同期BPMNプロセスのコールバック操作を起動する場所を決定します。

  3. プロセス中の決定した場所に受信タスクを追加します。

  4. 受信タスクを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「会話」セクションで「続行」を選択します。

    「プロパティ」セクションが変更され、「イニシエータ・ノード」リストが表示されます。

  8. 「イニシエータ・ノード」リストで、非同期プロセスを起動するプロセス中のアクティビティを選択します。

    「プロパティ」セクションの内容が変更され、「プロセス」フィールドおよび「ノード」リストが表示されます。

  9. 「プロセス」フィールドの隣の「参照」ボタンをクリックして非同期プロセスを選択します。

    「タイプ」ダイアログが表示されます。

  10. コールバックを起動する非同期BPMNプロセスを選択します。

  11. 「OK」をクリックします。

    「タイプ」ダイアログが閉じ、受信タスクのプロパティ・ダイアログに、「名前」フィールドで選択したサービスが表示されます。

  12. 「ノード」リストから、起動するコールバック操作を選択します。

  13. 非同期コールバック操作が入力データを必要とする場合、受信タスクのデータ・アソシエーションを構成して、プロセス内のデータ・オブジェクトがどのようにこの入力データにマッピングされるかを指定する必要があります。

    データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。

  14. 「OK」をクリックします。

19.7.6 送信および受信タスクを使用した非同期BPMNプロセスの起動時に行われる処理

送信タスクを使用して非同期サービス操作を起動する際、BPMNサービス・エンジンはサービスが応答するまで待機しません。送信タスクに続くフロー・オブジェクトの実行を継続します。

BPMNプロセスは、受信タスクを使用してサービス・コールバック操作を起動することにより、非同期サービスのレスポンスを取得できます。

サービスの実行が完了した後も、BPMNプロセスは受信タスクを使用してコールバック操作を起動するまでサービス・レスポンスを受信しません。

BPMNサービス・エンジンが受信タスクを実行する間もサービスがまだ実行中であれば、エンジンは、トークンをプロセス中の次のフロー・オブジェクトに渡す前に、サービス操作が完了するまで待機します。

19.8 シグナル・イベントを使用したプロセス間の通信の概要

シグナル・イベントを使用すると、BPMプロジェクト内のすべてのプロセスにメッセージをブロードキャストできます。そのシグナルをリスニングするよう構成されたプロセスのみ、シグナルに反応します。

営業見積サンプルの場合、、見積が承認されたらシグナルをトリガーし、見積の承認に依存しているすべてのプロセスをトリガーできます。

BPMNプロセスがシグナルをブロードキャストすると、メディエータおよびBPELプロセスも反応し、これらもシグナルをブロードキャストしてBPMNプロセスをトリガーできます。

Oracle BPMは、Oracle Event Delivery Network (EDN)を使用してシグナルを送信および受信します。Oracle EDNの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』のビジネス・イベントおよびイベント配信ネットワークの使用に関する項を参照してください。

Oracle BPMでイベントにアクセスする方法は、第12章「ビジネス・カタログの概要」を参照してください。

SOAプロジェクトによって定義されるEDNイベントは、ビジネス・カタログの「イベント」事前定義済モジュールEvents内に自動的に表示されます。シグナル・イベントを追加する際、シグナル・イベントがブロードキャストまたは反応するイベントをビジネス・カタログ内で選択できます。

シグナルは、スロー中間シグナル・イベントまたはシグナル終了イベントからブロードキャストできます。BPMNプロセスでは、別のプロセス内のシグナル開始イベントのシグナルのみ受信できます。

メッセージをブロードキャストするプロセスには、受信者に関する情報は含まれません。シグナルをブロードキャストするプロセスに影響を与えずに、シグナルに反応するプロセスを追加または削除できます。

同様に、特定のメッセージに反応するプロセスには、そのメッセージをブロードキャストするプロセスに関する情報は含まれません。メッセージをブロードキャストするプロセスをプロジェクトに追加すると、その特定のメッセージを待っているすべてのプロセスは、変更しなくてもそのメッセージに反応します。

シグナルのブロードキャストに使用するイベントにはペイロードが含まれており、これを使用して、この特定のシグナルに反応するよう構成されたすべてのプロセスに情報を送信できます。イベント内のペイロードに値を割り当てるには、シグナル・スロー・イベントのデータ・アソシエーションを構成する必要があります。このデータ・アソシエーションにより、プロセスおよびプロジェクトのデータ・オブジェクトに格納された関連するデータをイベントに渡すことができます。対応するプロセスがシグナルを受信する際、別のデータ・アソシエーションを使用してイベント内のデータを取得する必要があります。このデータ・アソシエーションは、シグナル開始イベントで受信されたイベントでどのデータ・オブジェクトがデータを格納するかを定義します。

図19-4 シグナルのブロードキャスト

図19-4の説明が続きます
「図19-4 シグナルのブロードキャスト」の説明

19.9 シグナル・イベントを使用したプロセス間の通信

シグナル・イベントを使用すると、メッセージと、そのメッセージを待機するように構成されたすべてのプロセスの間で通信できます。

19.9.1 複数のプロセスへのシグナルのブロードキャスト方法

この手順を実行する前に、ブロードキャストするイベントをSOAプロジェクトに追加する必要があります。

シグナルを複数のプロセスにブロードキャストするには:

  1. プロセス中のシグナルをブロードキャストする場所を決定します。

  2. コンポーネント・パレットの「スロー・イベント」セクションで「シグナル」を選択します。

    プロセスの完了直後にシグナルをブロードキャストする場合、既存の終了イベントの実装タイプをシグナルに変更するか、タイプがシグナルの新しい終了イベントを追加します。

  3. シグナル・イベントをプロセスにドロップします。

  4. シグナル・イベントを右クリックします。

  5. 「プロパティ」を選択します。

  6. 「実装」タブをクリックします。

  7. 「イベント」フィールドの隣の「参照」ボタンをクリックします。

    「タイプ」ダイアログが表示されます。

  8. イベントを選択します。

  9. 「OK」をクリックします。

    「タイプ」ダイアログが閉じ、「タイプ」フィールドにタイプ名が表示されます。

  10. 「OK」をクリックします。

19.9.2 シグナルのブロードキャスト時に行われる処理

BPMNエンジンがスローまたは終了シグナル・イベントを実行すると、Oracle EDNにイベントを公開します。この特定のシグナルをリスニングするよう構成されているすべてのSOAコンポーネントに、Oracle EDNによってこのイベントが配信されます。

19.9.3 特定のシグナルに反応するプロセスの構成方法

この手順を実行する前に、反応対象のイベントをSOAプロジェクトに追加する必要があります。

プロセスが特定のシグナルに反応するよう構成するには:

  1. プロセスの開始イベントの実装タイプをシグナルに変更するか、新しいシグナル開始イベントをプロセスに追加します。

  2. 開始イベントを右クリックします。

  3. 「プロパティ」を選択します。

  4. 「実装」タブをクリックします。

  5. 「イベント」フィールドの隣の「参照」ボタンをクリックします。

    「タイプ」ダイアログが表示されます。

  6. イベントを選択します。

  7. 「OK」をクリックします。

    「タイプ」ダイアログが閉じ、「タイプ」フィールドにタイプ名が表示されます。

  8. 「OK」をクリックします。

19.9.4 特定のシグナルに反応するプロセスの構成時に行われる処理

別のBPMNプロセスまたはSOAコンポーネントが特定のシグナルをブロードキャストするまでプロセスは開始しません。BPMNプロセスまたはSOAコンポーネントがOracle EDNを使用してこのシグナルをブロードキャストすると、プロセスがこのシグナルにトリガーされます。