Upload
yoshimasa-tanabe
View
473
Download
2
Embed Size (px)
Citation preview
Introduction to Drools
2015-03-07(土) 第十回 #渋谷java
田邊 義真(たなべ よしまさ)
@emaggame
http://morec.at
2015-03-07(土) 第十回 #渋谷java 2
目次● BRMS とは● Drools とは● Drools デモ● 所感● 参考
2015-03-07(土) 第十回 #渋谷java 3
BRMS とは● Business Rule Management System● ビジネスは時々刻々変化する● ソースコード中のビジネスロジックをルールとして外に追い出
すことで、保守しやすくする。BRMS はそのためのランタイム– ビジネス要求の変化に対応しやすくなる– ビジネスロジックを俯瞰しやすくなる– DSL を用いることで、通常のプログラミングモデルよりもロジックを
(場合によっては)容易に表現できるようになる
2015-03-07(土) 第十回 #渋谷java 4
Drools とは● Red Hat が提供する OSS の BRMS 実装
– ルール管理 UI や CEP、 BPM 連携など機能が豊富● 公式サイト
– http://drools.org/● リポジトリ
– https://github.com/droolsjbpm/drools/● 2015-03-07 現在、最新の安定版は 6.2.0.Final
2015-03-07(土) 第十回 #渋谷java 5
Drools デモ● デモのソースコードは以下にあります
– http://bit.ly/drools-intro● いずれも Drools のサンプルから抜き出しました
2015-03-07(土) 第十回 #渋谷java 6
Drools デモ(自動車保険)● 被保険者の属性(年齢・居住地のリスク・過去の保険請求
回数・保険種別)から保険料を算出する● ルールはスプレッドシートを用い、デシジョンテーブルとして
表現する年齢 居住地 請求回数 保険種別
18 - 24 リスク低 0 車両保険
25 - 30 リスク高 1 代理店
25 - 35 リスク低 0 車両保険
保険料
15,000
20,000
10,000
2015-03-07(土) 第十回 #渋谷java 7
Drools デモ(Twitter CBR)● Twitter のサンプルストリームから特定条件に合致するツイートを
抽出する● ルールの表現として Drools ネイティブである DRL(Drools Rule
Language)と Complex Event Processing(CEP) を利用する● CEP は複数のイベント(データの追加、変更など)間に対して時間
の概念を付加することで、イベント間の関係から有意なデータを導くために利用する。– CEP 自体は BRMS に限らずリアルタイム処理でよく使われる用語(e.g.
Apache Spark)
2015-03-07(土) 第十回 #渋谷java 8
所感● 値の変更や条件の組合せが頻繁に変わるようなルール
において、デシジョンテーブルは直感的に表現できてよい– 自分でスプレッドシート(グリッド)のような UI を提供しても、条
件判定の実装部分が煩雑になりそう● DRL はそれなりに覚えることの多い DSL であるもの
の、CEP なども合わせて使いこなせれば 手続き型プログラミングだと煩雑になるケースが表現しやすくなる(イベント間の関係をオンライン処理しようとする場合など)。
2015-03-07(土) 第十回 #渋谷java 9
参考1(公式)● Drools 公式サイト
– http://drools.org/● ドキュメント
– http://drools.org/learn/documentation.html
2015-03-07(土) 第十回 #渋谷java 10
参考2(ブログ記事など)● ビジネスルールの館
● http://www.iluminado.jp/● tokobayashiの日記
– http://d.hatena.ne.jp/tokobayashi/– Twitter4JとDroolsでなんかリアルタイムな感じのもの
● その1 http://d.hatena.ne.jp/tokobayashi/20111109#p1● その2 http://d.hatena.ne.jp/tokobayashi/20111110#p1● その3 http://d.hatena.ne.jp/tokobayashi/20111113#p1