Slide 1

Slide 1 text

DROOLS 入門 DROOLS 入門 Toshiya Kobayashi

Slide 2

Slide 2 text

DROOLS って何? DROOLS って何? オープンソース、Java で書かれたルールエンジン 宣言的にルールを記述する Excel スプレッドシートなど複数のフォーマットで記 述可能 クラウドネイティブにも対応(Kogito) Red Hat Decision Manager のアップストリーム

Slide 3

Slide 3 text

どういうときに使う? どういうときに使う? Input(POJO) をルールで処理し、Output を出力する 普通の Java でロジックを記述するのとどう違う? 宣言的(Declarative)にルールを記述する -> 実行、最適化はエンジンに任せる -> ルールのみ書けばよいのでメンテナンス性が向上 -> プログラマとビジネスアナリストの分業が容易 ルールの量が多い場合は Drools がはまる

Slide 4

Slide 4 text

やってみよう やってみよう rule "高額商品" when $p : Person( age >= 12 ) $o : Order( consumer == $p, itemPrice > 100000 ) then System.out.println( $p.getName() + "さん、 " + $o + " の注文をご確認 end rule "高額商品 子ども" when $p : Person( age < 12 ) $o : Order( consumer == $p, itemPrice > 5000 ) then System.out.println( $p.getName() + "さん、、 " + $o + " の注文を保護 end

Slide 5

Slide 5 text

DRL DRL when に条件、then にアクション(Java)を書く ルールは並列に並べるだけ ksession.insert() で ファクト(POJO) をインプット ksession. reAllRules() でルール実行

Slide 6

Slide 6 text

RETE MODEL : ルールの内部表現 RETE MODEL : ルールの内部表現

Slide 7

Slide 7 text

デシジョンテーブル デシジョンテーブル

Slide 8

Slide 8 text

デシジョンテーブル デシジョンテーブル 上段にルールのテンプレートを書き、セルで値を埋めて いく プログラマとビジネスアナリストの分業が容易 スプレッドシートの1行が1ルール(DRL)に変換される

Slide 9

Slide 9 text

推論 推論 rule "春のキャンペーン" when $o : Order(consumer.memberCreatedAt >= "2019-04-01" && consumer. then System.out.println("実行 : " + kcontext.getRule().getName()); $o.setExtraPoint($o.getExtraPoint() + 2000); update($o); end rule "高額商品キャンペーン" when $o : Order(itemPrice > 100000) then System.out.println("実行 : " + kcontext.getRule().getName()); $o.setExtraPoint($o.getExtraPoint() + 4000); update($o); end

Slide 10

Slide 10 text

推論 推論 ルールの then でファクトを insert や update 出来る 変更をもとにルールが再評価される 変更されたプロパティが影響するルールのみ やりすぎ注意

Slide 11

Slide 11 text

KJAR KJAR ルールやPOJOをまとめて jar にする kie-maven-plugin Maven リポジトリから取得してルール実行

Slide 12

Slide 12 text

ワークベンチ(DECISION-CENTRAL) ワークベンチ(DECISION-CENTRAL) GUI でルール、ファクト、テストシナリオなどを作成 リソースは git で管理 kie-server (後述) 管理

Slide 13

Slide 13 text

KIE-SERVER KIE-SERVER ルール実行サーバー REST で insert, reAllRules Web アプリケーションとルールエンジンを分離

Slide 14

Slide 14 text

KOGITO KOGITO Drools、jBPM をクラウドネイティブに 起動が速い、メモリ消費が少ない kogito.kie.org

Slide 15

Slide 15 text

ほかにもいろいろ ほかにもいろいろ DMN (Decision Model and Notation) ルール記述、図表現の標準 PMML (Predictive Model Markup Language) Machine Learning によって訓練されたモデルを実行 CEP (Complex Event Processing) リアルタイムに投入されるイベントを処理

Slide 16

Slide 16 text

リソース リソース drools.org Drools ブログ Red Hat Decision Manager

Slide 17

Slide 17 text

END END