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.6k
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
820
Other Decks in Technology
See All in Technology
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
3.7k
重厚長大企業で、顧客価値をスケールさせるためのプロダクトづくりとプロダクト開発チームづくりの裏側 / Developers X Summit 2025
mongolyy
0
120
「O(n log(n))のパフォーマンス」の意味がわかるようになろう
dhirabayashi
0
180
機密情報の漏洩を防げ! Webフロントエンド開発で意識すべき漏洩パターンとその対策
mizdra
PRO
9
3.5k
ステートレスなLLMでステートフルなAI agentを作る - YAPC::Fukuoka 2025
gfx
8
1.3k
大規模プロダクトで実践するAI活用の仕組みづくり
k1tikurisu
4
1.3k
JAWS-UG SRE支部 #14 LT
okaru
0
110
それでは聞いてください「Impeller導入に失敗しました」 #FlutterKaigi #skia
tacck
PRO
0
130
自己的售票系統自己做!
eddie
0
460
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
110
持続可能なアクセシビリティ開発
azukiazusa1
4
140
AWS資格は取ったけどIAMロールを腹落ちできてなかったので、年内に整理してみた
hiro_eng_
0
230
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
The Cult of Friendly URLs
andyhume
79
6.7k
Producing Creativity
orderedlist
PRO
348
40k
Visualization
eitanlees
150
16k
Six Lessons from altMBA
skipperchong
29
4.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Balancing Empowerment & Direction
lara
5
750
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
2.9k
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