平田です。
Red Hat社がビジネスパートナー向けに8/1に開催した、JBoss Enterprise BRMS 5.3 ハンズオンに参加してきました。
去年参加したJBoss Developer Workshopと同様、無料でお弁当付き、USBメモリ付きです。
朝から夕方まで、BRMSについて勉強しました。
- BRMS 5.3概要
- 演習
- GPSコンサルタントによる説明、Q&A
BRMS 5.3概要
JBoss Enterprise BRMS 5.3の構成要素や、5.3の新機能などについてのお話です。
- BRMSは、業務システム向けのミドルウェアスイート
- BRMSの三本柱
- BPMN 2.0 ワークフローエンジン(jBPM5。BRMS 5.3から!)
- 尚、BPMN 2.0の全仕様のうち、実行に関する部分のみサポートし、他はサポートするつもりは無いらしい。
- ルールエンジン(Drools Expert)
- Complex Event Processing(CEP)エンジン(Drools Fusion)
- BRMSのコンポーネント構成
- ルール・ワークフロー管理
- JBoss EAP 5 (BRMS 5.2まではEAPを同梱しておらず、別途Java EEサーバを用意する必要があった。Manager用のプラットフォーム)
- Manager (Drools Guvnor。ルール、ワークフローなどの管理アプリケーション。他社製Java EEサーバでは動作しない、もしくはサポートしない)
- リポジトリ (ルール・ワークフローの保存先。JCRの実装であるJackrabbitによる。RDBMSバックエンド必須)
- JBoss.org謹製のModeShapeはテクニカルプレビュー扱い
- jBPM5 Console (jBPM 3.x向けのjsf-consoleと同程度のもの。Guvnorほどの気合は感じられない)
- アプリケーション開発
- JBoss Developer Studio (Eclipse + JBoss Tools。ルールやワークフローの定義、デバッグが可能)
- Engine (上述の三本柱の実行ライブラリ。これらのライブラリを同梱したアプリケーションを開発し、Managerでルールやワークフローについて構成管理する)
- 今回の目玉であるjBPM5は、JBoss Enterprise SOA Platform 5.3にも入り、ESBと連携できるようです。
- BPMN 2.0 モデリングツール
- Manager、またはJBoss Developer Studioにて作成する。ただし、現時点ではManagerの方が高機能らしい。
- Developer Studioの将来のバージョンでは追いつくらしい。
- BPMN 2.0 Modelerのことと思われる。
- ルールエンジン、ルール記述について
- ルールフローがBPMN 2.0になった(Drools FlowがjBPM5に生まれ変わった)。
- BPMN 2.0のビジネスルールタスクを使って定義する。
- 実行順に注意が必要。フローの順に逐次実行されるわけではなく、Droolsの評価・実行モデルに従い動作する。
- Droolsの評価・実行モデルは、リファレンスマニュアルの「1.2. ルールエンジンとは何か」やwikipediaの「プロダクションシステム」に説明されています。未読だけど。
演習
BRMS 5.3を使って簡単なアプリケーションを作成する演習です。
- 年齢、年収に基いてクレジットカードの審査を行うアプリケーションを題材にした演習
- GuvnorのGUIでDRL、DSLを定義し、テストする。
- 定義できるのは理解できるものの、ソースを書いた方が早いし、リッチなUIがあるからといって業務ユーザが使える、使いたいと考えるのか甚だ疑問です。
- Excelファイルのデシジョンテーブルで、クレジットカードの与信ランクを定義する。
- ルール記述方法の中では、最も業務ユーザ向けに展開可能なものだと思います。Excel大好きですしね。ちなみに、OpenOffice/LibreOffice CalcやCSVファイルでも定義可能です。
- BPMN 2.0で年齢、年収の下限による可否と、与信ランク評価のルールフローを定義する。
- GuvnorでBPMN 2.0を作成すると、jBPM Designer(BPMN 2.0の作図ツール)がフレーム内に開きます。
- ルールフローは、YES/NOチャートみたいなものでしょうか。お膳立て次第では、業務ユーザ向けに展開できそうです。
- BPMN 2.0で、審査業務のワークフローを定義する。
- jBPM 3.xまではjPDLという独自形式でワークフローを定義しましたが、モデリングノウハウを勉強しなおさねばなりません。
- 演習として、後から付け加えた感が漂いまくっています。申請から審査完了までの流れを、小さくとも完結したアプリケーションが出来上がる流れになるよう練り直した方が良いんじゃないでしょうか。
- フォームビルダー、jBPM5 Consoleを動かす。
- デモ以外で使う機会あるかなー。
GPSコンサルタントによる説明、Q&A
GPS(グローバル・プロフェッショナル・サービス、Red Hatが提供するコンサルティングサービス。超高い)コンサルタントによるBRMS 5.3の、アプリケーション連携に関する説明、及びQ&Aセッションです。
- アプリケーション連携について
- アーキテクチャ
- DroolsのAPIの話(ナレッジベースとかナレッジセッションとか)
- JPAで永続化
- タスクの実行
- WorkItemHandlerを書く。
- WorkItemHandlerをエンジンに登録するボイラープレートコードが必要らしい。
- ヒューマンタスクサービスの呼び出し
- 同期、非同期ありますよ。
- Apache MINA、またはHornetQ。HornetQのみサポート対象。
- 他社Java EEサーバで動かす場合、HornetQ使えないわけだから、呼び出し部分はサポート対象外になるらしい。
- Q&A
- ワークフローの実行状態と、業務データとの紐付けの仕組みは用意されない。
- 開発者が担保する。紐付け用のテーブルを用意する、プロセス変数に業務キーを持たせる、など。
- EAP6でヒューマンタスクサービスの非同期HornetQ呼び出しがサポートされるはず。テスト中。
- パフォーマンスの話。if-thenロジックより早いのは、インデックス化されて逐次実行不要なため。他社製品との比較については、エンジンがシンプルなので速いはず?
- ルールに食わせるファクトは、フラットな構造を推奨。
- CEPの演習が無い。
- ルールを更新してから、実行環境に伝搬するまでの一貫性や原子性の話。
- ルールの有効期限、ルール自体に期限を含める。
まとめ
全体的にGuvnorの機能や使い方に終始していたのですが、アプリケーション開発者としてはワークフローエンジンやルールエンジンと、アプリケーションとの連携に焦点を当てて欲しいところです。