【Activiti入門】並行ルートの作成
概要
前回の入門記事では条件分岐のルートを紹介しましたが、今回は並行ルートを扱います。 並行ルートとは、同時に異なるユーザタスクが割り当てられるルートのことです。
ステップ
並行ルートを実現するには、「ParallelGateway」のアイコンを利用します。
「Gateway」カテゴリにある「ParallelGateway」を利用することで、並行なルートを引くことが可能です。
「ParallelGateway」から各「UserTask」へのシーケンスを引くことで、各「UserTask」ごとに並列にプロセスが動作します。
各「UserTask」から「ParallelGateway」へシーケンスを引くことで、並行に実行されていたプロセスが結合します。各プロセスが完了するまで待ち合わせを行います。
フローの作成
では、実際に並行ルートを実現するフローを作成していきます。
Activiti Diagramを作成し、フローのデザイナー画面を表示します。
以下のアイコンを配置します。
以下のように線を引きます。
- 「StartEvent」から「ParallelGateway」へ線を引きます。
- 「ParallelGateway」から2つの「UserTask」へそれぞれ線を引きます。
- 2つの「UserTask」からそれぞれ「ParallelGateway」へ線を引きます。
- 「ParallelGateway」から「EndEvent」へ線を引きます。
起票者を設定します。
- デザイナー上のアイコン以外の箇所をクリックします。
- Propertiesタブの「Candidate start users」に「fozzie」を設定します。
処理対象者を設定します。
- デザイナー上のユーザタスクの1つ目をクリックします。
- Propertiesタブの「Main config」-「Assignee」に「kermit」を設定します。
- デザイナー上のユーザタスクの2つ目をクリックします。
- Propertiesタブの「Main config」-「Assignee」に「gonzo」を設定します。
フローを保存・ビルドし、出力されたbarファイルをActiviti Explorerにデプロイします。
フローの実行
fozzie/fozzieでActiviti Explorerへログインします。
「プロセス」からデプロイしたフローを選択します。
「プロセスの開始」を押下し、プロセスを開始します。
kermit/kermitでActiviti Explorerへログインします。
「ケース」-「受信トレイ」にタスクがあります。
「タスクの完了」を押下し、タスクを完了させます。
「ケース」-「受信トレイ」にタスクがあります。
「タスクの完了」を押下し、タスクを完了させます。
fozzie/fozzieでActiviti Explorerへログインします。
「プロセス」-「マイ・インスタンス」から開始したフローが完了していることを確認します。
注意
- ParallelGatewayに接続されるシーケンスの条件は、評価されません。条件の設定は、無視されます。
[追記]
この記事では、並列に動作しているプロセスをParallelGatewayで再度結合し待ち合わせを行っていますが、結合しない場合は各プロセスが終了まで並列に動作します。