ワークフローエンジン「Flowable」を動かしてみる

この記事を書いたチーム:tenko

はじめに

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

今回は「Flowable」というワークフローエンジンを動かしてみます。FlowableBPMN2.0という業務プロセスの標準記法で定義されたプロセス図を基に、タスクを実行・管理できるOSSです。

今回はBPMNの説明は省き、Flowableの動作に焦点を当てます。

 

環境構築

FlowableDockerで簡単に動作確認できます。Docker Desktopが導入済みであれば、以下のコマンドでREST API対応の環境を構築できます。

Docker Hubhttps://hub.docker.com/r/flowable/flowable-rest

起動後、以下のURLにアクセスするとAPI一覧が確認できます。
http://localhost:8080/flowable-rest/docs

 

 Try it out」で直接リクエスト送信が可能です。

送信時のログイン情報は、Docker Hubに記載の情報を入力します。

 

基本的な流れ

Flowableでの基本的な操作の流れは以下の通りです。
使用APISwaggerの表記を基に記載します。

  1. プロセス図をアップロードする
    ・アップロード:POST /repository/deployments
    BPMN2.0はXMLで表現できるため、XMLファイルのプロセス図をアップロードします。アップロードすると、プロセス定義として登録されます。

    ・プロセス定義の確認:GET /repository/process-definitions
    プロセス定義の一覧を確認します。ここで取得できるidかkeyを指定してプロセスを開始します。

  1. プロセス定義を基にフローを開始する
    ・インスタンス生成:POST /runtime/process-instances
    プロセス定義のidかkeyを指定してワークフローを開始します。開始すると最初のタスクが実行中タスクに登録されます。

    ・実行中タスクの取得:GET /runtime/tasks
    実行中タスクの一覧を取得します。取得したタスクに完了登録することで、次のタスクに移ります。

  1. 実行中タスクに対して完了登録する
    ・実行中タスクを更新:POST /runtime/tasks/{taskId}
    実行中タスクを完了登録します。登録時に変数を指定することができ、承認/差し戻しといった制御はこの変数を基に行います。例えば、承認時は次のタスクへ、差し戻し時は前のタスクへ進むように、プロセス図上でフローを定義します。
  1. 全てのタスクを完了するとインスタンスが完了する
    ・履歴インスタンスを取得:GET /history/historic-process-instances
    全てのタスクが完了して終了イベントに到達すると、実行中インスタンスから削除されますが、履歴インスタンス一覧から過去履歴を確認できます。

 

まとめ

FlowableJavaで開発されているため、Javaアプリに組み込むこともできます。他にも様々な機能がありますので、必要に応じて利用していくのも良いかと思います。

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス