【Activiti入門】条件分岐ルートの作成
概要
前回の入門記事では直線のルートを紹介しましたが、今回はもう少し業務プロセスらしい、条件分岐のルートを扱います。 条件分岐ルートとは、入力値に応じて、異なるユーザタスクが割り当てられるルートのことです。
ステップ
条件判定の対象となる入力項目を用意します。
前回の入門記事で紹介したActiviti Explorerを利用する場合、form属性を設定することで「StartEvent」・「UserTask」に入力項目を設定できます。
form属性は、フィールドの名称・データ型・変数名などを設定することで「StartEvent」・「UserTask」を処理する画面に入力項目を設定できる機能です。
Activiti Designerにて「StartEvent」・「UserTask」のpropertiesタブから設定します。
条件分岐を行うには、「ExclusiveGateway」のアイコンを利用します。
「Gateway」カテゴリにある「ExclusiveGateway」を利用することで、各「UserTask」へ分岐させることが可能です。
「ExclusiveGateway」から各「UserTask」へのシーケンスに対して、それぞれの到達条件を設定します。
1で設置したフィールドは、変数として到達条件の条件式で利用できます。
フローの作成
では、実際に条件分岐を行うフローを作成していきます。
Activiti Diagramを作成し、フローのデザイナー画面を表示します。
以下のアイコンを配置します。
- 「Start Event」カテゴリから「StartEvent」を配置します。
- 「Gateway」カテゴリから「ExclusiveGateway」を配置します。
- 「Task」カテゴリから「UserTask」を2つ配置します。
- 「End Event」カテゴリから「EndEvent」を配置します。
以下のように線を引きます。
- 「StartEvent」から「ExclusiveGateway」へ線を引きます。
- 「ExclusiveGateway」から2つの「UserTask」へそれぞれ線を引きます。
- 2つの「UserTask」からそれぞれ「EndEvent」へ線を引きます。
「StartEvent」にフィールドを設置します。
- 「StartEvent」を押下します。
- Propertiesタブを選択し、FormのNewを押下します。
表示されたダイアログに以下のように入力します。
id name type Variable Readable Writeable Required price Price long price true true true
「UserTask」にフィールドを設定します。
- 「UserTask」を押下します。
- Propertiesタブを選択し、FormのNewを押下します。
表示されたダイアログに以下のように入力します。
id name type Variable Readable Writeable Required price Price long price true false false
条件分岐を設定します。
「ExclusiveGateway」から1つ目の「UserTask」へのシーケンスを押下します。
表示されたpropertiesタブMain configのcondition属性に「${price>1000}」を入力します。
「ExclusiveGateway」から2つ目の「UserTask」へのシーケンスを押下します。
表示されたpropertiesタブMain configのcondition属性に「${price<=1000}」を入力します。
フローを保存・ビルドし、出力されたbarファイルをActiviti Explorerにデプロイします。
フローの実行
fozzie/fozzieでActiviti Explorerへログインします。
「プロセス」からデプロイしたフローを選択します。
「プロセスの開始」を押下すると、入力画面が表示されます。
「Price」に100を入力し、プロセスを開始します。
「プロセス」の「マイ・インスタンス」から開始したフローの状態を確認します。
条件分岐が判定され、2つ目の「UserTask」が割り当てられたことを確認します。
kermit/kermitでActiviti Explorerへログインします。
「ケース」-「受信トレイ」にタスクがあります。
タスクを選択し、Priceが100であることを確認します。
「タスクの完了」を押下することで、プロセスが完了します。