Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Drools 入門
Search
Toshiya Kobayashi
December 11, 2019
Technology
0
2.5k
Drools 入門
2019 日本 JBoss ユーザ・グループ勉強会のスライドです
https://ossbyredhat.connpass.com/event/153523/
#jjbug #drools
Toshiya Kobayashi
December 11, 2019
Tweet
Share
More Decks by Toshiya Kobayashi
See All by Toshiya Kobayashi
Event-driven business automation powered by cloud native Java
tkobayas
1
770
Other Decks in Technology
See All in Technology
2025新卒研修・HTML/CSS #弁護士ドットコム
bengo4com
2
3.7k
オブザーバビリティプラットフォーム開発におけるオブザーバビリティとの向き合い / Hatena Engineer Seminar #34 オブザーバビリティの実現と運用編
arthur1
0
200
AI人生苦節10年で会得したAIがやること_人間がやること.pdf
shibuiwilliam
1
230
MCPと認可まわりの話 / mcp_and_authorization
convto
2
340
メモ整理が苦手な者による頑張らないObsidian活用術
optim
1
160
経験がないことを言い訳にしない、 AI時代の他領域への染み出し方
parayama0625
0
280
人と生成AIの協調意思決定/Co‑decision making by people and generative AI
moriyuya
0
220
AI によるドキュメント処理を加速するためのOCR 結果の永続化と再利用戦略
tomoaki25
0
230
Recoil脱却の現状と挑戦
kirik
3
490
【CEDEC2025】『Shadowverse: Worlds Beyond』二度目のDCG開発でゲームをリデザインする~遊びやすさと競技性の両立~
cygames
PRO
1
160
大規模組織にAIエージェントを迅速に導入するためのセキュリティの勘所 / AI agents for large-scale organizations
i35_267
6
360
【CEDEC2025】現場を理解して実現!ゲーム開発を効率化するWebサービスの開発と、利用促進のための継続的な改善
cygames
PRO
0
520
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
A Tale of Four Properties
chriscoyier
160
23k
For a Future-Friendly Web
brad_frost
179
9.8k
A designer walks into a library…
pauljervisheath
207
24k
How GitHub (no longer) Works
holman
314
140k
Done Done
chrislema
185
16k
GitHub's CSS Performance
jonrohan
1031
460k
Statistics for Hackers
jakevdp
799
220k
Faster Mobile Websites
deanohume
308
31k
Become a Pro
speakerdeck
PRO
29
5.4k
Side Projects
sachag
455
43k
Transcript
DROOLS 入門 DROOLS 入門 Toshiya Kobayashi
DROOLS って何? DROOLS って何? オープンソース、Java で書かれたルールエンジン 宣言的にルールを記述する Excel スプレッドシートなど複数のフォーマットで記 述可能
クラウドネイティブにも対応(Kogito) Red Hat Decision Manager のアップストリーム
どういうときに使う? どういうときに使う? Input(POJO) をルールで処理し、Output を出力する 普通の Java でロジックを記述するのとどう違う? 宣言的(Declarative)にルールを記述する ->
実行、最適化はエンジンに任せる -> ルールのみ書けばよいのでメンテナンス性が向上 -> プログラマとビジネスアナリストの分業が容易 ルールの量が多い場合は Drools がはまる
やってみよう やってみよう 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
DRL DRL when に条件、then にアクション(Java)を書く ルールは並列に並べるだけ ksession.insert() で ファクト(POJO) をインプット
ksession. reAllRules() でルール実行
RETE MODEL : ルールの内部表現 RETE MODEL : ルールの内部表現
デシジョンテーブル デシジョンテーブル
デシジョンテーブル デシジョンテーブル 上段にルールのテンプレートを書き、セルで値を埋めて いく プログラマとビジネスアナリストの分業が容易 スプレッドシートの1行が1ルール(DRL)に変換される
推論 推論 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
推論 推論 ルールの then でファクトを insert や update 出来る 変更をもとにルールが再評価される
変更されたプロパティが影響するルールのみ やりすぎ注意
KJAR KJAR ルールやPOJOをまとめて jar にする kie-maven-plugin Maven リポジトリから取得してルール実行
ワークベンチ(DECISION-CENTRAL) ワークベンチ(DECISION-CENTRAL) GUI でルール、ファクト、テストシナリオなどを作成 リソースは git で管理 kie-server (後述) 管理
KIE-SERVER KIE-SERVER ルール実行サーバー REST で insert, reAllRules Web アプリケーションとルールエンジンを分離
KOGITO KOGITO Drools、jBPM をクラウドネイティブに 起動が速い、メモリ消費が少ない kogito.kie.org
ほかにもいろいろ ほかにもいろいろ DMN (Decision Model and Notation) ルール記述、図表現の標準 PMML (Predictive
Model Markup Language) Machine Learning によって訓練されたモデルを実行 CEP (Complex Event Processing) リアルタイムに投入されるイベントを処理
リソース リソース drools.org Drools ブログ Red Hat Decision Manager
END END