2017-01-31 11 views
0

私はアクティビティプロセスを持っていますが、それは私が期待するように動作していないようです。アクティビティサブプロセス信号

プロセスは非常に簡単です:

  1. 処理が開始されると、それはサブプロセスを開始します。
  2. サブプロセスには、イベント・キャッチ・イベントとユーザー・タスクの信号に分岐するパラレル・ゲートウェイがあります。
  3. singalが捕捉されると、サブプロセスはエラー(終了エラーイベント)をスローします。
  4. シグナルが捕捉されない間に、ユーザーはタスクを完了できます。
  5. その後、メインプロセスはそのエラーをキャッチし、処理を終了します。

私の問題:私はこのようなプロセスを4回開始し、1つのシナルを使用します。この信号が送信されると、4つすべてが終了するはずです。しかし、彼らはそうではありません。彼らはランダムな順序で終了しているようですか?いつの間にか1または2が終了しますが、それらのすべてではありません...私はエラー/例外を得ず、何が間違っているのか分かりません... いくつかのプロセスはちょうどそれらに送られるシグナルを捕まえていないようです。どうしてそんなことができますか?

プロセススキーマ:

enter image description here

答えて

1

あなたはすべての信号は、実際にこのステップをトリガーするかどうかを確認するには、「チェックキャッチ信号条件」へのロギングを追加しましたか? また、あなたはあなたが期待するほど多く持っているかどうかを判断するために、信号のサブスクリプションを照会することができます

リストの実行= runtimeService.createExecutionQuery() .signalEventSubscriptionName(「警告」) の.listを();

私は、あなたのチェックロジックが正しく処理されていないか、シグナルで待っている "トークン"を持っていないと思います。

グレッグ

+0

シグナルは捕捉されていませんでした(直ちに、私は彼らがすべきだと思ったように)、しかししばらくしてから。問題は修正されました。 – CrazySabbath

+0

うわー、人々が気付かないことの1つは、ジョブスケジューラアーキテクチャが即時の応答を保証しないことです。すべてのジョブが最終的に処理されますが、負荷に応じて時間がかかることがあります。あなたはそれを整理してうれしいです(アップ投票に感謝します:-)) –

0

私は、流動性、プロジェクト内の既存の信号境界イベント・テストに基づいて、単純なJUnitテスト(activitiと同じように振る舞うべき)

@Deployment(resources = "org/activiti/engine/test/bpmn/event/signal/SignalEventTest.testSignalBoundaryOnSubProcess.bpmn20.xml") 
public void testMultipleCatchEventsOnSubProcess() { 
ProcessInstance processInstance1 = runtimeService.startProcessInstanceByKey("signalEventOnSubprocess"); 
ProcessInstance processInstance2 = runtimeService.startProcessInstanceByKey("signalEventOnSubprocess"); 
ProcessInstance processInstance3 = runtimeService.startProcessInstanceByKey("signalEventOnSubprocess"); 

assertThat("There must be three subscriptions to the signal.", createEventSubscriptionQuery().count(), is(3L)); 

runtimeService.signalEventReceived("stopSignal"); 

assertProcessEnded(processInstance1.getProcessInstanceId()); 
assertProcessEnded(processInstance2.getProcessInstanceId()); 
assertProcessEnded(processInstance3.getProcessInstanceId()); 
} 

テストパスを作成しました。問題を再現するために失敗したjUnitテストを作成できますか(依存関係あり)

マーティン

+0

junitテストに感謝しますが、私は問題を解決しました(または、私がそれを理解したので問題はなかった)。 – CrazySabbath