21 プロセス・インタフェースの定義
他のプロセスまたはサービスによって、サービスとして起動できるように、BPMNプロセスを公開するよう構成する方法を学習します。Oracle BPMでは、BPMNプロセス内のフロー・オブジェクトをプロセス操作として公開できます。他のBPMNプロセスおよびサービスによってこれらの操作を起動できます。
21.1 プロセス・インタフェースの定義
プロセス・インタフェースとは、他のプロセスまたはサービスが使用できるようにBPMNプロセスが公開する操作のグループです。SOAコンポジットでは、BPMNプロセス・インタフェースは「公開されたサービス」セクションに表示されます。他のプロセスおよびサービスが使用できるようにするためには、BPMNプロセスのインタフェースを定義する必要があります。定義するインタフェースには、他のプロセスおよびサービスが起動できる操作が含まれます。
同期プロセス操作は、入力および出力引数を定義します。
非同期プロセス操作を定義する際、対応するコールバック操作も定義する必要があります。非同期操作によって入力引数が定義され、コールバック操作によって出力引数が定義されます。
プロセス・インタフェースを定義するには、BPMNプロセスの操作を定義するか、またはビジネス・カタログから既存のインタフェースを使用できます。これらのどのオプションでも、メッセージ・イベントまたは送信および受信タスクを使用して実装できます。
21.2 メッセージ・イベントを使用したBPMNプロセス・インタフェースの定義
プロセス・インタフェースには、他のサービスおよびプロセスがBPMNプロセスと対話するために起動可能な操作が含まれます。これらの操作は、同期操作または非同期操作のいずれをも使用できます。
プロセス・インタフェースは、メッセージ・イベントまたは送信および受信タスクを使用して定義できます。
BPMNプロセス内の操作を公開するには、イニシエータとして構成されたメッセージ開始イベントまたはメッセージ・キャッチ・イベントを使用できます。これらのメッセージ・イベントにより、同期操作または非同期操作のいずれにするかを定義できます。また、プロセスの入力も定義できます。
プロセス・インタフェースには、BPMNプロセスの開始イベントを公開する操作が必ず含まれている必要があります。このBPMNプロセスを起動するプロセスまたはサービスは、常に、プロセス内の操作を起動する前に、開始イベントに対応する操作を起動する必要があります。
プロセスの出力を定義するには、操作を定義するイベントを続行するメッセージ・スロー・イベントまたはメッセージ終了イベントを構成する必要があります。操作が非同期の場合、これらのイベントはコールバック操作も定義します。
インタフェースに非同期操作が含まれている場合、この操作の結果を返すコールバック操作も定義する必要があります。BPMNプロセスでコールバック操作を定義する方法は、「メッセージ・イベントを使用したBPMNプロセスのコールバック・インタフェースの定義」を参照してください。
図21-1では、インタフェースでメッセージ開始メッセージ・イベントを公開するBPMNプロセスを示しています。また、SOAコンポジット・エディタによってこの操作がどのように表示されるかも示されています。
さらに、プロセス・インタフェースには、プロセス中のキャッチ・メッセージ・イベントによって公開される操作を含められます。キャッチ・メッセージ・イベントに対応する操作を起動する前に、常に、メッセージ開始イベントに対応する操作を起動する必要があります。
図21-2では、メッセージ開始メッセージ・イベントに加え、インタフェースでキャッチ・メッセージ・イベントを公開するBPMNプロセスを示しています。また、SOAコンポジット・エディタによってこの操作がどのように表示されるかも示されています。
図21-2 インタフェースでメッセージ開始およびメッセージ・キャッチ・イベントを公開するBPMNプロセス
「図21-2 インタフェースでメッセージ開始およびメッセージ・キャッチ・イベントを公開するBPMNプロセス」の説明
21.2.1 メッセージ・イベントを使用したBPMNプロセスのコールバック・インタフェースの定義
BPMNプロセスは、定義する各非同期操作に対し、コールバック操作を公開する必要があります。
コールバック操作により、非同期操作を起動したサービスまたはプロセスにレスポンスが返されます。コールバック操作によって出力引数を定義できます。出力引数を定義する場合、データ・アソシエーションを使用して、その値をプロセス内のデータ・オブジェクトにマッピングする必要があります。
メッセージ・スロー・イベントまたはメッセージ終了イベントを使用してコールバック操作を定義できます。
別のBPMNプロセスから非同期BPMNプロセスを起動する方法の詳細は、「メッセージ・イベントを使用した非同期サービスおよび非同期BPMNプロセスの起動」を参照してください。
図21-3では、BPMNプロセスのコールバック操作を公開する終了イベントを示しています。また、SOAコンポジット・エディタでコールバック操作がどのように表示されるかも示されています。
ノート:
操作の公開に送信タスクを使用した場合、コールバック操作の定義に受信タスクを使用する必要があります。送信イベントを使用したコールバック操作の定義方法の詳細は、「送信および受信タスクを使用した非同期プロセス操作の定義」を参照してください。
21.3 メッセージ・イベントを使用したBPMNプロセス内の非同期操作の定義
メッセージ・イベントを使用して、BPMNプロセスの非同期操作を定義できます。非同期操作を公開する際、開始操作も公開する必要があります。非同期サービスを起動するクライアントは、まず開始操作を起動してプロセス内にインスタンスを作成する必要があります。非同期操作は作成したインスタンスで実行されます。
また、定義した各非同期操作に対し、コールバック操作を指定する必要があります。
21.3.1 メッセージ・イベントを使用した、BPMNプロセスの開始操作を非同期として構成する方法
BPMNプロセスの開始イベントを非同期操作として公開できます。
BPMNプロセスの開始操作を非同期として構成するには:
21.3.3 メッセージ・イベントを使用した、BPMNプロセスの開始操作を非同期として構成するときに行われる処理
プロセスの開始イベントを起動する際、プロセス・フローを続行する前にレスポンスを待機しないでください。レスポンスを取得するには、プロセスのコールバック操作を起動する必要があります。
非同期BPMNプロセスは、メッセージ・イベントまたは送信および受信タスクを使用して起動できます。
非同期BPMNプロセスを起動する方法の詳細は、「メッセージ・イベントを使用した非同期サービスおよび非同期BPMNプロセスの起動」および「送信および受信タスクを使用した非同期サービスおよび非同期BPMNプロセスの起動」を参照してください。
SOAコンポジットで、非同期プロセスのインタフェースには、最低2つの操作が表示されます。プロセスを開始する操作と、そのコールバック操作です。
21.4 メッセージ・イベントを使用したBPMNプロセス・インタフェースの同期操作の定義
メッセージ・イベントを使用して、BPMNプロセスの同期操作を定義できます。同期操作を定義するには、メッセージ開始またはキャッチ・イベント、およびそれに続くメッセージ・スローまたはキャッチを使用します。メッセージ開始またはキャッチ・イベントはプロセスの入力を定義します。メッセージ・スローまたは終了イベントはプロセスの出力を定義します。
メッセージ・キャッチ・イベントを使用して同期操作を定義する場合、開始操作も定義する必要があります。まず開始操作を起動した後に同期操作を起動し、プロセス内にインスタンスを作成する必要があります。同期操作は作成したインスタンスで実行されます。
同期BPMNプロセスの起動方法の詳細は、「サービス・タスクを使用したサービスおよびBPMNプロセスの同期操作の起動」を参照してください。
メッセージ・イベントを使用すると、同期操作を定義する場合にエラー・メッセージを送信できます。エラー・メッセージ・イベントの詳細は、「メッセージ・イベントを使用したピア・プロセスでのエラー処理」を参照してください。
21.4.1 メッセージ・イベントを使用した、BPMNプロセスの開始操作を同期として構成する方法
BPMNプロセスのメッセージ開始イベントを同期操作として公開できます。
メッセージ・イベントを使用したBPMNプロセスの開始操作を同期として構成するには:
ノート:
同期開始イベントを追加する際、同じ会話の一部である終了またはキャッチ・メッセージ・イベントも追加する必要があります。終了またはキャッチ・メッセージ・イベントは開始イベントに続くものなので、これらも同期イベントです。
21.4.3 メッセージ・イベントを使用した、BPMNプロセスの開始操作を同期として構成するときに行われる処理
プロセス開始イベントにより、同期操作が公開されます。プロセス開始イベントをクライアントから起動する際、プロセス・フローを続行する前に、レスポンスを待機する必要があります。同期プロセスを起動するサービス・タスクは、トークンがプロセス中の次のアクティビティに移動する前に、同期プロセスが完了するのを待ちます。
BPMNプロセスの同期操作を起動するには、サービス・タスクを使用する必要があります。
同期BPMNプロセスの起動方法の詳細は、「サービス・タスクを使用したサービスおよびBPMNプロセスの同期操作の起動」を参照してください。
SOAコンポジットでは、同期プロセスのインタフェースには、開始イベントの1つの操作のみが表示されます。
21.5 ビジネス・カタログのインタフェースを持つメッセージ・イベントを使用したプロセス・インタフェースの定義
プロセスのインタフェースを定義するメッセージ・イベントを構成する際、インタフェースを定義するかわりに既存のインタフェースを使用できます。
ビジネス・カタログ内の「参照」事前定義済モジュールの任意の操作を選択して、プロセス操作のインタフェースとして使用できます。
操作のインタフェースを定義するために選択した参照の操作により、使用する操作が同期または非同期のどちらであるかが決定します。
ビジネス・カタログのインタフェースを使用してメッセージ開始またはメッセージ・キャッチ・イベントを定義する場合、関連付けられたメッセージ・スローまたはメッセージ終了イベントもビジネス・カタログのインタフェースを使用する必要があります。定義する操作が非同期の場合、メッセージ・スローまたはメッセージ終了イベントはコールバック操作のみ使用できます。
一般には、プロセス・インタフェースを定義する際、コンポジットに存在するインタフェースを使用するためにビジネス・カタログのインタフェースを使用し、後にこのインタフェースからBPMNプロセスにワイヤを追加します。
同じインタフェースの実装を複数提供できます。たとえば、既存のインタフェースをBPELおよびBPMNテクノロジで実装できます。BPMNインタフェースを実装するには、ビジネス・カタログのインタフェースを使用してプロセスを定義する必要があります。
図21-4では、BPMNプロセスがどのようにしてBPELプロセスのインタフェースを再利用してBPMNでパラレルな実装を提供できるかを示しています。BPMNプロセスは、ビジネス・カタログに表示されるBPELプロセスのインタフェースを使用して操作を定義します。また、BPMNプロセスがインタフェースの定義に別のSOAコンポーネントを使用することがSOAコンポジット・エディタに表示されています。
21.5.1 ビジネス・カタログのインタフェースを使用して、メッセージ開始およびキャッチ・イベントを使用するBPMNプロセス・インタフェースの操作を定義する方法
ビジネス・カタログのインタフェースを使用して、BPMNプロセスのインタフェースを定義できます。
ビジネス・カタログのインタフェースを使用して操作を定義するには:
21.5.2 メッセージ・イベントを使用するビジネス・カタログのインタフェースを使用するようメッセージ終了またはメッセージ・スロー・イベントを構成する方法
ビジネス・カタログのインタフェースを使用して、BPMNプロセスのインタフェースを定義できます。
ビジネス・カタログのインタフェースを使用するようメッセージ終了またはメッセージ・スロー・イベントを構成するには:
21.5.3 操作の定義にビジネス・カタログのインタフェースを使用したときに行われる処理
定義される操作は、ビジネス・カタログ内のインタフェースの操作の署名を使用します。BPMNプロセスで操作を起動するには、ビジネス・カタログのインタフェースの操作を起動するために使用するのと同じ操作名および入力を使用する必要があります。BPMNプロセスの操作は、ビジネス・カタログのインタフェースの操作と同じ出力を返します。
SOAコンポジットには、BPMNプロセスと、その操作の定義に使用されたインタフェースとの間にワイヤが表示されます。
ビジネス・カタログのインタフェースを使用してすべてのプロセス操作を定義すると、BPMNプロセスWSDLを削除するかどうかJDeveloperによって尋ねられます。BPMNプロセスはインタフェースを定義せず、既存のインタフェースを使用するため、WSDLは不要になっており、削除しても構いません。
21.6 送信および受信タスクを使用したBPMNプロセス・インタフェースの定義
プロセス・インタフェースには、他のサービスおよびプロセスがBPMNプロセスを実行するために起動可能な操作が含まれます。これらの操作は、同期操作または非同期操作のいずれをも使用できます。
プロセス・インタフェースは、メッセージ・イベントまたは送信および受信タスクを使用して定義できます。
メッセージ・イベントを使用したプロセス・インタフェースの定義方法の詳細は、「メッセージ・イベントを使用したBPMNプロセス・インタフェースの定義」を参照してください。
BPMNプロセス内の操作を公開するために、受信タスクを使用できます。受信タスクにより、操作が同期または非同期のいずれであるかが決定されます。また、プロセスの入力も定義できます。
プロセス・インタフェースには、インスタンスを作成する受信タスクを公開する操作が必ず含まれている必要があります。このBPMNプロセスを起動するプロセスまたはサービスは、常に、プロセス内の操作を起動する前に、この操作を起動する必要があります。
プロセスの出力を定義するには、操作を定義する受信を続行する送信タスクを構成する必要があります。操作が非同期の場合、送信タスクはコールバック操作も定義します。
インタフェースに非同期操作が含まれている場合、この操作の結果を返すコールバック操作も定義する必要があります。BPMNプロセスでコールバック操作を定義する方法の詳細は、「送信タスクを使用したBPMNプロセスのコールバック・インタフェースの定義」を参照してください。
さらに、プロセス・インタフェースには、プロセス中の受信タスクによって公開される操作を含められます。受信タスクに対応する操作を起動する前に、常に、インスタンスを作成するよう構成された受信タスクに対応する操作を起動する必要があります。
図21-5では、インスタンスを作成する受信タスクに加え、インタフェースで受信タスクを公開するBPMNプロセスを示しています。また、SOAコンポジット・エディタによってこれらの操作がどのように表示されるかも示されています。
操作の公開に送信タスクを使用した場合、コールバック操作の定義に受信タスクを使用する必要があります。送信イベントを使用したコールバック操作の定義方法の詳細は、「送信タスクを使用したBPMNプロセスのコールバック・インタフェースの定義」を参照してください。
21.6.1 送信タスクを使用したBPMNプロセスのコールバック・インタフェースの定義
BPMNプロセスは、定義する各非同期操作に対し、コールバック操作を公開する必要があります。送信タスクを使用してコールバック操作を定義できます。
コールバック操作により、非同期操作を起動したサービスまたはプロセスにレスポンスが返されます。サービスまたはプロセスが応答を待機している場合、即座に受信します。サービスまたはプロセスが応答を待っていない場合、プロセスまたはコード中の応答を待機する位置に到達すると応答を受信します。
コールバック操作によって出力引数を定義できます。出力引数を定義する場合、データ・アソシエーションを使用して、その値をプロセス内のデータ・オブジェクトにマッピングする必要があります。
図21-5に、BPMNプロセスのコールバック操作を公開する受信タスクを示します。
21.7 送信および受信タスクを使用した非同期プロセス操作の定義
送信および受信タスクを使用して、BPMNプロセスの非同期操作を定義できます。非同期操作を公開する際、開始操作も公開する必要があります。非同期サービスを起動するプロセスは、まず開始操作を起動してプロセス内にインスタンスを作成する必要があります。非同期操作は作成したインスタンスで実行されます。
また、定義した各非同期操作に対し、コールバック操作を指定する必要があります。
21.7.1 送信および受信タスクを使用した非同期プロセス操作の定義方法
送信および受信タスクを使用して非同期プロセス操作を定義できます。
送信および受信タスクを使用して非同期プロセス操作を定義するには:
-
BPMNプロセスを編集します。
-
開始および終了イベントのトリガーをNoneに変更します。
-
イベントを右クリックします。
-
「プロパティ」を選択します。
-
「実装」タブをクリックします。
-
「実装タイプ」リストから「なし」を選択します。
-
「OK」をクリックします。
-
-
開始イベント直後に受信タスクを追加します。
-
受信タスクを右クリックします。
-
「プロパティ」を選択します。
-
「実装」タブをクリックします。
-
「インスタンスの作成」を選択します。
-
「メッセージ交換」セクションで、「開始」を選択します。
-
「会話プロパティ」セクションで「インタフェースの定義」を選択します。
-
非同期BPMNプロセスが入力データを必要とする場合、プロセスの入力を「引数の定義」セクションで定義する必要があります。
プロセスの出力の定義方法の詳細は、「プロセスの入力および出力の定義」を参照してください。
-
「拡張」セクションを展開します。
-
「非同期」を選択します。
-
開始操作の名前を入力します。
操作に指定した名前が、SOAコンポジットに表示する際に使用されます。
-
「OK」をクリックします。
-
「送信タスクを使用したコールバック・プロセス操作の定義方法」の手順に従って、非同期BPMNプロセスのコールバック操作を定義します。
21.7.3 送信タスクを使用したコールバック・プロセス操作の定義方法
送信タスクを、非同期プロセス操作とペアになるコールバック操作として公開できます。
送信タスクを使用して非同期プロセスのコールバック操作を定義する方法:
21.7.4 送信および受信タスクを使用した非同期操作の定義時に行われる処理
非同期操作および対応するコールバック操作は、他のプロセスによって起動が可能です。
定義したプロセスの非同期操作を起動する際、プロセス・フローを続行する前にレスポンスを待機しないでください。レスポンスを取得するには、プロセスのコールバック操作を起動する必要があります。
SOAコンポジットには、BPMNプロセス・インタフェースに非同期操作およびそのコールバックが表示されます。
非同期BPMNプロセスは、メッセージ・イベントまたは送信および受信タスクを使用して起動できます。
非同期BPMNプロセスを起動する方法の詳細は、「メッセージ・イベントを使用した非同期サービスおよび非同期BPMNプロセスの起動」および「送信および受信タスクを使用した非同期サービスおよび非同期BPMNプロセスの起動」を参照してください。
21.8 送信および受信タスクを使用したBPMNプロセス内の同期操作の定義
送信および受信タスクを使用して、BPMNプロセス内の同期操作を定義できます。同期操作は、受信タスクと、受信タスクを続行する送信タスクを使用して定義します。受信タスクはプロセスの入力を定義し、送信タスクはプロセスの出力を定義します。
送信タスクを使用して同期操作を定義する場合、開始操作も定義する必要があります。まず開始操作を起動した後に同期操作を起動し、プロセス内にインスタンスを作成する必要があります。同期操作は作成したインスタンスで実行されます。
別のBPMNプロセスからBPMNプロセス内の同期操作を起動する方法の詳細は、「サービス・タスクを使用したサービスおよびBPMNプロセスの同期操作の起動」を参照してください。
21.8.1 送信および受信タスクを使用した、プロセス操作を同期として定義する方法
送信および受信タスクを同期プロセス操作として公開できます。
プロセス操作を同期として構成するには:
-
BPMNプロセスを編集します。
-
開始および終了イベントのトリガーをNoneに変更します。
-
イベントを右クリックします。
-
「プロパティ」を選択します。
-
「実装」タブをクリックします。
-
「実装タイプ」リストから「なし」を選択します。
-
「OK」をクリックします。
-
-
開始イベントの後に受信タスクを追加します。
-
受信タスクを右クリックします。
-
「プロパティ」を選択します。
-
「実装」タブをクリックします。
-
「インスタンスの作成」を選択します。
-
「会話プロパティ」セクションで「インタフェースの定義」を選択します。
-
同期BPMNプロセスが入力データを必要とする場合、プロセスの入力を「引数の定義」セクションで定義する必要があります。
プロセスの入力の定義方法の詳細は、「プロセスの入力および出力の定義」を参照してください。
-
「拡張」セクションを展開します。
-
「同期」を選択します。
-
開始操作の名前を入力します。
操作に指定した名前が、SOAコンポジットに表示する際に使用されます。
-
「OK」をクリックします。
21.8.2 送信および受信タスクを使用した同期操作の定義時に行われる処理
非同期操作および対応するコールバック操作は、他のプロセスによって起動が可能です。
BPMNプロセスの同期操作を起動するには、サービス・タスクを使用する必要があります。
同期BPMNプロセスの起動方法の詳細は、「サービス・タスクを使用したサービスおよびBPMNプロセスの同期操作の起動」を参照してください。
SOAコンポジットでは、同期プロセスのインタフェースには、受信タスクの1つの操作のみが表示されます。
21.9 ビジネス・カタログのインタフェースを持つ送信および受信タスクを使用したプロセス・インタフェースの定義
プロセスのインタフェースを定義する受信タスクを構成する際、インタフェースを定義するかわりに既存のインタフェースを使用できます。
ビジネス・カタログ内のコンポーネントの任意の操作を選択して、プロセス操作のインタフェースとして使用できます。
操作のインタフェースを定義するために選択したビジネス・カタログ内のコンポーネントの操作により、使用する操作が同期または非同期のどちらであるかが決定します。
ビジネス・カタログのインタフェースを使用して受信タスクを定義する場合、関連付けられた送信タスクもビジネス・カタログのインタフェースを使用する必要があります。定義する操作が非同期の場合、メッセージ送信タスクはコールバック操作のみ使用できます。
図21-6では、ビジネス・カタログのBPELプロセスを使用して操作を定義するプロセスを示しています。また、BPMNプロセスがインタフェースの定義に別のSOAコンポーネントを使用することがSOAコンポジット・エディタに表示されています。
図21-6 送信および受信タスクを使用して定義されたビジネス・カタログのインタフェースを使用するBPMNプロセス
「図21-6 送信および受信タスクを使用して定義されたビジネス・カタログのインタフェースを使用するBPMNプロセス」の説明
21.9.1 ビジネス・カタログのインタフェースを使用して、送信および受信タスクを使用するBPMNプロセス・インタフェースの操作を定義する方法
ビジネス・カタログのインタフェースを使用して、BPMNプロセスのインタフェースを定義できます。
ビジネス・カタログのインタフェースを使用して操作を定義するには:
21.9.2 送信および受信タスクを使用するビジネス・カタログのインタフェースを使用するようメッセージ終了またはメッセージ・スロー・イベントを構成する方法
ビジネス・カタログのインタフェースを使用して、BPMNプロセスのインタフェースを定義できます。
ビジネス・カタログのインタフェースを使用するようメッセージ終了またはメッセージ・スロー・イベントを構成するには:
21.9.3 操作の定義にビジネス・カタログのインタフェースと送信および受信タスクを使用したときに行われる処理
定義される操作は、ビジネス・カタログ内のインタフェースの操作の署名を使用します。BPMNプロセスで操作を起動するには、ビジネス・カタログのインタフェースの操作を起動するために使用するのと同じ操作名および入力を使用する必要があります。BPMNプロセスの操作は、ビジネス・カタログのインタフェースの操作と同じ出力を返します。
SOAコンポジットには、BPMNプロセスと、その操作の定義に使用されたインタフェースとの間にワイヤが表示されます。
ビジネス・カタログのインタフェースを使用してすべてのプロセス操作を定義すると、BPMNプロセスWSDLを削除するかどうかJDeveloperによって尋ねられます。BPMNプロセスはインタフェースを定義せず、既存のインタフェースを使用するため、WSDLは不要になっており、削除しても構いません。
21.10 プロセスの入力および出力の定義
操作をBPMNプロセスに追加するときは、他のプロセスまたはサービスとの通信に使用できるポイントをプロセス内に定義します。
通常、プロセスが他のプロセスまたはサービスと通信するときは、入力が要求され、出力が返されます。
BPMNプロセスの操作を定義するために使用するフロー・イベントでは、入力引数と出力引数を定義できます。これらの入力引数と出力引数によって、プロセスの入力と出力が定義されます。
21.10.1 BPMNプロセスへの入力および出力引数の追加手順
メッセージ開始および終了イベント、または送信および受信タスクを使用して操作を公開する場合、必要な入力および出力引数を定義できます。
BPMNプロセスに入力および出力引数を追加するには: