ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Business Process Composerによるビジネス・プロセスの開発
12c (12.2.1)
E69963-01
  目次へ移動
目次

前
次
 

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

この章では、他のプロセスおよびサービスと通信するビジネス・プロセスを設計する方法について説明します。

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

18.1 プロセスの入力と出力の定義

操作をBusiness Process Model and Notation (BPMN)プロセスに追加するときは、他のプロセスまたはサービスとの通信に使用できるポイントをプロセス内に定義します。通常、プロセスが他のプロセスまたはサービスと通信するときは、入力が要求され、出力が返されます。

BPMNプロセス操作の定義に使用するフロー・イベントでは、入力引数と出力引数を定義できます。これらの入力引数と出力引数によって、プロセスの入力と出力が定義されます。

18.1.1 プロセスへの入力引数の定義方法

メッセージ開始イベントから開始するプロセスを作成するときは、そのプロセスに渡される入力引数を定義する必要があります。

プロセスに入力引数を定義するには:

  1. メッセージ開始イベントをプロセスに追加します。
  2. メッセージ開始イベントを右クリックし、「プロパティ」を選択します。
  3. トリガー・タイプには「メッセージ」を選択します。

    Oracle Business Process Composerでは、デフォルトでトリガー・タイプ「なし」の開始イベントが作成され、「メッセージ」開始イベントとして実装するには、「プロパティ」ダイアログでトリガーを設定する必要があります。

  4. 「実装」リンクをクリックして、「実装」タブに移動します。
  5. 「インタフェースの定義」を選択します。
  6. 「追加」アイコンをクリックします。
  7. 名前と引数タイプを決定します。
  8. 「変更の適用」をクリックします。

18.1.2 メッセージ開始イベントへのデータの関連付けの定義方法

プロセスに入力引数を定義した後は、その内容をプロセス内のデータ・オブジェクトにマップする必要があります。

メッセージ開始イベントにデータ・アソシエーションを定義するには:

  1. プロセスのメッセージ開始イベントを選択します。
  2. 開始イベントを右クリックして、「データ・アソシエーション」をクリックします。
  3. 右側のリストから「出力」の下にリストされたテキスト・ボックスに、データ・オブジェクトをドラッグします。
  4. 「適用」をクリックします。

18.1.3 プロセスへの出力引数の定義方法

メッセージ終了イベントを含むプロセスを作成するときは、終了イベントごとに出力引数を定義する必要があります。それらはプロセスに対する出力引数になります。

プロセスに出力引数を定義するには:

  1. メッセージ終了イベントをプロセスに追加します。
  2. メッセージ終了イベントを右クリックし、「プロパティ」を選択します。
  3. 「実装」タブをクリックします。
  4. 「インタフェースの定義」を選択します。
  5. 「追加」アイコンをクリックします。
  6. 名前と引数タイプを決定します。
  7. 「変更の適用」をクリックします。

18.1.4 メッセージ終了イベントへのデータの関連付けの定義方法

プロセスの出力引数を定義した後は、その内容をプロセス内のデータ・オブジェクトにマップする必要があります。

メッセージ終了イベントにデータ・アソシエーションを定義するには:

  1. プロセス内のメッセージ終了イベントを選択します。
  2. 終了イベントを右クリックして、「データ・アソシエーション」をクリックします。
  3. 右側のリストから「入力」の下にリストされたテキスト・ボックスに、データ・オブジェクトをドラッグします。
  4. 「適用」をクリックします。

18.2 送信タスクおよび受信タスクを使用した、プロセス間の通信

送信タスクおよび受信タスクを使用すると、他のBPMNプロセスを起動して、起動したプロセスからメッセージを受信できます。受信タスクによって開始され、送信タスクを含むプロセスは、Oracle Business Process Management (Oracle BPM)アプリケーション内の他のプロセスやサービスから使用できるサービスとして公開されます。

図18-1は、送信タスクおよび受信タスクを使用してプロセスを起動し、レスポンスを受信する場合の基本的な動作の概要を示しています。

図18-1 送信タスクおよび受信タスクを使用した、プロセス間の通信

「図18-1 送信タスクおよび受信タスクを使用した、プロセス間の通信」の説明が続きます
「図18-1 送信タスクおよび受信タスクを使用した、プロセス間の通信」の説明

次の手順は、送信タスクおよび受信タスクを使用してプロセス間で通信する場合のシナリオの例を示しています。

  1. プロセスAが起動されます。

  2. プロセスAのトークンが送信タスクに到達します。

  3. 送信タスクによって、プロセスBが起動されます。

    この動作は、送信タスクの実装によって定義されます。

  4. プロセスAのトークンは、プロセスの次のフロー・オブジェクトに進みます。

  5. 受信タスクによって、プロセスBのプロセス・インスタンスが開始されます。

    受信タスクには、「インスタンスの作成」プロパティが定義されている必要があります。「受信タスクによるプロセスの開始」を参照してください。

  6. 新しく作成されたトークンがプロセスBに沿って進みます。

  7. プロセスの具体的な動作に応じて、次のシナリオが発生する場合があります。

    1. プロセスAのトークンが、プロセスBからの送信タスクとペアになっている受信タスクに到達すると、プロセスAのトークンはレスポンスを受信するまで待機します。

      レスポンスを受信した後、プロセスAのトークンは次のフロー・オブジェクトに移動します。

    2. プロセスBのトークンが、プロセスA内の受信タスクとペアになっている送信タスクに到達すると、プロセスBはプロセスAにレスポンスを送信します。

      プロセスBのトークンは、次のフロー・オブジェクトに移動します。

  8. 両方のプロセスが引き続き実行されます。

    この後に、さらに送信タスクと受信タスクのペアを使用して、2つのプロセス間での通信を定義できます。

18.3 メッセージのスロー・イベントおよびキャッチ・イベントを使用した、プロセス間の通信

スロー・イベントとキャッチ・イベントを組み合せて使用することによって、他のBPMNプロセスを起動したり、他のBPMNプロセスと通信できます。

スロー・イベントを使用して他のプロセスを起動する場合は、次の条件を満たしている必要があります。

  • 起動されるプロセスは、非同期プロセスである必要があります。

    メッセージ・スロー・イベントを使用して同期プロセスを起動することもできますが、起動したプロセスから同期的にメッセージをキャッチするメカニズムは用意されていません。

    同期プロセスを起動する場合は、サービス・タスクを使用します。詳細は、サービス・タスクの概要を参照してください。

  • 最初にメッセージ・スロー・イベントを使用する場合は、他のプロセスのメッセージ開始イベントとペアにする必要があります。

    これは、プロセス・インスタンスをトリガーするために必要となります。インスタンスがトリガーされた後は、2つ目のプロセスによってキャッチされる後続のメッセージ・スロー・イベントを使用できます。

メッセージ開始イベントで開始し、メッセージ終了イベントで終了するプロセスは、Oracle BPMアプリケーション内の他のプロセスやサービスから使用できるサービスとして公開されます。

他のプロセスから起動されたプロセスは、子プロセスであるとはみなされません。このことは、強制終了イベントをプロセスの終了点として使用するプロセスを設計する場合に重要となります。たとえば、コール側プロセスの終了イベントでは、メッセージ・スロー・イベントによって起動されたプロセスは停止しません。

図18-2は、メッセージ・スロー・イベントおよびキャッチ・イベントを使用してプロセスを起動し、レスポンスを受信する場合の基本的な動作を示しています。

図18-2 プロセス間でのメッセージのスロー・イベントおよびキャッチ・イベントの使用

「図18-2 プロセス間でのメッセージのスロー・イベントおよびキャッチ・イベントの使用」の説明が続きます
「図18-2 プロセス間でのメッセージのスロー・イベントおよびキャッチ・イベントの使用」の説明

次の手順は、メッセージ・スロー・イベントおよびメッセージ・キャッチ・イベントを使用してプロセス間で通信を行う場合のシナリオの例を示しています。

  1. プロセスAが起動されます。

  2. プロセスAのトークンが、プロセスBを起動するように構成されているメッセージ・スロー・イベントに到達します。

  3. メッセージ・スロー・イベントからプロセスBのメッセージ開始イベントにメッセージが送信されます。

  4. プロセスAのトークンは、次のフロー・オブジェクトに進みます。

  5. メッセージ開始イベントによって、プロセスBのインスタンスがトリガーされます。

  6. 新しく作成されたトークンがプロセスBに沿って進みます。

  7. プロセスの動作に応じて、次のシナリオが発生する場合があります。

    1. プロセスAのトークンが、プロセスBからのスロー・イベントとペアになっているキャッチ・イベントに到達すると、プロセスAのトークンはメッセージを受信するまで待機します。

      メッセージを受信した後、プロセスAのトークンは次のフロー・オブジェクトに移動します。

    2. プロセスBのトークンが、プロセスAのキャッチ・イベントとペアになっているスロー・イベントに到達すると、プロセスBはプロセスAにメッセージをスローします。

      プロセスBのトークンは、次のフロー・オブジェクトに移動します。

  8. 両方のプロセスが引き続き実行されます。

    この後に、さらにキャッチ・イベントとスロー・イベントのペアを使用して、2つのプロセス間での通信を定義できます。

18.4 会話の定義

複数のプロセス間のメッセージ交換は、会話によってグループ化されます。プロセス間のメッセージ交換をコラボレーションと呼びます。1つのプロジェクト内に複数の会話を定義すると、そのプロジェクト内のプロセス間で再利用できます。

後続の項では、Oracle Business Process Composerを使用して会話を編集する方法について説明します。詳細は、Oracle Business Process Management Studioを使用したビジネス・プロセスの作成を参照してください。

18.4.1 会話の概要

複数のプロセス間のメッセージ交換は、会話によってグループ化されます。プロセス間のメッセージ交換をコラボレーションと呼びます。1つのプロジェクト内に複数の会話を定義すると、そのプロジェクト内のプロセス間で再利用できます。

コラボレーション・ダイアグラムを使用すると、会話における他の参加者とプロセスの相互作用もプロセス・フローに表示できます。

デフォルトでは、BPMプロジェクトに1つの会話が定義されています。複数の会話を定義しない場合は、このデフォルトの会話を使用して、プロジェクト内のプロセス間のすべてのメッセージ交換を収集する必要があります。

プロジェクトごとに定義できるデフォルトの会話は1つのみです。ただし、デフォルトで使用する会話ではなく、別の会話をデフォルトとして使用するようにプロジェクトを変更できます。

様々なタイプの会話を使用すると、プロセスが他のプロセスやサービスとの間で確立できる各種の相互作用を指定できます。次に、各タイプの会話について説明します:

  • インタフェースの定義: 他のサービスやプロセスでBPMNプロセスとの対話のために起動可能な操作の定義に使用します。

  • インタフェースの使用: ビジネス・カタログのコンポーネントからのインタフェースを使用するようにプロセスを構成する場合に使用します。

  • プロセス・コール: 別のBPMNプロセスの起動に使用します。

  • サービス・コール: BPMプロジェクトに定義されているサービスの起動に使用します。

18.4.2 会話の使用

以降の項では、Oracle Business Process Composerを使用して会話を定義および構成する方法について説明します。

18.4.2.1 会話の定義方法

  1. プロセスを開きます。
  2. プロセス・エディタ・ツールバーで「会話の編集」ボタンをクリックします。
  3. 会話の追加ボタンをクリックします。
  4. 会話の名前を入力します。
  5. 定義する会話のタイプを選択します。
  6. 「OK」をクリックします。

18.4.2.2 デフォルトの会話の設定方法

  1. プロセスを開きます。
  2. プロセス・エディタ・ツールバーで「会話の編集」ボタンをクリックします。
  3. リストから会話を選択し、「編集」ボタンをクリックします。
  4. 「デフォルトの会話」チェック・ボックスをクリックします。
  5. 「OK」をクリックします。

18.4.2.3 BPMNフロー・オブジェクトに対する会話の定義方法

  1. プロセスを開きます。
  2. 次のいずれかのタイプのBPMNフロー・オブジェクトを右クリックします:
    • メッセージ・イベント(スローおよびキャッチ)

    • 送信タスクおよび受信タスク

    • サービス・タスク

    これらのBPMフロー・オブジェクトに対してのみ会話を定義できます。

  3. 「実装」を選択します。
  4. 「実装」タブで、「会話」テキスト・フィールドの隣にある「参照」ボタンをクリックします。
  5. リストから会話を選択し、「OK」をクリックします。

18.4.2.4 コラボレーション・ダイアグラムの表示方法

プロセスのコラボレーション・ダイアグラムを表示するには、プロセス・エディタ・ツールバーで「コラボレーションの表示」ボタンをクリックします。

注意:

コラボレーション・ビューでプロセスの変更はできません。通常のプロセス編集に戻るには、「コラボレーションの表示」ボタンを再度クリックします。

18.5 サービスの使用

Oracle Business Process Composerでは、ビジネス・カタログに新しいサービスを作成できます。これらのサービスは、標準的なWebサービスに基づきます。

後続の項では、Oracle Business Process Composerを使用してサービスを作成する方法について説明します。

18.5.1 ビジネス・カタログで新しいサービスを作成する方法

Webサービスに基づくサービスは、Webサービス記述言語(WSDL)ファイルを使用して定義されます。WSDLファイルは、Webサービスの実装方法を記述するために使用するXMLファイルです。Oracle Business Process Composerを使用して新規サービスを作成する場合は、コンピュータにローカルで格納されているWSDLファイルまたはオンラインで使用可能なWSDLファイルを指定できます。

WSDLファイルまたはURLの場所の指定は、プロセス開発者が担当します。

18.5.1.1 新しいサービスの作成

新しいサービスを作成する手順は、次のとおりです。

  1. 新しいサービスを作成するプロジェクトを開きます。
  2. メイン・メニューから「新規」を選択し、次に「新規サービス」を選択します。
  3. 次の情報を指定します。
    • 名前: ビジネス・カタログに表示するとおりに、サービスの名前を定義します。

    • タイプ: 作成するサービスのタイプを定義します。

    • WSDL: 新しいサービスの作成に使用するWSDLのソースとして、次のいずれかを指定できます:

      • URL: WSDLのリモートURLを指定します。

      • ファイル: ローカル・ファイル・システムにあるWSDLファイルまたはZIPファイルのいずれかを指定します。

        ZIPファイルを使用する場合、そこに含めることができるのはWSDLおよびXSDファイルのみです。WSDLファイルには、有効な参照が必要です。

    • ポート・タイプ: ポート・タイプには、使用するサービスを指定します。

      WSDLファイルは1つ以上のポート・タイプを公開します。

    • コールバック・タイプ: このWebサービスで使用するコールバック・タイプを指定します。

      これは、非同期サービスにのみ適用可能です。

    • トランザクション参加

    • 「バージョン」

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

18.5.1.2 プロセス・エディタでの新しいサービスの作成

プロセス・エディタで新規サービスを作成する手順は、次のとおりです。

  1. BPMNからビジネス・カタログに、パレットを変更します。
  2. サービスの近くにある+ボタンをクリックします。

    「新規サービス」ダイアログが表示されます。

  3. 必要な情報を入力します。
  4. 「OK」をクリックします。