【第一回】経費申請のフローで学ぶCamundaの基本(導入編)
Camundaとはオープンソースのワークフロー&ビジネスプロセスマネジメントの総合プラットフォームで、BPMN2.0、CMMN1.1、DMN1.1に準拠したモデリングや実行環境を構築することができます。
JJUG CCC Fall 2017では世界的な証券会社であるゴールドマン・サックス社においてもCamundaを利用してビジネスプロセスの可視化や自動化を行なっているという講演がありました。
現状Camundaに関する日本語の情報はほとんど見当たらない状況で、アドカレの記事でも書いたように自社での導入検証もしていければとも考えているので、せっかくなのでオープンな形で技術検証をしていきたいと思います。
今回、下記のような連載形式で、「経費申請」という比較的簡単な業務フローをテーマに、Camundaを用いたモデリングとワークフロー実装の基本を学んでいきたいと思います。
実際に業務要件をモデリングするような流れでひとつのアプリケーションを作成していこうと考えているので、網羅的に機能を解説していくというよりは、「Camundaを使うと何ができるのか?」を全体を通してイメージできるようになることを目的としています。
(下の流れはあくまで予定)
- 【第一回】経費申請のフローで学ぶCamundaの基本(導入編)
- 【第二回】経費申請のフローで学ぶCamundaの基本(BPMNモデリング編)
- 【第三回】経費申請のフローで学ぶCamundaの基本(BPMN実行編)
- 【第四回】経費申請のフローで学ぶCamundaの基本(DMN編)
- 【第五回】経費申請のフローで学ぶCamundaの基本(CMMN編)
- 【第六回】経費申請のフローで学ぶCamundaの基本(テスト編)
- 【第七回】経費申請のフローで学ぶCamundaの基本(まとめ)
本エントリーでは導入編として、モデリングツールであるCamunda Modelerのインストールと、Camundaの実行環境をSpring Boot上に構築してみます。
連載を通して基本的に下記の環境にて動作確認をしていますが、他のOSやJavaバージョンでもほとんど差異はないものと思います(おそらく)。もし何か気付いた点などありましたらブログへのコメントやGitHubへのプルリクをいただけると幸いです。
Mac OS High Sierra: Version 10.13.2 Java 9 Gradle 4.2.1 Spring Boot 1.5.9-RELEASE Camunda 7.7 Camunda Spring Boot Starter 2.2
Camunda Modelerのインストール
Camunda ModelerはCamundaのワークフローエンジン上で実行することができるBPMN/CMMN/DMNのモデリングツールです。各モデリング記法の目的やモデリング、実行方法は第二回以降の記事で少しずつ学んでいければと思います。
Camunda Modelerのインストールに関しては非常に簡単で、こちらのダウンロードページから対応するOSのバイナリをダウンロードして、実行ファイルを実行するだけです。
https://camunda.com/download/modeler/
次のエントリーではBPMNのモデリングをしてみる予定なので、まずは「BPMN diagram」をクリックしてみましょう。
BPMNのモデリングの画面が立ち上がりました。Camunda Modelerに関してはこれで準備完了です!
Spring Boot上でCamundaの実行環境を構築
Spring Boot上のCamunda実行環境をGradleで構築します。CamundaのSpring Boot StarterはこちらのGitHubで提供されています。最小構成のbuild.gradle
はこんな感じ。
build.gradle
buildscript { ext { camundaVersion = '7.7.0' springBootVersion = '1.5.9.RELEASE' camundaSpringBootVersion = '2.2.0' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath "io.spring.gradle:dependency-management-plugin:1.0.4.RELEASE" } } apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: "io.spring.dependency-management" group = 'sample' version = '0.0.1-SNAPSHOT' repositories { mavenCentral() } dependencyManagement { imports { mavenBom "org.camunda.bpm:camunda-bom:${camundaVersion}" mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}" mavenBom "org.camunda.bpm.extension.springboot:camunda-bpm-spring-boot-starter-bom:${camundaSpringBootVersion}" } } dependencies { compile('org.camunda.bpm.extension.springboot:camunda-bpm-spring-boot-starter-webapp') compile('com.h2database:h2') testCompile('org.springframework.boot:spring-boot-starter-test') if(JavaVersion.current() == JavaVersion.VERSION_1_9) { runtime('javax.xml.bind:jaxb-api:2.3.0') } }
最小構成のアプリケーションコードはこんな感じ。 src/main/java/sample/CamundaExpenseProcessApplication.java
package sample; import org.camunda.bpm.spring.boot.starter.annotation.EnableProcessApplication; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableProcessApplication public class CamundaExpenseProcessApplication { public static void main(String[] args) { SpringApplication.run(CamundaExpenseProcessApplication.class, args); } }
Camundaが使うデータベースをin-memoryのh2に設定するために、application.properties
を作成します。下記の設定ではメモリー上のh2データベースを使用するのでアプリケーションを立ち上げなおすたびに情報はリセットされます。もし情報を永続化しておきたい場合はspring.datasource.url=jdbc:h2:mem:camunda
をコメントアウトして代わりにspring.datasource.url=jdbc:h2:~/camunda;DB_CLOSE_ON_EXIT=false
を有効にしてください。
src/main/resources/application.properties
spring.datasource.url=jdbc:h2:mem:camunda #Use this config in case you want to persist camunda data into file system (comment the config above in that case) #spring.datasource.url=jdbc:h2:~/camunda;DB_CLOSE_ON_EXIT=false
デフォルトの設定として、デモユーザー(id/password = demo/demo)と、すべてのタスクを表示するfilterをapplication.yml
を追加しておきます。
src/main/resources/application.yml
camunda.bpm: admin-user: id: demo password: demo firstName: デモ lastName: ユーザー filter: create: All tasks
以上で最小限構成のCamundaアプリケーションが立ち上がる状態になりました。GitHubに動作確認済みのプロジェクトを上げてあるのでこちらからどうぞ。
https://github.com/itohiro73/camunda-expense-example/tree/1-intro
GradleでSpring Bootアプリケーションを立ち上げます。
$ gradle bootRun
立ち上がったら http://localhost:8080/ にアクセスすると、下のような ログイン画面が立ち上がります。
上記で設定したデフォルトのデモユーザー(demo/demo)を使用してログインしてみます。
これでCamundaが立ち上がりました。トップ画面からはCockpit、Taslklist、Adminの機能にアクセスすることができます。
この時点ではまだワークフローをデプロイしていないのでCockpit上では何もできませんが、TasklistやAdminの基本的な機能は動くのでポチポチ遊んでみてもいいかもしれません。
以上でCamundaの準備は完了です!
第一回まとめ
今回は導入編として
- Camunda Modelerのインストール
- Gradle/Camunda Spring Boot Starterを用いた環境構築とCamundaアプリケーションの起動