3

ワークフローには、次のような複数インスタンスの呼び出しアクティビティがあります。

<callActivity id="loopFoos" calledElement="${workflowResolver.resolveWorkflowName(foo)}">
    <multiInstanceLoopCharacteristics isSequential="false" activiti:collection="${foos}" activiti:elementVariable="foo" />
</callActivity>

問題は、一部のコレクションが空であり、例外が発生することです。これは、Activiti がコレクション内に少なくとも 1 つの要素があると想定しているためです。すべてのサブワークフロー呼び出しについて決定を下すことはできますが、そうするとワークフロー図がビジネスに関係のない詳細で汚染されてしまいます。

必要なのは、それぞれのようなJavaの動作です

for (Foo foo : foos) {
 // call workflow
}

空のコレクションは単純にループに入りません。

Activiti をこのように動作させる方法はありますか? ワークフローがない場合、どのようにモデル化しますか?

4

1 に答える 1

2

標準の Activiti 機能を使用してこの問題を解決する方法はありません。ActivityBehaviourしたがって、唯一のオプションは、シーケンス フローを制御するためにゲートウェイまたは Java サービス タスクをクラス実装(推奨されません) と共に使用することです。私は s を使用することを好みexclusiveGatewayます。追加情報については、次のリンクを確認してください。

  1. Activiti公式フォーラムでのディスカッション

  2. MultiInstanceActivityBehavior.java - int resolveNrOfInstances(ActivityExecution の実行) ParallelMultiInstanceBehavior - void createInstances(ActivityExecution の実行); SequentialMultiInstanceBehavior - void createInstances(ActivityExecution の実行);

于 2013-03-12T20:19:31.140 に答える