Activiti日本語情報ブログ

OSSのBPMエンジン Activitiの日本語情報をまとめています。

【Activiti入門】並行ルートの作成

概要

前回の入門記事では条件分岐のルートを紹介しましたが、今回は並行ルートを扱います。 並行ルートとは、同時に異なるユーザタスクが割り当てられるルートのことです。

f:id:lalalafrance:20160428212458p:plain

ステップ

  1. 並行ルートを実現するには、「ParallelGateway」のアイコンを利用します。

    • Gateway」カテゴリにある「ParallelGateway」を利用することで、並行なルートを引くことが可能です。

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

    • 「ParallelGateway」から各「UserTask」へのシーケンスを引くことで、各「UserTask」ごとに並列にプロセスが動作します。

    • 各「UserTask」から「ParallelGateway」へシーケンスを引くことで、並行に実行されていたプロセスが結合します。各プロセスが完了するまで待ち合わせを行います。

フローの作成

では、実際に並行ルートを実現するフローを作成していきます。

  1. Activiti Diagramを作成し、フローのデザイナー画面を表示します。

  2. 以下のアイコンを配置します。

    • 「Start Event」カテゴリから「StartEvent」を配置します。
    • Gateway」カテゴリから「ExclusiveGateway」を配置します。
    • 「Task」カテゴリから「UserTask」を2つ配置します。
    • Gateway」カテゴリから「ExclusiveGateway」を配置します。
    • 「End Event」カテゴリから「EndEvent」を配置します。
  3. 以下のように線を引きます。

    • 「StartEvent」から「ParallelGateway」へ線を引きます。
    • 「ParallelGateway」から2つの「UserTask」へそれぞれ線を引きます。
    • 2つの「UserTask」からそれぞれ「ParallelGateway」へ線を引きます。
    • 「ParallelGateway」から「EndEvent」へ線を引きます。
  4. 起票者を設定します。

    • デザイナー上のアイコン以外の箇所をクリックします。
    • Propertiesタブの「Candidate start users」に「fozzie」を設定します。
  5. 処理対象者を設定します。

    • デザイナー上のユーザタスクの1つ目をクリックします。
    • Propertiesタブの「Main config」-「Assignee」に「kermit」を設定します。
    • デザイナー上のユーザタスクの2つ目をクリックします。
    • Propertiesタブの「Main config」-「Assignee」に「gonzo」を設定します。
  6. フローを保存・ビルドし、出力されたbarファイルをActiviti Explorerにデプロイします。

フローの実行

  1. fozzie/fozzieでActiviti Explorerへログインします。

  2. 「プロセス」からデプロイしたフローを選択します。

  3. 「プロセスの開始」を押下し、プロセスを開始します。

  4. kermit/kermitでActiviti Explorerへログインします。

  5. 「ケース」-「受信トレイ」にタスクがあります。

  6. 「タスクの完了」を押下し、タスクを完了させます。

  7. gonzo/gonzoでActiviti Explorerへログインします。

  8. 「ケース」-「受信トレイ」にタスクがあります。

  9. 「タスクの完了」を押下し、タスクを完了させます。

  10. fozzie/fozzieでActiviti Explorerへログインします。

  11. 「プロセス」-「マイ・インスタンス」から開始したフローが完了していることを確認します。

f:id:lalalafrance:20160428212516p:plain

注意

  • ParallelGatewayに接続されるシーケンスの条件は、評価されません。条件の設定は、無視されます。

[追記]

この記事では、並列に動作しているプロセスをParallelGatewayで再度結合し待ち合わせを行っていますが、結合しない場合は各プロセスが終了まで並列に動作します。

f:id:lalalafrance:20170416003923p:plain