$30 off During Our Annual Pro Sale. View Details »
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
850
Other Decks in Technology
See All in Technology
AIBuildersDay_track_A_iidaxs
iidaxs
4
1.2k
Amazon Bedrock Knowledge Bases × メタデータ活用で実現する検証可能な RAG 設計
tomoaki25
6
2.3k
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
2
240
さくらのクラウド開発ふりかえり2025
kazeburo
2
980
ActiveJobUpdates
igaiga
1
310
AI with TiDD
shiraji
1
270
"人"が頑張るAI駆動開発
yokomachi
1
120
New Relic 1 年生の振り返りと Cloud Cost Intelligence について #NRUG
play_inc
0
220
フィッシュボウルのやり方 / How to do a fishbowl
pauli
2
370
MySQLとPostgreSQLのコレーション / Collation of MySQL and PostgreSQL
tmtms
1
1.2k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
9.9k
Featured
See All Featured
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.3k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
75
Become a Pro
speakerdeck
PRO
31
5.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
310
We Have a Design System, Now What?
morganepeng
54
7.9k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
130
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
27
Large-scale JavaScript Application Architecture
addyosmani
515
110k
So, you think you're a good person
axbom
PRO
0
1.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.4k
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