2016-10-12 5 views
0

私はBPMN 2.0(Camunda)の世界では非常に新しいです。以下に説明する、かなり複雑なワークフローをモデル化する必要があります。どんな助けも高く評価されます!最後のイベントが発生したときにイベントをループするのを止める方法はありますか?

単一のプロセスには、外部システムからのタスクイベントをキャプチャする「イベントループ」があり、そのタスクを非同期的に外部システムに送信し、POST休止コールバックメカニズムを使用してその完了ステータスを待ちます。タスクリストの終了を示す特定のメッセージが受信されるまで、任意の数のそのようなタスクイベントが来る可能性があります。この時点で、メインプロセスは、非同期に送信されたすべてのタスクが完了したか、まだ実行中のタスクが完了するのを待つかを確認する必要があります。いずれかのタスクが失敗した場合、プロセス全体には失敗とマークする必要があります。

答えて

0

このシナリオは、当社の顧客で実装したシナリオと非常によく似ています。

しかし、あなたは別の方法で問題について考える必要があります。 Camundaまたはその前身エンジン(Activiti)のどちらも、私が「耐久性のある」メッセージという用語を好むものを扱うことはできません。 「耐久性のある」メッセージは、エンジンが来てそのエンジンを探すまでエンジン内で持続するメッセージです。一般に、JMSなどのpub/sobメッセージプラットフォームを使用している場合、これは問題ではありません。しかし、tcp経由でhttp経由で通信している場合は、メッセージが間違っているか失われている可能性があるので、面倒なことがあります。

したがって、私は、あなたがtcp上でhttpを使ってnを計画していると仮定しています(あなたの説明に基づいて)。

メッセージを失うことがないように、「ループ」パラダイムを放棄する必要があります。ループを使用すると、メッセージが入ったときにプロセスインスタンスが受信タスクを待つことを保証できません。

ループを使用するのではなく、ループを使用するのではなく、メッセージ開始イベントの場合、メッセージ開始イベントには、関連するインスタンス間の相関関係として機能するビジネスデータキーが含まれます。

基本的な流れは以下の通りです:流れは非常にシンプルであることを

enter image description here

はお知らせ、メッセージを受け取り、非同期呼び出しを行い、終了した後、成功メッセージを待ちます。

着信メッセージがリストタスクの終了かどうかを判断する判断ゲートウェイがあります。これが検出された場合、分岐し、同じ相関キーを使用してアクティブなインスタンスに照会し、インスタンスtiが失敗または完了するのを待ちます。完了すると、最終タスクプロセスインスタンスが完了し、適切な監査証跡が更新されます。

インスタンスANYの完了時に失敗すると、「最終タスク」インスタンスがエラー状態を処理します。

+0

ありがとう、グレッグ!それは私にとって非常に良い出発点です。 –

+0

心配はありませんPelykh、あなたが受け入れられ、upvoteとして回答者を設定することができれば私は本当に感謝します。 –

0

これを達成するために、activitiの受信タスクを使用できます。

http://www.activiti.org/userguide/#bpmnReceiveTask

私は私のワークフローで、我々は、外部アプリケーションからの入力を待たなければならなかった似たような状況がありました。待機タスクを使用すると、そのデータを受け取ったときに、このタスクを明示的に通知して、実行が次のステージに移動するようにする必要があります。

関連する問題