Drools 6 Documentation ナナメ読みその1

おっと、バージョン6になってエンジンもGUIもまとめてひとつのドキュメントになりましたね。これはゴツい。少しずつやるか。

http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/index.html

I. Welcome

1. Introduction

1.1. Introduction

Drools 6 の目玉は…

  • デプロイメントがMavenベースとなり、convention and configurationのおかげで簡単になったよ。
  • ワークベンチが再構築され、強力になった
  • Gitベースのリポジトリ(JCRを置き換え)
  • jBPMは human task, form builder, class modeler, execution server, runtime management などがパワーアップ
  • OptaPlanner はトップレベルプロジェクトに
  • KIE (Knowledge Is Everything) が関連する各種テクノロジーを包括する名前(コンセプト)だ
1.2. Getting Involved

プロジェクトに contribute するために、この章を熟読しよう。あと、ブログ書こうぜ。

1.2.1. Sign up to jboss.org
1.2.2. Sign the Contributor Agreement
1.2.3. Submitting issues via JIRA
1.2.4. Fork GitHub
1.2.5. Writing Tests

DRLはできれば String でテストケース内に書こう。モデルも使えれば既存のものを使おう(Person, Cheese とか)。フィールド増やしてもいいよ。MiscTest.javaが参考になるはず。(* 現在は雑多なテストは Misc2Test.java に追加されていってる)

1.2.6. Commit with Correct Conventions

ありゃ、コミットログの書き方にこんなルールあったんか。これから守ります。

1行目: JIRA-ID JIRA-title
2行目: -(ダッシュ)の後に詳細

1.2.7. Submit Pull Requests
1.3. Installation and Setup (Core and IDE)
1.3.1. Installing and using

とりあえず Eclipse plug-in というか JBoss Developer Studio 7 がいいんじゃないですかね。 (http://www.jboss.org/tools)

Dependencies は 3 JAR files って言いつつ、6個リストしてるけど、重要なのは kie-api.jar, drools-core.jar, drools-compiler.jar かな。

1.3.2. Building from source

ビルドについてはこのREADMEに尽きる https://github.com/droolsjbpm/droolsjbpm-build-bootstrap/blob/master/README.md

1.3.3. Eclipse

ん?このセクション何を言ってるんだろう。現在のgithub上のdroolsjbpmプロジェクト内にはEclipse用の .project ファイルとかは無いから…昔のドキュメントから引っ張ってきただけかなー

2. Release Notes

2.1. New and Noteworthy in KIE API 6.0.0
2.1.1. New KIE name

これがKIEファミリーだ!

2.1.2. Maven aligned projects and modules and Maven Deployment
2.1.3. Configuration and convention based projects

まず覚えておくのは kmodule.xml。とりあえずファイルは必要。

2.1.4. KieBase Inclusion

includes とかで、柔軟にkbaseを定義できる。

2.1.5. KieModules, KieContainer and KIE-CI

KieModule: Mavenで作ったJARで、kmodule.xmlを含むもの(=KJARですね。ドキュメント内にKJARの定義が書いてないけど)。
KieContainer: KieModuleを活用するランタイム。Mavenベースのバージョニングを含む。
Kie-ci(kie-ci.jar): クラスパスを動的に作ってMaven dependenciesを解決。 Maven LATEST, SNAPSHOT, RELEASE and version ranges are supported.

KieContainerはダイナミックにバージョンをupdateできる。stateful KieSessionsもインクリメンタルに更新される。

2.1.6. KieScanner

KieScanner: Drools5でのKnowledgeAgentに相当。定期的にMavenリポジトリをスキャンして、更新があれば、KieContainerに反映する。

2.1.7. Hierarchical ClassLoader

Drools5のCompositeClassLoaderから、一般的なHierarchical ClassLoaderに戻したよ。ルートがKieContextレベル。子クラスローダーは名前空間毎。よって、例えば名前空間をまたがってfunctionは呼び出せない。

2.1.8. Legacy API Adapter

"knowledge-api-legacy5-adapter で Drools 5 API も使える。KnowledgeAgent だけは無理。

2.1.9. KIE Documentation

ドキュメントまだ古いとこあるけどゴメンね。

2.2. What is New and Noteworthy in Drools 6.0.0
2.2.1. PHREAK - Lazy rule matching algorithm

新しいアルゴリズム、PREAKだ。遅延評価によるパフォーマンス向上。Sequentialモードで'modify'が使える。ルールの実行順はsalienceの次に、ファイル上のルールの記述順に従う。

2.2.2. Automatically firing timed rule in passive mode

TimedRuleExectionOption で timed rule を自動的に実行できる(Drools5でもScheduledActionはTimerスレッドでfireしてたけどなー)

2.2.3. Expression Timers

ルールに timer() を追加して、タイマー実行が可能に。

2.2.4. RuleFowGroup and AgendaGroups are merged

RuleFowGroup と AgendaGroups は同様の動きになる。(* AgendaGroupsのスタック動作はどうなるかなー)

2.3. New and Noteworthy in KIE Workbench 6.0.0

ワークベンチは UberFire というextensibleなフレームワークをベースに構築されている。リポジトリはGit。JGitで実装。Guvnorは今はもっと狭い意味のプロジェクトとなり、Mavenインテグレーションなどを担当する。"Figure 2.3. Module Structure"参照。

ユーザから見える最終的なワークベンチは2種類

  • KIE Drools Workbench: Droolsのルール管理
  • KIE Workbench: Drools+jBPMのルール、プロセス管理 etc.

Drools5 -> Drools6 で以下のように

  • Global Area -> Maven Artifact Repository
  • declarative Fact Model Editor -> Data Modeller
  • JCR -> Virtual File System (デフォルトはGit)

エディタ類は変わらず。

2.4. New and Noteworthy in Integration 6.0.0
2.4.1. CDI
2.4.2. Spring
2.4.3. Aries Blueprints
2.4.4. OSGi Ready

3. Compatibility matrix

6.0 以降、Drools, jBPM, OptaPlanner はバージョンナンバーを合わせていくよ。