おっと、バージョン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 の目玉は…
1.2. Getting Involved
プロジェクトに contribute するために、この章を熟読しよう。あと、ブログ書こうぜ。
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
2. Release Notes
2.1. New and Noteworthy in KIE API 6.0.0
2.1.1. New KIE name
これがKIEファミリーだ!
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.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種類
Drools5 -> Drools6 で以下のように
- Global Area -> Maven Artifact Repository
- declarative Fact Model Editor -> Data Modeller
- JCR -> Virtual File System (デフォルトはGit)
エディタ類は変わらず。