Oracle® Fusion Middleware Oracle Business Process Managementモデリングおよび実装ガイド 11g リリース1(11.1.1) B61409-01 |
|
![]() 前 |
![]() 次 |
この章では、他のプロセスまたはサービスによって、サービスとして起動できるように、BPMNプロセスを公開するよう構成する方法を説明します。Oracle BPMでは、BPMNプロセス内のフロー・オブジェクトをプロセス操作として公開できます。他のBPMNプロセスおよびサービスによってこれらの操作を起動できます。
この章の内容は次のとおりです。
この章では、SOAコンポジットに関する知識があることを前提としています。SOAコンポジットの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。
プロセス・インタフェースとは、他のプロセスまたはサービスが使用できるようにBPMNプロセスが公開する操作のグループです。SOAコンポジットでは、BPMNプロセス・インタフェースは「公開されたサービス」セクションに表示されます。
他のプロセスおよびサービスが使用できるようにするためには、BPMNプロセスのインタフェースを定義する必要があります。定義するインタフェースには、他のプロセスおよびサービスが起動できる操作が含まれます。
同期プロセス操作は、入力および出力引数を定義します。
非同期プロセス操作を定義する際、対応するコールバック操作も定義する必要があります。非同期操作によって入力引数が定義され、コールバック操作によって出力引数が定義されます。
プロセス・インタフェースを定義するには、BPMNプロセスの操作を定義するか、またはビジネス・カタログから既存のインタフェースを使用できます。これらのどのオプションでも、メッセージ・イベントまたは送信および受信タスクを使用して実装できます。
プロセス・インタフェースには、他のサービスおよびプロセスがBPMNプロセスと対話するために起動可能な操作が含まれます。これらの操作は、同期操作または非同期操作のいずれをも使用できます。
プロセス・インタフェースは、メッセージ・イベントまたは送信および受信タスクを使用して定義できます。
BPMNプロセス内の操作を公開するには、イニシエータとして構成されたメッセージ開始イベントまたはメッセージ・キャッチ・イベントを使用できます。これらのメッセージ・イベントにより、同期操作または非同期操作のいずれにするかを定義できます。また、プロセスの入力も定義できます。
プロセス・インタフェースには、BPMNプロセスの開始イベントを公開する操作が必ず含まれている必要があります。このBPMNプロセスを起動するプロセスまたはサービスは、常に、プロセス内の操作を起動する前に、開始イベントに対応する操作を起動する必要があります。
プロセスの出力を定義するには、操作を定義するイベントを続行するメッセージ・スロー・イベントまたはメッセージ終了イベントを構成する必要があります。操作が非同期の場合、これらのイベントはコールバック操作も定義します。
インタフェースに非同期操作が含まれている場合、この操作の結果を返すコールバック操作も定義する必要があります。BPMNプロセスでコールバック操作を定義する方法は、20.2.1項「メッセージ・イベントを使用したBPMNプロセスのコールバック・インタフェースの定義」を参照してください。
図20-1では、インタフェースでメッセージ開始メッセージ・イベントを公開するBPMNプロセスを示しています。また、SOAコンポジット・エディタによってこの操作がどのように表示されるかも示されています。
さらに、プロセス・インタフェースには、プロセス中のキャッチ・メッセージ・イベントによって公開される操作を含められます。キャッチ・メッセージ・イベントに対応する操作を起動する前に、常に、メッセージ開始イベントに対応する操作を起動する必要があります。
図20-2では、メッセージ開始メッセージ・イベントに加え、インタフェースでキャッチ・メッセージ・イベントを公開するBPMNプロセスを示しています。また、SOAコンポジット・エディタによってこの操作がどのように表示されるかも示されています。
図20-2 インタフェースでメッセージ開始およびメッセージ・キャッチ・イベントを公開するBPMNプロセス
BPMNプロセスは、定義する各非同期操作に対し、コールバック操作を公開する必要があります。
コールバック操作は、非同期操作を起動したサービスまたはプロセスにレスポンスを返します。コールバック操作によって出力引数を定義できます。出力引数を定義する場合、データ・アソシエーションを使用して、その値をプロセス内のデータ・オブジェクトにマッピングする必要があります。
メッセージ・スロー・イベントまたはメッセージ終了イベントを使用してコールバック操作を定義できます。
別のBPMNプロセスから非同期BPMNプロセスを起動する方法は、第19章「メッセージ・イベントを使用した非同期サービスおよび非同期BPMNプロセスの起動」を参照してください。
図20-3では、BPMNプロセスのコールバック操作を公開する終了イベントを示しています。また、SOAコンポジット・エディタでコールバック操作がどのように表示されるかも示されています。
注意: 操作の公開に送信タスクを使用した場合、コールバック操作の定義に受信タスクを使用する必要があります。送信イベントを使用したコールバック操作の定義方法は、20.7項「送信および受信タスクを使用した非同期プロセス操作の定義」を参照してください。 |
メッセージ・イベントを使用して、BPMNプロセスの非同期操作を定義できます。非同期操作を公開する際、開始操作も公開する必要があります。非同期サービスを起動するクライアントは、まず開始操作を起動してプロセス内にインスタンスを作成する必要があります。非同期操作は作成したインスタンスで実行されます。
また、定義した各非同期操作に対し、コールバック操作を指定する必要があります。
BPMNプロセスの開始イベントを非同期操作として公開できます。
BPMNプロセスの開始操作を非同期として構成するには:
BPMNプロセスを編集します。
開始アクティビティを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「実装タイプ」がメッセージでない場合、「メッセージ」に変更します。
「会話」セクションが表示されます。
「会話プロパティ」セクションで、「実装」リストから「インタフェースの定義」を選択します。
非同期BPMNプロセスが入力データを必要とする場合、プロセスの入力を「引数の定義」セクションで定義する必要があります。
プロセスの入力の定義方法は、20.10項「プロセスの入力および出力の定義」を参照してください。
「拡張」セクションを展開します。
「非同期」を選択します。
開始操作の名前を入力します。
操作に指定した名前が、SOAコンポジットに表示する際に使用されます。
「OK」をクリックします。
20.3.2項「メッセージ・イベントを使用したコールバック操作の定義方法」の手順を実行し、非同期BPMNプロセスのコールバック操作を定義します。
メッセージ・イベントを使用して、非同期操作とペアになるコールバック操作を公開できます。
コールバック操作を定義するには:
BPMNプロセスを編集します。
プロセス中の対応する操作の応答を返す場所を決定します。
プロセスが完了する前に応答を返す場合、プロセスに中間メッセージ・スロー・イベントを追加します。
注意: プロセスが完了するときに応答を返す場合、メッセージ終了イベントを追加するか、実装タイプを終了からメッセージに変更します。 |
メッセージ・スロー・イベントまたはメッセージ終了イベントを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
スロー・メッセージ・イベントを編集する場合、「会話」セクションで「続行」を選択します。終了メッセージ・イベントを編集する場合、これがデフォルトの選択肢で、変更できません。
「イニシエータ」リストから、コールバックに関連付けるイベントを選択します。
非同期プロセスが出力データを返すようにする場合、プロセスの出力を「引数の定義」セクションで定義する必要があります。
プロセスの出力の定義方法は、20.10項「プロセスの入力および出力の定義」を参照してください。
「拡張」セクションを展開します。
コールバック操作の名前を変更する場合、名前を入力します。
操作に指定した名前が、SOAコンポジットに表示する際に使用されます。
「OK」をクリックします。
プロセスの開始イベントを起動する際、プロセス・フローを続行する前にレスポンスを待機しないでください。レスポンスを取得するには、プロセスのコールバック操作を起動する必要があります。
非同期BPMNプロセスは、メッセージ・イベントまたは送信および受信タスクを使用して起動できます。
非同期BPMNプロセスを起動する方法は、19.3項「メッセージ・イベントを使用した非同期サービスおよび非同期BPMNプロセスの起動」および19.7項「送信および受信タスクを使用した非同期サービスおよび非同期BPMNプロセスの起動」を参照してください。
SOAコンポジットで、非同期プロセスのインタフェースには、最低2つの操作が表示されます。プロセスを開始する操作と、そのコールバック操作です。
中間メッセージ・イベントを非同期操作として公開できます。
非同期操作をBPMNプロセス・インタフェースに追加するには:
BPMNプロセスを編集します。
プロセス中の新しい操作を追加する場所を決定します。
中間キャッチ・メッセージ・イベントを追加します。
キャッチ・メッセージ・イベントを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「会話」セクションで「開始」を選択します。
「プロパティ」セクションで、「実装」リストから「インタフェースの定義」を選択します。
操作に出力引数を使用する場合、入力引数を定義します。
出力引数の定義方法は、20.10項「プロセスの入力および出力の定義」を参照してください。
「拡張」セクションを展開します。
「非同期」を選択します。
コールバック操作の名前を変更する場合、「操作名」フィールドに名前を入力します。
「OK」をクリックします。
20.3.2項「メッセージ・イベントを使用したコールバック操作の定義方法」の手順を実行し、この非同期操作のコールバック操作を定義します。
メッセージ・イベントを使用して、BPMNプロセスの同期操作を定義できます。同期操作を定義するには、メッセージ開始またはキャッチ・イベント、およびそれに続くメッセージ・スローまたはキャッチを使用します。メッセージ開始またはキャッチ・イベントはプロセスの入力を定義します。メッセージ・スローまたは終了イベントはプロセスの出力を定義します。
メッセージ・キャッチ・イベントを使用して同期操作を定義する場合、開始操作も定義する必要があります。まず開始操作を起動した後に同期操作を起動し、プロセス内にインスタンスを作成する必要があります。同期操作は作成したインスタンスで実行されます。
同期BPMNプロセスの起動方法は、19.5項「サービス・タスクを使用したサービスおよびBPMNプロセスの同期操作の起動」を参照してください。
BPMNプロセスのメッセージ開始イベントを同期操作として公開できます。
メッセージ・イベントを使用したBPMNプロセスの開始操作を同期として構成するには:
BPMNプロセスを編集します。
開始アクティビティを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「実装タイプ」がメッセージでない場合、「メッセージ」に変更します。
「会話」セクションが表示されます。
「会話プロパティ」セクションで、「実装」リストから「インタフェースの定義」を選択します。
同期BPMNプロセスが入力データを必要とする場合、プロセスの入力を「引数の定義」セクションで定義する必要があります。
プロセスの入力の定義方法は、20.10項「プロセスの入力および出力の定義」を参照してください。
「拡張」セクションを展開します。
「同期」を選択します。
開始操作の名前を入力します。
操作に指定した名前が、SOAコンポジットに表示する際に使用されます。
「OK」をクリックします。
20.4.2項「同期プロセスの終了イベントの構成方法」の手順に従って、終了イベントを構成します。
注意: 同期開始イベントを追加する際、同じ会話の一部である終了またはキャッチ・メッセージ・イベントも追加する必要があります。終了またはキャッチ・メッセージ・イベントは開始イベントに続くものなので、これらも同期イベントです。 |
開始イベントを同期操作として公開する場合、プロセスの終了イベントを同期として構成する必要があります。
同期プロセスの終了イベントを構成するには:
終了イベントを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「実装タイプ」がメッセージでない場合、「メッセージ」に変更します。
「会話」セクションが表示されます。
選択されているイニシエータ・ノードがない場合、「イニシエータ・ノード」リストからプロセスの開始イベントを選択します。
インタフェースを定義するサブセクションが「プロパティ」セクションに表示されます。
同期BPMNプロセスが出力データを返す場合、プロセスの出力を「引数の定義」セクションで定義する必要があります。
プロセスの出力の定義方法は、20.10項「プロセスの入力および出力の定義」を参照してください。
同期BPMNプロセスが出力データを返す場合、プロジェクト内のデータ・オブジェクトがどのようにプロセスの出力にマッピングされるかを指定する必要があります。
データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。
「OK」をクリックします。
プロセス開始イベントにより、同期操作が公開されます。プロセス開始イベントをクライアントから起動する際、プロセス・フローを続行する前に、レスポンスを待機する必要があります。同期プロセスを起動するサービス・タスクは、トークンがプロセス中の次のアクティビティに移動する前に、同期プロセスが完了するのを待ちます。
BPMNプロセスの同期操作を起動するには、サービス・タスクを使用する必要があります。
同期BPMNプロセスの起動方法は、19.5項「サービス・タスクを使用したサービスおよびBPMNプロセスの同期操作の起動」を参照してください。
SOAコンポジットでは、同期プロセスのインタフェースには、開始イベントの1つの操作のみが表示されます。
プロセスのインタフェースを定義するメッセージ・イベントを構成する際、インタフェースを定義するかわりに既存のインタフェースを使用できます。
ビジネス・カタログ内の「参照」事前定義済モジュールの任意の操作を選択して、プロセス操作のインタフェースとして使用できます。
操作のインタフェースを定義するために選択した参照の操作により、使用する操作が同期または非同期のどちらであるかが決定します。
ビジネス・カタログのインタフェースを使用してメッセージ開始またはメッセージ・キャッチ・イベントを定義する場合、関連付けられたメッセージ・スローまたはメッセージ終了イベントもビジネス・カタログのインタフェースを使用する必要があります。定義する操作が非同期の場合、メッセージ・スローまたはメッセージ終了イベントはコールバック操作のみ使用できます。
一般には、プロセス・インタフェースを定義する際、コンポジットに存在するインタフェースを使用するためにビジネス・カタログのインタフェースを使用し、後にこのインタフェースからBPMNプロセスにワイヤーを追加します。
同じインタフェースの実装を複数提供できます。たとえば、既存のインタフェースをBPELおよびBPMNテクノロジで実装できます。BPMNインタフェースを実装するには、ビジネス・カタログのインタフェースを使用してプロセスを定義する必要があります。
図20-4では、BPMNプロセスがどのようにしてBPELプロセスのインタフェースを再利用してBPMNでパラレルな実装を提供できるかを示しています。BPMNプロセスは、ビジネス・カタログに表示されるBPELプロセスのインタフェースを使用して操作を定義します。さらに、SOAコンポジット・エディタで、BPMNプロセスがインタフェースを定義するために別のSOAコンポジットを使用していることが表示されている様子を示しています。
ビジネス・カタログのインタフェースを使用して、BPMNプロセスのインタフェースを定義できます。
ビジネス・カタログのインタフェースを使用して操作を定義するには:
BPMNプロセスを編集します。
プロセス・インタフェースの定義に使用する開始イベントまたはキャッチ・イベントを追加します。
開始またはキャッチ・イベントを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
キャッチ・メッセージ・イベントを編集する場合、「会話」セクションで「開始」を選択します。開始イベントを編集する場合、これがデフォルトの選択肢で、変更できません。
「プロパティ」セクションで、「実装」リストから「カタログからのインタフェース」を選択します。
「プロパティ」セクションが変更され、「名前」および「操作」が表示されます。
「名前」フィールドの隣の「参照」ボタンをクリックします。
「タイプ」ダイアログが表示されます。
プロセス・インタフェースとして使用する参照を選択します。
「OK」をクリックします。
「操作」リストで、プロセス・インタフェースとして使用する操作を選択します。
選択したインタフェースが入力データを必要とする場合、メッセージ・イベントのデータ・アソシエーションを構成して、プロジェクト内のデータ・オブジェクトがどのようにこの入力データにマッピングされるかを指定する必要があります。
データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。
「OK」をクリックします。
既存のメッセージ終了またはメッセージ・スロー・イベントがビジネス・カタログのインタフェースを使用するよう構成するか、新しいイベントを追加して構成します。20.5.2項「メッセージ・イベントを使用するビジネス・カタログのインタフェースを使用するようメッセージ終了またはメッセージ・スロー・イベントを構成する方法」の手順を参照してください。
ビジネス・カタログのインタフェースを使用して、BPMNプロセスのインタフェースを定義できます。
ビジネス・カタログのインタフェースを使用するようメッセージ終了またはメッセージ・スロー・イベントを構成するには:
BPMNプロセスを編集します。
メッセージ終了またはメッセージ・スロー・イベントを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「会話」セクションで「続行」を選択します。
「プロパティ」セクションが変更され、「イニシエータ・ノード」、「名前」および「操作」が表示されます。
「イニシエータ・ノード」リストで、プロセス・インタフェースを定義するメッセージ開始またはメッセージ・キャッチ・イベントを選択します。
「名前」フィールドの隣の「参照」ボタンをクリックします。
「タイプ」ダイアログが表示されます。
メッセージ・キャッチまたはメッセージ終了インタフェースとして使用するコンポーネントを選択します。
「OK」をクリックします。
「操作」リストで、メッセージ・キャッチまたはメッセージ終了インタフェースとして使用する操作を選択します。
選択したインタフェースが出力データを必要とする場合、メッセージ・イベントのデータ・アソシエーションを構成して、プロジェクト内のデータ・オブジェクトがどのようにこの出力データにマッピングされるかを指定する必要があります。
データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。
「OK」をクリックします。
定義される操作は、ビジネス・カタログ内のインタフェースの操作の署名を使用します。BPMNプロセスで操作を起動するには、ビジネス・カタログのインタフェースの操作を起動するために使用するのと同じ操作名および入力を使用する必要があります。BPMNプロセスの操作は、ビジネス・カタログのインタフェースの操作と同じ出力を返します。
SOAコンポジットには、BPMNプロセスと、その操作の定義に使用されたインタフェースとの間にワイヤーが表示されます。
ビジネス・カタログのインタフェースを使用してすべてのプロセス操作を定義すると、BPMNプロセスWSDLを削除するかどうかJDeveloperによって尋ねられます。BPMNプロセスはインタフェースを定義せず、既存のインタフェースを使用するため、WSDLは不要になっており、削除しても構いません。
プロセス・インタフェースには、他のサービスおよびプロセスがBPMNプロセスを実行するために起動可能な操作が含まれます。これらの操作は、同期操作または非同期操作のいずれをも使用できます。
プロセス・インタフェースは、メッセージ・イベントまたは送信および受信タスクを使用して定義できます。
メッセージ・イベントを使用したプロセス・インタフェースの定義方法は、20.2項「メッセージ・イベントを使用したBPMNプロセス・インタフェースの定義」を参照してください。
BPMNプロセス内の操作を公開するために、受信タスクを使用できます。受信タスクにより、操作が同期または非同期のいずれであるかが決定されます。また、プロセスの入力も定義できます。
プロセス・インタフェースには、インスタンスを作成する受信タスクを公開する操作が必ず含まれている必要があります。このBPMNプロセスを起動するプロセスまたはサービスは、常に、プロセス内の操作を起動する前に、この操作を起動する必要があります。
プロセスの出力を定義するには、操作を定義する受信を続行する送信タスクを構成する必要があります。操作が非同期の場合、送信タスクはコールバック操作も定義します。
インタフェースに非同期操作が含まれている場合、この操作の結果を返すコールバック操作も定義する必要があります。BPMNプロセスでコールバック操作を定義する方法は、20.6.1項「送信タスクを使用したBPMNプロセスのコールバック・インタフェースの定義」を参照してください。
さらに、プロセス・インタフェースには、プロセス中の受信タスクによって公開される操作を含められます。受信タスクに対応する操作を起動する前に、常に、インスタンスを作成するよう構成された受信タスクに対応する操作を起動する必要があります。
図20-5では、インスタンスを作成する受信タスクに加え、インタフェースで受信タスクを公開するBPMNプロセスを示しています。また、SOAコンポジット・エディタによってこれらの操作がどのように表示されるかも示されています。
操作の公開に送信タスクを使用した場合、コールバック操作の定義に受信タスクを使用する必要があります。送信イベントを使用したコールバック操作の定義方法は、20.6.1項「送信タスクを使用したBPMNプロセスのコールバック・インタフェースの定義」を参照してください。
BPMNプロセスは、定義する各非同期操作に対し、コールバック操作を公開する必要があります。送信タスクを使用してコールバック操作を定義できます。
コールバック操作により、非同期操作を起動したサービスまたはプロセスにレスポンスが返されます。サービスまたはプロセスが応答を待機している場合、即座に受信します。サービスまたはプロセスが応答を待っていない場合、プロセスまたはコード中の応答を待機する位置に到達すると応答を受信します。
コールバック操作によって出力引数を定義できます。出力引数を定義する場合、データ・アソシエーションを使用して、その値をプロセス内のデータ・オブジェクトにマッピングする必要があります。
図20-5に、BPMNプロセスのコールバック操作を公開する受信タスクを示します。
送信および受信タスクを使用して、BPMNプロセスの非同期操作を定義できます。非同期操作を公開する際、開始操作も公開する必要があります。非同期サービスを起動するプロセスは、まず開始操作を起動してプロセス内にインスタンスを作成する必要があります。非同期操作は作成したインスタンスで実行されます。
また、定義した各非同期操作に対し、コールバック操作を指定する必要があります。
送信および受信タスクを使用して非同期プロセス操作を定義できます。
送信および受信タスクを使用して非同期プロセス操作を定義するには:
BPMNプロセスを編集します。
開始および終了イベントのトリガーをNoneに変更します。
イベントを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「実装タイプ」リストから「なし」を選択します。
「OK」をクリックします。
開始イベント直後に受信タスクを追加します。
受信タスクを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「インスタンスの作成」を選択します。
「会話」セクションで「開始」を選択します。
「会話プロパティ」セクションで「インタフェースの定義」を選択します。
非同期BPMNプロセスが入力データを必要とする場合、プロセスの入力を「引数の定義」セクションで定義する必要があります。
プロセスの出力の定義方法は、20.10項「プロセスの入力および出力の定義」を参照してください。
「拡張」セクションを展開します。
「非同期」を選択します。
開始操作の名前を入力します。
操作に指定した名前が、SOAコンポジットに表示する際に使用されます。
「OK」をクリックします。
20.7.3項「送信タスクを使用したコールバック・プロセス操作の定義方法」の手順を実行し、非同期BPMNプロセスのコールバック操作を定義します。
受信タスクを非同期プロセス操作として公開できます。
受信タスクを使用して非同期プロセス操作を追加するには:
BPMNプロセスを編集します。
プロセス中の新しい操作を追加する場所を決定します。
決定した場所に受信タスクを追加します。
受信タスクを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「会話」セクションで「開始」を選択します。
「会話プロパティ」セクションで「インタフェースの定義」を選択します。
非同期BPMNプロセスが入力データを必要とする場合、プロセスの入力を「引数の定義」セクションで定義する必要があります。
プロセスの出力の定義方法は、20.10項「プロセスの入力および出力の定義」を参照してください。
「拡張」セクションを展開します。
「非同期」を選択します。
開始操作の名前を入力します。
操作に指定した名前が、SOAコンポジットに表示する際に使用されます。
「OK」をクリックします。
送信タスクを、非同期プロセス操作とペアになるコールバック操作として公開できます。
送信タスクを使用して非同期プロセスのコールバック操作を定義する方法:
BPMNプロセスを編集します。
プロセス中の対応する操作の応答を返す場所を決定します。
プロセス中の決定した場所に送信タスクを追加します。
送信タスクは、プロセス・フロー中の受信タスクよりも後に配置する必要があります。
送信タスクを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「会話」セクションで「続行」を選択します。
「イニシエータ」リストから、コールバックに関連付ける受信タスクを選択します。
非同期プロセスが出力データを返すようにする場合、プロセスの出力を「引数の定義」セクションで定義する必要があります。
プロセスの出力の定義方法は、20.10項「プロセスの入力および出力の定義」を参照してください。
「拡張」セクションを展開します。
「同期」または「非同期」を選択します。
開始操作の名前を変更する場合、名前を入力します。
操作に指定した名前が、SOAコンポジットに表示する際に使用されます。
「OK」をクリックします。
非同期操作および対応するコールバック操作は、他のプロセスによって起動が可能です。
定義したプロセスの非同期操作を起動する際、プロセス・フローを続行する前にレスポンスを待機しないでください。レスポンスを取得するには、プロセスのコールバック操作を起動する必要があります。
SOAコンポジットには、BPMNプロセス・インタフェースに非同期操作およびそのコールバックが表示されます。
非同期BPMNプロセスは、メッセージ・イベントまたは送信および受信タスクを使用して起動できます。
非同期BPMNプロセスを起動する方法は、19.3項「メッセージ・イベントを使用した非同期サービスおよび非同期BPMNプロセスの起動」および19.7項「送信および受信タスクを使用した非同期サービスおよび非同期BPMNプロセスの起動」を参照してください。
送信および受信タスクを使用して、BPMNプロセス内の同期操作を定義できます。同期操作は、受信タスクと、受信タスクを続行する送信タスクを使用して定義します。受信タスクはプロセスの入力を定義し、送信タスクはプロセスの出力を定義します。
送信タスクを使用して同期操作を定義する場合、開始操作も定義する必要があります。まず開始操作を起動した後に同期操作を起動し、プロセス内にインスタンスを作成する必要があります。同期操作は作成したインスタンスで実行されます。
別のBPMNプロセスからBPMNプロセス内の同期操作を起動する方法は、第19章「サービス・タスクを使用したサービスおよびBPMNプロセスの同期操作の起動」を参照してください。
送信および受信タスクを同期プロセス操作として公開できます。
プロセス操作を同期として構成するには:
BPMNプロセスを編集します。
開始および終了イベントのトリガーをNoneに変更します。
イベントを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「実装タイプ」リストから「なし」を選択します。
「OK」をクリックします。
開始イベントの後に受信タスクを追加します。
受信タスクを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「インスタンスの作成」を選択します。
「会話プロパティ」セクションで「インタフェースの定義」を選択します。
同期BPMNプロセスが入力データを必要とする場合、プロセスの入力を「引数の定義」セクションで定義する必要があります。
プロセスの入力の定義方法は、20.10項「プロセスの入力および出力の定義」を参照してください。
「拡張」セクションを展開します。
「同期」を選択します。
開始操作の名前を入力します。
操作に指定した名前が、SOAコンポジットに表示する際に使用されます。
「OK」をクリックします。
非同期操作および対応するコールバック操作は、他のプロセスによって起動が可能です。
BPMNプロセスの同期操作を起動するには、サービス・タスクを使用する必要があります。
同期BPMNプロセスの起動方法は、19.5項「サービス・タスクを使用したサービスおよびBPMNプロセスの同期操作の起動」を参照してください。
SOAコンポジットでは、同期プロセスのインタフェースには、受信タスクの1つの操作のみが表示されます。
プロセスのインタフェースを定義する受信タスクを構成する際、インタフェースを定義するかわりに既存のインタフェースを使用できます。
ビジネス・カタログ内のコンポーネントの任意の操作を選択して、プロセス操作のインタフェースとして使用できます。
操作のインタフェースを定義するために選択したビジネス・カタログ内のコンポーネントの操作により、使用する操作が同期または非同期のどちらであるかが決定します。
ビジネス・カタログのインタフェースを使用して受信タスクを定義する場合、関連付けられた送信タスクもビジネス・カタログのインタフェースを使用する必要があります。定義する操作が非同期の場合、メッセージ送信タスクはコールバック操作のみ使用できます。
図20-6では、ビジネス・カタログのBPELプロセスを使用して操作を定義するプロセスを示しています。また、BPMNプロセスがインタフェースの定義に別のSOAコンポーネントを使用することがSOAコンポジット・エディタに表示されています。
図20-6 送信および受信タスクを使用して定義されたビジネス・カタログのインタフェースを使用するBPMNプロセス
ビジネス・カタログのインタフェースを使用して、BPMNプロセスのインタフェースを定義できます。
ビジネス・カタログのインタフェースを使用して操作を定義するには:
BPMNプロセスを編集します。
プロセス・インタフェースの定義に使用する開始イベントまたはキャッチ・イベントを追加します。
開始またはキャッチ・イベントを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
キャッチ・メッセージ・イベントを編集する場合、「会話」セクションで「続行」を選択します。開始イベントを編集する場合、これがデフォルトの選択肢で、変更できません。
「プロパティ」セクションで「カタログからのインタフェース」を選択します。
「プロパティ」セクションが変更され、「名前」および「操作」が表示されます。
「名前」フィールドの隣の「参照」ボタンをクリックします。
「タイプ」ダイアログが表示されます。
プロセス・インタフェースとして使用するコンポーネントを選択します。
「OK」をクリックします。
「操作」リストで、プロセス・インタフェースとして使用する操作を選択します。
選択したインタフェースが入力データを必要とする場合、メッセージ・イベントのデータ・アソシエーションを構成して、プロジェクト内のデータ・オブジェクトがどのようにこの入力データにマッピングされるかを指定する必要があります。
データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。
「OK」をクリックします。
既存のメッセージ終了またはメッセージ・スロー・イベントがビジネス・カタログのインタフェースを使用するよう構成するか、新しいイベントを追加して構成します。20.5.2項「メッセージ・イベントを使用するビジネス・カタログのインタフェースを使用するようメッセージ終了またはメッセージ・スロー・イベントを構成する方法」の手順を参照してください。
ビジネス・カタログのインタフェースを使用して、BPMNプロセスのインタフェースを定義できます。
ビジネス・カタログのインタフェースを使用するようメッセージ終了またはメッセージ・スロー・イベントを構成するには:
BPMNプロセスを編集します。
メッセージ終了またはメッセージ・スロー・イベントを右クリックします。
「プロパティ」を選択します。
「実装」タブをクリックします。
「会話」セクションで「続行」を選択します。
「プロパティ」セクションが変更され、「イニシエータ・ノード」、「名前」および「操作」が表示されます。
「イニシエータ・ノード」リストで、プロセス・インタフェースを定義するメッセージ開始またはメッセージ・キャッチ・イベントを選択します。
「名前」フィールドの隣の「参照」ボタンをクリックします。
「タイプ」ダイアログが表示されます。
メッセージ・キャッチまたはメッセージ終了インタフェースとして使用するコンポーネントを選択します。
「OK」をクリックします。
「操作」リストで、メッセージ・キャッチまたはメッセージ終了インタフェースとして使用する操作を選択します。
選択したインタフェースが入力データを必要とする場合、メッセージ・イベントのデータ・アソシエーションを構成して、プロジェクト内のデータ・オブジェクトがどのようにこの入力データにマッピングされるかを指定する必要があります。
データ・アソシエーションを構成する方法は、8.13項「データ・アソシエーションの概要」を参照してください。
「OK」をクリックします。
定義される操作は、ビジネス・カタログ内のインタフェースの操作の署名を使用します。BPMNプロセスで操作を起動するには、ビジネス・カタログのインタフェースの操作を起動するために使用するのと同じ操作名および入力を使用する必要があります。BPMNプロセスの操作は、ビジネス・カタログのインタフェースの操作と同じ出力を返します。
SOAコンポジットには、BPMNプロセスと、その操作の定義に使用されたインタフェースとの間にワイヤーが表示されます。
ビジネス・カタログのインタフェースを使用してすべてのプロセス操作を定義すると、BPMNプロセスWSDLを削除するかどうかJDeveloperによって尋ねられます。BPMNプロセスはインタフェースを定義せず、既存のインタフェースを使用するため、WSDLは不要になっており、削除しても構いません。
操作をBPMNプロセスに追加すると、プロセス内で、他のプロセスまたはサービスがこの操作との通信に使用できる位置を定義することになります。
プロセスと、他のプロセスまたはサービスとの間の通信には、通常、入力が必要で、出力が返されます。
BPMNプロセス操作の定義に使用するフロー・イベントを使用して、入力および出力引数を定義できます。これらの入力および出力引数により、プロセスの入力および出力が定義されます。
メッセージ開始および終了イベント、または送信および受信タスクを使用して操作を公開する場合、必要な入力および出力引数を定義できます。
BPMNプロセスに入力および出力引数を追加するには:
「引数の定義」セクションで「追加」ボタンをクリックします。
「引数の作成」ダイアログが表示されます。
引数を識別するための名前を入力します。
「その他のタイプを参照します。」ボタンをクリックします。
「タイプの参照」ダイアログが表示されます。
「タイプ」リストから基本データ型を選択するか、「<コンポーネント>」を選択して複合データ型を使用します。
「<コンポーネント>」を選択した場合、選択可能な複合データ型のリストからコンポーネントを選択します。
「OK」をクリックします。
「タイプの参照」ダイアログが閉じ、選択したデータ型が「引数の作成」ダイアログの「タイプ」フィールドに表示されます。
「OK」をクリックします。
引数が「引数の定義」表に表示されます。
BPMNプロセスの引数の名前およびタイプを変更できます。
BPMNプロセスの入力および出力引数を編集するには:
「引数の定義」表から、引数を選択します。
「引数の定義」セクションで「編集」ボタンをクリックします。
「引数の編集」ダイアログが表示されます。
タイプの名前を変更します。
「OK」をクリックします。
「引数の定義」の引数に、更新した名前およびタイプが表示されます。