プロセス間の通信
プロセスはメッセージの開始およびメッセージの終了イベント、送信および受信アクティビティ、またはメッセージのスローおよびメッセージの捕捉イベントを使用して操作できます。 プロセスは他のプロセスを呼び出す、またはサブプロセスを含むこともできます。
あるプロセスが別のプロセスを開始し、応答を待つ場合、プロセスは同期的に対話します。 あるプロセスが別のプロセスを開始し、両方のプロセスが独立して実行する場合、プロセスは非同期的に対話します。
| 対話タイプ | 説明 |
|---|---|
|
メッセージの開始およびメッセージの終了イベント |
メッセージの開始イベントのプロセスの入力引数を定義する場合、これらの引数にデータを指定してプロセスを開始する必要があります。 メッセージのスロー・イベントを使用したメッセージの開始イベント、または別のプロセスの送信アクティビティから開始するプロセスを非同期的に開始できます。 または、サービス・アクティビティを使用してそのようなプロセスを同期的に開始することもできます。 メッセージの開始イベントから開始されるプロセスは、デプロイ後にWebサービスとして公開されます。 したがって、それを開始するWebサービス・コンシューマとしてプロセスと接続することができます。 「Webサービス接続の作成」を参照してください。 メッセージの終了イベントのプロセスの出力引数を定義する場合、プロセスは完了時にこれらの引数にデータを指定します。 「入力引数または出力引数の定義」を参照してください。 |
|
送信および受信アクティビティ |
送信アクティビティはデータを送信し、他のプロセスを開始します。 受信アクティビティは他のプロセスの完了時にそこからのデータを受信します。 送信および受信アクティビティは境界イベントを含むことができます。メッセージのスローおよびメッセージの捕捉イベントではできません。 「プロセス間で通信するための送信および受信の使用」を参照してください。 呼出し側プロセスでの送信アクティビティについては、「他のプロセスの呼出し」を参照してください。 呼び出される側プロセスでの受信アクティビティまたは送信アクティビティについては、「入力引数または出力引数の定義」を参照してください。 |
|
メッセージのスローおよびメッセージの捕捉イベント |
メッセージのスロー・イベントはデータを送信し、他のプロセスを開始します。 メッセージの捕捉イベントは他のプロセスの完了時にそこからのデータを受信します。 「プロセス間で通信するためのメッセージのスローおよび捕捉の使用」を参照してください。 メッセージのスロー・イベントについては、「他のプロセスの呼出し」を参照してください。 メッセージの捕捉イベントについては、「入力引数または出力引数の定義」を参照してください。 |
|
サービス・アクティビティ |
サービス・アクティビティは他のプロセスまたはWebサービスを呼び出すことができます。 送信、受信およびコール・アクティビティと、メッセージのスローおよびメッセージの捕捉イベントは、他のプロセスを非同期的にのみ呼び出すことができます。 サービス・アクティビティはプロセスを非同期的または同期的に呼び出すことができます。 しかし、呼び出されたプロセスがメッセージの開始イベントで始まる場合、呼出しは同期的である必要があります。 Webサービスの詳細については、「Webサービス接続の作成」を参照してください。 「他のプロセスの呼び出し」を参照してください。 |
|
コール・アクティビティ |
コール・アクティビティは他のプロセスを子プロセスとして開始します。 親プロセスは子プロセスが完了するまで待機してから続行します。 これによりそれを呼び出す複数のプロセスでプロセスを再利用できます。 「子プロセス用の入力および出力引数の定義」を参照してください。 |
|
サブプロセス・アクティビティ |
サブプロセス・アクティビティには固有の開始および終了イベントがあるサブプロセスが含まれます。 サブプロセスはその親プロセスと切り離されません。 サブプロセス・アクティビティにより、プロセスの一部の複雑な詳細を隠し、プロセス全体をよりわかりやすくすることができます。 「Expand」 |
プロセス間で通信するための送信および受信の使用
送信アクティビティと受信アクティビティを使用して、別のビジネス・プロセスを開始し、そこからメッセージを受信します。 receiveアクティビティから始まり、sendアクティビティを含むプロセスは、「プロセス」内の他のプロセスおよびサービスが使用できるサービスとして公開されています。
次の図に、送信アクティビティが他のプロセスを開始し、受信アクティビティが応答を受信する方法を示します。
次のステップで、送信および受信アクティビティを使用してプロセス間で通信するための考えられるシナリオの概要を示します。
-
プロセスAが開始します。
-
プロセスAのフローが送信アクティビティに到達します。
-
送信アクティビティがプロセスBを開始します。
送信アクティビティの実装で、どのプロセスが開始するかを指定します。
-
プロセスAのフローが次のフロー要素へと進みます。
-
受信アクティビティはプロセスBのインスタンスを初期化します。
プロセスBの開始イベントでは「Trigger」値が「None」である必要があります。 受信アクティビティの実装では、「Create Instance」がチェックされている必要があります。
-
プロセスBが実行されます。
-
両方のプロセスの特定の動作に応じて、次のシナリオが発生する可能性があります。
-
プロセスAのフローが、プロセスBからの送信アクティビティとペアになっている受信アクティビティに到達すると、プロセスAのフローは応答を受信するまで待機します。
応答が受信されたら、プロセスAのフローが次のフロー要素へと進みます。
-
プロセスBのフローが、プロセスAの受信アクティビティとペアになっている送信アクティビティに到達すると、プロセスBは応答をプロセスAに送信します。
プロセスBのフローが次のフロー要素へと進みます。
-
-
両方のビジネス・プロセスが引き続き実行します。
後続の送信および受信のペアを使用して、2つのプロセス間の後続の通信を定義できます。
プロセス間で通信するためのメッセージのスローおよび捕捉の使用
メッセージ・スローとメッセージ・キャッチ・イベントの組み合わせを使用して、他のビジネス・プロセスを開始および通信します。
メッセージ・スロー・イベントを使用して別のビジネス・プロセスを開始する場合、次の条件を満たす必要があります。
-
開始されているビジネス・プロセスは非同期プロセスである必要があります。
メッセージのスロー・イベントを使用して同期プロセスを開始できますが、他のプロセスから同期的にメッセージを捕捉するメカニズムはありません。 同期プロセスを開始するには、サービス・アクティビティを使用します。
-
メッセージのスロー・イベントを最初に使用するとき、開始したプロセスのメッセージの開始イベントとペアにする必要があります。
これはプロセス・インスタンスを開始するのに必要です。 インスタンスが開始したら、2番目のプロセスの他のイベントにより捕捉された後続のメッセージのスロー・イベントを使用できます。
メッセージの開始イベントから開始されるプロセスはWebサービスとして公開されます。 「Webサービス接続の作成」を参照してください。
別のプロセスにより開始されたプロセスは子プロセスとはみなされません。 つまり、呼出し元のプロセスの強制終了イベントはメッセージのスロー・イベントで開始されたプロセスを停止しません。
次の図に、メッセージのスロー・イベントが他のプロセスを開始し、メッセージの捕捉イベントが応答を受信する方法を示します。
次のステップでは、メッセージ・スローおよびキャッチ・イベントを使用してプロセス間で通信するシナリオを説明します。
-
プロセスAが開始します。
-
プロセスAのフローが、プロセスBを開始するメッセージのスロー・イベントに到達します。
-
メッセージのスロー・イベントはメッセージをプロセスBのメッセージの開始イベントに送信します。
-
プロセスAのフローが次のフロー要素へと進みます。
-
メッセージの開始イベントはプロセスBのインスタンスを開始します。
-
プロセスBが実行されます。
-
両方のプロセスの特定の動作に応じて、次のシナリオが発生する可能性があります。
-
プロセスAのフローが、プロセスBからのメッセージのスロー・イベントとペアになっているメッセージの捕捉イベントに到達すると、プロセスAのフローはメッセージを受信するまで待機します。
メッセージが受信されたら、プロセスAのフローが次のフロー要素へと進みます。
-
プロセスBのフローが、プロセスAのメッセージの捕捉イベントとペアになっているメッセージのスロー・イベントに到達すると、プロセスBはメッセージをプロセスAにスローします。
プロセスBのフローが次のフロー要素へと進みます。
-
-
両方のプロセスも引き続き実行します。
後続のメッセージのスローおよびメッセージの捕捉イベントのペアを使用して、2つのプロセス間の後続の通信を定義できます。
入力引数または出力引数の定義
メッセージ開始およびメッセージ・キャッチ・イベントの入力引数と受信アクティビティの入力引数を定義できます。 メッセージの終了イベントと、他のプロセスから呼び出されたプロセスの送信アクティビティに対し出力引数を定義できます。


