タイムアウト後にメッセージをコンシュームする中間プロセスのreceiveアクティビティに関する必知事項

タイムアウトによって発生した例外が処理されない場合は、receiveアクティビティで構成されたタイムアウトが期限切れになった後も、BPELプロセスによって中間プロセスのreceiveアクティビティのメッセージがコンシュームされます。このようなシナリオでは、コールバック・メッセージは配信時にコンシュームされます。これは予想された動作です。

たとえば、次のタスクを実行するとします。

  • クライアントBPELプロセスおよびサービスBPELプロセスでSOAコンポジット・アプリケーションを作成し、非同期のinvokeアクティビティおよびreceiveアクティビティを使用してメッセージを交換する。

  • クライアントBPELプロセスのreceiveアクティビティの「タイムアウト」タブで、30秒のタイムアウトを構成する。

  • サービスBPELプロセスに5分間待機するwaitアクティビティを構成する。

タイムアウトが発生した後は、クライアントBPELプロセスが引き続き実行中の状態ではなく、フォルト状態で完了済としてマークされ、サービスBPELプロセスからのコールバック・メッセージが無視されることが予想されます。ただし、クライアントBPELプロセスでタイムアウト・フォルトがスローされた場合、そのプロセスは実行中の状態のままになります。サービスBPELプロセスがwaitアクティビティの完了から5分後に応答すると、レスポンスがクライアントBPELプロセスに返信されてコンシュームされ、実行中のプロセス・インスタンスに対して調整されます。