Activiti日本語情報ブログ

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

【Activitiはまりポイント】デフォルトフローの仕様

Inclusive GatewayやExclusive Gatewayの設定でデフォルトフローが設定できるが、こちらで選択したフローは他のフローが選出されない場合有効である。 デフォルトフローの条件は無視される。

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

【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

【Activiti入門】変数

概要

  • Activitiのプロセスでは、変数を利用してプロセスに関する入力データを扱う。

  • 変数はデータベース(テーブル ACT_RU_VARIABLE)にて管理される。

    ただし、変数の値にJava beanなどが格納された場合は、バイナリデータとしてACT_GE_BYTEARRAYテーブルに格納される。

  • 変数には、スコープが存在する。

  • 参考

    Activiti User Guide 4.5. Variables

Process Variables

  • プロセス全体で有効となる変数。

    レコードとしては、テーブル ACT_RU_VARIABLEのカラムproc_inst_idとカラムexecution_idが一致するもの。

Execution

  • アクティブなExecution内でのみ有効な変数。

    説明が難しいが、Activitiでは、プロセスインスタンス上で現在アクティブな箇所をExecutionと定義している。 例えば、以下のような並行ルートの場合は、並行ルートの処理中に3つのアクティブなExecutionが存在する。 1つ目はプロセスインスタンス全体のExecution、2,3つ目はそれぞれの並行ルートのExecutionである。

    f:id:lalalafrance:20160419175932p:plain

  • Executionスコープの変数とは、プロセスインスタンスのExecutionではない、個々のExecution内で有効となる変数である。

    レコードとしては、テーブル ACT_RU_VARIABLEのカラムproc_inst_idとカラムexecution_idが一致しないもの。

UserTask Variables

  • ユーザタスク内でのみ有効な変数。

    レコードとしては、テーブル ACT_RU_VARIABLEのカラムtask_id_が空でないもの。

履歴

  • 変数の履歴は、テーブル ACT_HI_VARINSTに格納される。

Activiti 公開情報

Activitiに関して公開されている情報源をまとめました。

Document

  1. Activiti User Guide

    無料で公開されている公式ドキュメント。

    Activiti EngineからActiviti Explorer・Activiti RESTまで薄く広く解説している。

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

  2. Activiti 5.x Business Process Management Beginner's Guide

    Activiti Explorerをベースにして各アイコン・機能の解説をしている。

    Activiti Explorer・Activiti Designerだけの利用であれば、この1冊で十分事足ります。

    Activiti 5.x Business Process Management Beginner's Guide

    Activiti 5.x Business Process Management Beginner's Guide

  3. Activiti in Action: Executable Business Processes in BPMN 2.0

    Activiti EngineのAPI・内部仕様の解説書。

    Activiti Engineを組み込んだWebアプリケーションを開発する場合は参考になります。

    Activiti in Action: Executable Business Processes in BPMN 2.0

    Activiti in Action: Executable Business Processes in BPMN 2.0

Download

  1. Activiti Designer

    EclipseプラグインであるActiviti Designerの更新サイト。

    http://activiti.org/designer/update/

  2. Activiti Explorer

    Activiti Explorerのwarファイルが含まれたzipがダウンロードできます。 http://activiti.org/download.html

リリース情報

  1. JIRA

    各バージョンごとの不具合修正・機能追加情報がまとまっています。

    私はやったことはないですが、issueを報告することもできるようです。

    https://activiti.atlassian.net/projects/ACT?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page&status=no-filter

    無料ですが、アカウントを作成する必要があります。

Q&A

  1. フォーラム

    困った場合は、こちらで質問できるようです。

    感覚ですが、GitHubのissueよりは活発な感じがします。

    https://forums.activiti.org/

    [2016/12/14 追記]フォーラムのサイトが以下に変更になったようです。 https://community.alfresco.com/community/bpm/content

  2. Github Issues

    https://github.com/Activiti/Activiti/issues

その他

  1. Jenkins(各プラットフォームごとのテストケース実行環境)

    http://ec2-54-217-5-246.eu-west-1.compute.amazonaws.com:8080/jenkins/

【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. 「タスクの完了」を押下することで、プロセスが完了します。

Activiti入門

概要

Activitiでは、BPM 2.0に準拠したBPMエンジン Activiti Engineを中核として、様々な周辺製品が提供されています。

今回のブログ記事では、Activiti Designerで作成したフローをActiviti Explorerにデプロイし、処理を行います。 Activiti Designerは、BPMのフローを記述できるGUIのエディター(Eclipseプラグイン)で、Activiti ExplorerはActiviti Engineを内包した簡易Webアプリケーションです。

Activiti Explorerの利用方法の詳細については、以下の「Activiti 5.x Business Process Management Beginner's Guide」をご参照ください。

Activiti 5.x Business Process Management Beginner's Guide

Activiti 5.x Business Process Management Beginner's Guide

「Activiti 5.x Business Process Management Beginner's Guide」では、Activiti Explorerの利用方法をベースにして、Activiti/BPM2.0について説明しています。

Activiti Designer

Activitiでは、GUIのエディターでBPMのフローを記述できる Activiti DesignerがEclipseプラグインとして提供されています。

インストール

  1. Eclipseをインストールします。

    Activiti User Guideによると、Eclipse Kepler もしくはEclipse Indigoのバージョンが推奨されています。 https://wiki.eclipse.org/Older_Versions_Of_Eclipse

    こちらで確認した限りでは、最新版のEclipse Marsでも特に問題なく動作しています。 https://www.eclipse.org/downloads/

  2. Activiti Explorerプラグインをインストールします。

    • ツールバー「Help」から「Install New Software」を表示し、追加ボタンを押下します。

    • Add Repositoryのダイアログが表示されます。

    • Name属性に「Activiti BPMN 2.0 designer」を指定します。

    • Location属性に「http://activiti.org/designer/update/」を指定します。

    • インストールを行い、Eclipseを再起動します。

    f:id:lalalafrance:20160322211347p:plain

フロー作成

  1. Activitiプロジェクトを作成します。

    • フローを格納するプロジェクトを作成します。

    • ツールバー「File」-「New」-「Project」を押下し、「Activiti Project」を選択します。

    • プロジェクト名を入力し、プロジェクトを作成します。

  2. Activiti Diagramを作成します。

    • フローを作成します。

    • 作成したプロジェクトをパッケージ・エクスプローラで表示します。

    • 「src/main/resources/」-「diagrams」から右クリックで、「New」-「Other」を押下します。

    f:id:lalalafrance:20160323064633p:plain

    • 表示された画面から「Activiti Diagram」を選択します。

    • フロー名を入力し、フローを作成します。

直線ルートの作成

ここでは、開始と1つのタスクから成るフローを作成します。

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

  2. 「Start Event」カテゴリから「StartEvent」を配置します。

    f:id:lalalafrance:20160323074531p:plain

  3. 「Task」カテゴリから「User Task」を配置します。

    f:id:lalalafrance:20160323074553p:plain

  4. 「End Event」カテゴリから「EndEvent」を配置します。

    f:id:lalalafrance:20160323074613p:plain

  5. 配置した「StartEvent」-「User Task」-「EndEvent」を線で結びます。

    f:id:lalalafrance:20160323074638p:plain

  6. 開始を行うユーザを設定します。

    • フロー上のアイコン以外の場所を押下します。

    • Propertiesタブを選択し、ProcessのCandidate start users(comma separated)に「fozzie」を入力します。

    f:id:lalalafrance:20160323073040p:plain

  7. 「UserTask」を押下し、処理を行うユーザを設定します。

    • Propertiesタブを選択し、Main configのAssigneeに「kermit」を入力します。

    f:id:lalalafrance:20160323073054p:plain

  8. フローの保存を行います。

フローのビルド

  1. パッケージ・エクスプローラを表示します。

  2. プロジェクトを選択した状態で右クリックを行い、「」を押下します。

    f:id:lalalafrance:20160323073058p:plain

  3. 「deployment」ディレクトリにフローがビルドされたbarファイルが出力されます。

    f:id:lalalafrance:20160323073103p:plain

Activiti Explorer

作成したフローをActiviti Engine上で実際に動作させてみます。 Activiti Engineを内包したActiviti Explorerを利用します。

Tomcatのインストール

各環境に応じたTomcatのバイナリをダウンロードし、解凍します。 http://tomcat.apache.org/download-90.cgi

Activiti Explorerのインストール

  1. Activityをダウロードし、解凍します。

    Activiti Downloads

  2. 解凍したディレクトリ内のwars/activiti-explorer.warを%TOMCAT_HOME%/webappsにコピーします。

Activiti Explorerの起動

  1. Tomcatの起動コマンドを実行します。

    • Windows環境では、%TOMCAT_HOME%/bin/startup.bat start を実行してください。

    • Linux系の環境では、%TOMCAT_HOME%/bin/startup.sh start を実行してください。

  2. しばらくしたら、http://localhost:8080/activiti-explorer/へアクセスします。

    • Activiti Explorerのログイン画面が表示されます。

    • Activiti Explorerはデフォルトの設定では、インメモリデータベースにてデータを管理するため、再起動するとデータは初期化されます。

    • 永続化したい場合は、 %TOMCAT_HOME%/webapps/activiti-explorer/WEB-INF/classes/db.properties にデータベースへの接続情報を記載します。

フローのデプロイ

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

  2. 「管理」-「デプロイ」-「新規アップロード」を選択します。

  3. 「ファイル選択」からビルドしたbarファイルを指定します。

  4. デプロイが実行され、フローが利用できるようになります。

フローの実行

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

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

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

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

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

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