Activiti日本語情報ブログ

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

【Activiti入門】条件分岐ルートの作成

概要

前回の入門記事では直線のルートを紹介しましたが、今回はもう少し業務プロセスらしい、条件分岐のルートを扱います。 条件分岐ルートとは、入力値に応じて、異なるユーザタスクが割り当てられるルートのことです。

ステップ

  1. 条件判定の対象となる入力項目を用意します。

    • 前回の入門記事で紹介したActiviti Explorerを利用する場合、form属性を設定することで「StartEvent」・「UserTask」に入力項目を設定できます。

    • form属性は、フィールドの名称・データ型・変数名などを設定することで「StartEvent」・「UserTask」を処理する画面に入力項目を設定できる機能です。

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

    • Activiti Designerにて「StartEvent」・「UserTask」のpropertiesタブから設定します。

  2. 条件分岐を行うには、「ExclusiveGateway」のアイコンを利用します。

    • Gateway」カテゴリにある「ExclusiveGateway」を利用することで、各「UserTask」へ分岐させることが可能です。

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

    • 「ExclusiveGateway」から各「UserTask」へのシーケンスに対して、それぞれの到達条件を設定します。

    • 1で設置したフィールドは、変数として到達条件の条件式で利用できます。

フローの作成

では、実際に条件分岐を行うフローを作成していきます。

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

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

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

    • 「StartEvent」から「ExclusiveGateway」へ線を引きます。
    • 「ExclusiveGateway」から2つの「UserTask」へそれぞれ線を引きます。
    • 2つの「UserTask」からそれぞれ「EndEvent」へ線を引きます。

    f:id:lalalafrance:20160328010249p:plain

  4. 「StartEvent」にフィールドを設置します。

    • 「StartEvent」を押下します。
    • Propertiesタブを選択し、FormのNewを押下します。
    • 表示されたダイアログに以下のように入力します。

      id name type Variable Readable Writeable Required
      price Price long price true true true

    f:id:lalalafrance:20160328010310p:plain

  5. 「UserTask」にフィールドを設定します。

    • 「UserTask」を押下します。
    • Propertiesタブを選択し、FormのNewを押下します。
    • 表示されたダイアログに以下のように入力します。

      id name type Variable Readable Writeable Required
      price Price long price true false false
  6. 条件分岐を設定します。

    • 「ExclusiveGateway」から1つ目の「UserTask」へのシーケンスを押下します。

    • 表示されたpropertiesタブMain configのcondition属性に「${price>1000}」を入力します。

    • 「ExclusiveGateway」から2つ目の「UserTask」へのシーケンスを押下します。

    • 表示されたpropertiesタブMain configのcondition属性に「${price<=1000}」を入力します。

  7. フローを保存・ビルドし、出力されたbarファイルをActiviti Explorerにデプロイします。

フローの実行

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

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

  3. 「プロセスの開始」を押下すると、入力画面が表示されます。

  4. 「Price」に100を入力し、プロセスを開始します。

    f:id:lalalafrance:20160328010359p:plain

  5. 「プロセス」の「マイ・インスタンス」から開始したフローの状態を確認します。

  6. 条件分岐が判定され、2つ目の「UserTask」が割り当てられたことを確認します。

    f:id:lalalafrance:20160328010420p:plain

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

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

  9. タスクを選択し、Priceが100であることを確認します。

  10. 「タスクの完了」を押下することで、プロセスが完了します。