狠狠撸

狠狠撸Share a Scribd company logo
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

More Related Content

Introduction to Drools

  • 1. Introduction to Drools 2015-03-07(土) 第十回 #渋谷java 田邊 義真(たなべ よしまさ) @emaggame http://morec.at
  • 2. 2015-03-07(土) 第十回 #渋谷java 2 目次 ● BRMS とは ● Drools とは ● Drools デモ ● 所感 ● 参考
  • 3. 2015-03-07(土) 第十回 #渋谷java 3 BRMS とは ● Business Rule Management System ● ビジネスは時々刻々変化する ● ソースコード中のビジネスロジックをルールとして外に追い出 すことで、保守しやすくする。BRMS はそのためのランタイム – ビジネス要求の変化に対応しやすくなる – ビジネスロジックを俯瞰しやすくなる – DSL を用いることで、通常のプログラミングモデルよりもロジックを (場合によっては)容易に表現できるようになる
  • 4. 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
  • 5. 2015-03-07(土) 第十回 #渋谷java 5 Drools デモ ● デモのソースコードは以下にあります – http://bit.ly/drools-intro ● いずれも Drools のサンプルから抜き出しました
  • 6. 2015-03-07(土) 第十回 #渋谷java 6 Drools デモ(自動車保険) ● 被保険者の属性(年齢?居住地のリスク?過去の保険請求 回数?保険種別)から保険料を算出する ● ルールはスプレッドシートを用い、デシジョンテーブルとして 表現する 年齢 居住地 請求回数 保険種別 18 - 24 リスク低 0 車両保険 25 - 30 リスク高 1 代理店 25 - 35 リスク低 0 車両保険 保険料 15,000 20,000 10,000
  • 7. 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)
  • 8. 2015-03-07(土) 第十回 #渋谷java 8 所感 ● 値の変更や条件の組合せが頻繁に変わるようなルール において、デシジョンテーブルは直感的に表現できてよい – 自分でスプレッドシート(グリッド)のような UI を提供しても、条 件判定の実装部分が煩雑になりそう ● DRL はそれなりに覚えることの多い DSL であるもの の、CEP なども合わせて使いこなせれば 手続き型プログ ラミングだと煩雑になるケースが表現しやすくなる(イベ ント間の関係をオンライン処理しようとする場合など)。
  • 9. 2015-03-07(土) 第十回 #渋谷java 9 参考1(公式) ● Drools 公式サイト – http://drools.org/ ● ドキュメント – http://drools.org/learn/documentation.html
  • 10. 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