jBPM 6 Documentation ナナメ読みその2

一気に最後までいくで

http://docs.jboss.org/jbpm/v6.0.1/userguide/pt03.html

III. Workbench

9. Workbench

Drools 6 documentation と同じ

9.1. Installation
9.1.1. War installation
9.1.2. Workbench data
9.1.3. System properties
9.2. Quick Start
9.2.1. Add repository
9.2.2. Add project
9.2.3. Define Data Model
9.2.4. Define Rule
9.2.5. Build and Deploy
9.3. Administration
9.3.1. Administration overview
9.3.2. Organizational unit
9.3.3. Repositories
9.4. Configuration
9.4.1. User management
9.4.2. Roles
9.4.3. Restricting access to repositories
9.4.4. Command line config tool
9.5. Introduction
9.5.1. Log in and log out
9.5.2. Home screen
9.5.3. Workbench concepts
9.5.4. Initial layout
9.6. Changing the layout
9.6.1. Resizing
9.6.2. Repositioning
9.7. Authoring
9.7.1. Artifact Repository
9.7.2. Asset Editor
9.7.3. Project Explorer
9.7.4. Project Editor
9.7.5. Validation
9.7.6. Data Modeller
9.7.7. Categories Editor

10. Workbench Integration

Drools 6 documentation と同じ

10.1. REST

10.1.1. Job calls
10.1.2. Repository calls
10.1.3. Organizational unit calls
10.1.4. Maven calls

11. Workbench High Availability

Drools 6 documentation と同じ

11.1.
11.1.1. VFS clustering
11.1.2. jBPM clustering

12. Designer

ここから jBPM 特有の話です。

12.1. Designer UI Explained

パワフルな BPMN2 エディタです。

12.2. Getting started with Modelling
12.3. Designer Toolbar

jBPM 6 で追加された目玉は Simulation。想定アクセス負荷からの実行結果をシミュレートし、チャートで想定処理時間などを見ることができる。どのパスがボトルネックになるとか。

13. Form Modeler

jBPM 5 でも簡単なフォームを生成してくれたけど、今回はかなり詳細にカスタマイズできる。ただここで作られるフォームは jbpm-console (business central) 上で使うためのものです。大抵のユースケースは自分でWebアプリを作ると思うので、あまり使われないだろうなあ。FormProviderServiceがWebアプリで使えればいいのかなあ、調査は後日…

13.1. Configure process and human tasks
13.2. Generate forms from task definitions
13.3. Edit forms
13.3.1. Form generated description
13.3.2. Customizing form
13.3.3. Field types

14. Runtime Management

14.1. Deployments

ここでいう "Deployment Unit" とは、jbpm-console にデプロイされたモノを管理する概念です。デプロイされるモノは GAV で表現される kjar (maven artifact) なのですが、 kjar そのものとは、別のものとしてとらえた方がいいでしょう。(WARファイルそのものと、アプリサーバにデプロイされたWARというデプロイメント、という違いに似ている) 。Remote API の項を見れば分かるように、どの "Deployment Unit" に対する処理か明示するために deploymentId が重要になっている。

14.1.1. Deployment Units List

Drools のワークベンチでは、"Build & Deploy" は kjar をビルドして、ワークベンチ内の Maven Repository にデプロイする、という動作ですが、 jBPM のワークベンチではさらに、 jbpm-console で「使う」ためにデプロイされます。その結果、この「Deployment Units」の画面にリストされます。ここにデプロイされると、以降のように、プロセスの実行 etc. が出きるようになります。

14.2. Jobs

15. Process and Task Management

jBPM 5 と機能はそれほど変わらない。UIが綺麗になって、情報量が増えた感ある。

15.1. Process Management
15.1.1. Process Definitions

プロセス実行の現在地表示が、jBPM 5 だと「PNG + jsによるマーカー」だったのが、直接 Designer のプロセス表示(つまりsvg)を利用している。

15.2. Tasks
15.2.1. Task List
15.2.2. New Task (Ad-Hoc Task)

謎機能。ビジネスプロセスと関係ないタスクが作れます。

16. Business Activity Monitoring

こっちも目玉機能です。簡単にいうと、DBからデータ取ってきて、チャートにするっていうかなり汎用的なアプリです。ベースはここ (http://www.dashbuilder.org/)。

16.1. Overview
16.2. Business Dashboards

jBPM に限らず、好きなデータソースを使って、好きなチャート作っちゃいなよ。

16.3. Process Dashboard

jBPM 用に、ビルトインのダッシュボードもあります。好きなようにカスタマイズしちゃいなよ。

17. Remote API

"14. Runtime Management" で話したように、jbpm-console はプロセスをGUIから実行する、「プロセス実行サーバ」としての側面も持ちます。でもこのGUIからしかアクセスできなかったら、実運用には使えないですね。そこで、リモートからアクセスするためのAPIが提供されています。プロトコルは REST か JMS。特に優劣は無いと思われる…なら普通 REST を使うよねえ。

17.1. Remote Java API

適切なファクトリを使えば、リモートプロトコルを隠蔽した、KieSession, TaskService and AuditLogService を返してくれる。それらを使って、普通のKieSessionなどと同じメソッド呼び出しでリモートアクセスできる。素晴らしい。

17.1.1. The REST Remote Java RuntimeEngine Factory

Factory の作成時に "deploymentId" を知ってないといけないのがミソ。jbpm-console でデプロイしていると GAV が deploymentId になる(例: "org.kie.example:project1:1.0.0-SNAPSHOT")

17.1.2. The JMS Remote Java RuntimeEngine Factory
17.2. REST

基本同期実行。deployment POST だけ非同期実行になるので、後から status をもらう。

17.2.1. Additional Information

{deploymentId} が URL に含まれていない REST 呼び出しでは クエリパラメータとして deploymentId=XXX を渡す。(kjar内のクラスを使うときだけ必要になる)

17.2.2. Runtime calls

大体プロセスインスタンスに関するもの。プロセス定義についての情報も取れるように 6.1.0 で拡張される予定。

17.2.3. History calls
17.2.4. Task calls

task-query はいろいろできそう。パフォーマンスがちょっと心配。

17.2.5. Deployment calls

デプロイ、アンデプロイも REST からできる

17.2.6. Execute calls

リストされているように、大抵の Command が実行できる。

17.3. JMS

えーっと、あまりちゃんとドキュメントが書かれていないようです。RESTでいいですよね…

17.3.1. JMS Queue setup
17.3.2. Using the remote Java API versus creating your own JMS requests
17.3.3. User identification for JMS messages using task requests
17.3.4. Serialization issues
17.3.5. Example JMS usage

IV. Eclipse

18. jBPM Eclipse Plugin

18.1. jBPM Eclipse Plugin
18.1.1. Installation
18.1.2. jBPM Project Wizard
18.1.3. New BPMN2 Process Wizard
18.1.4. jBPM Runtime
18.1.5. jBPM Maven Project Wizard

こっちをベースにして開発するのがおすすめ。でもサンプルプロジェクトを沢山つくる場合、mavenプロジェクトにするとEclipseが遅くなるんだよなー

18.1.6. Drools Eclipse plugin
18.2. Debugging
18.2.1. The Process Instances View
18.2.2. The Audit View
18.3. Synchronizing with Workbench Repositories

(豆情報) EGit で clone すると後で push するときにおかしくなった(error / タイムアウト)けど普通の git コマンドだと大丈夫だったっていう話を聞いたので、EGit でおかしくなった場合は git での clone をお試しください。

18.3.1. Importing a workbench repository
18.3.2. Committing changes to the workbench
18.3.3. Updating from to the workbench
18.3.4. Working on individual projects

19. Eclipse BPMN 2.0 Modeler

新しい BPMN2 Diagram Editor はだいぶ良いです(古いのは BPMN2 Process Editor)。ただ、Web Designer とファイル更新のやりとりをするとやっぱり問題がありそうな気配…

19.1. Overview
19.2. Installation
19.3. Documentation

V. Integration

20. Integration

20.1. Maven
20.1.1. Maven artifacts as deployment units

うっ

        <listeners>
            <listener type="FQCN_OF_EVENT_LISTENER" />
        </listeners>

ここ間違ってる。正しくはここ見て https://github.com/droolsjbpm/droolsjbpm-knowledge/blob/6.0.x/kie-api/src/main/resources/org/kie/api/kmodule.xsd

Pull Request か…

20.2. CDI

あー、ここは一回ちゃんとWebアプリ作っとかなあかんなー。マジTODO

FYI)
http://mswiderski.blogspot.jp/2013/09/jbpm6-samples-with-runtimemanager.html
http://jsvitak.wordpress.com/2014/01/09/jbpm-6-web-application-examples/

20.2.1. Overview
20.2.2. Configuring CDI integration
20.2.3. RuntimeManager as CDI bean
20.2.4.
20.3. OSGi

VI. Advanced Topics

21. Domain-specific Processes

21.1. Introduction
21.2. Overview
21.2.1. Work Item Definitions
21.2.2. Work Item Handlers
21.3. Example: Notifications

実装方法が丁寧に書かれていてgood

21.3.1. The Notification Work Item Definition
21.3.2. The NotificationWorkItemHandler
21.4. Service Repository
21.4.1. Public jBPM service repository
21.4.2. Setting up your own service repository

22. Exception Management

おー、素晴らしい。いろんなケースについて丁寧に説明してあります。 SignallingTaskHandlerDecorator や Compensation もちゃんと動かしてみないとなー。トランザクションロールバックについては触れていない。これも重要だと思うが。

22.1. Overview
22.2. Introduction
22.3.
22.3.1. Technical Exceptions
22.3.2. Technical Exception Examples
22.4.
22.4.1. Business Exceptions

23. Flexible Processes

アドホック!使う人も意外といるみたいです。

24. Concurrency and asynchronous execution

24.1. Concurrency
24.1.1. Engine execution
24.1.2. Multiple knowledge sessions and persistence

おっと、DBの行ロックの話だけ?楽観ロック/悲観ロックとか JBPM-4249 とか DROOLS-282 とか…

24.2. Asynchronous execution
24.2.1. Asynchronous handlers

WorkItemHandler内で自分でスレッド立てる。あまりお勧めできない。

24.2.2. jbpm executor

新機能!非同期処理実行サービス。あーなんか jBPM 3 の executor 思い出すな。

org.kie.internal.executor.api.ExecutorService が本体で、 AsyncWorkItemHandler がそれを使う一つの実装例。

25. Release Notes