Drools

Droolsブログ : 14 KieLive

14 KieLive Drools は Kogito, jBPM, OptaPlanner を含めた KIE コミュニティ (https://kie.org/)の仲間です。KIE コミュニティでは KieLive というストリーミング配信を行っており、様々な技術的なトピックを語っています。過去の動画はこちらから観ること…

Droolsブログ : 13 DMN

13 DMN DMN (Decision Model and Notation) とは OMG (Object Management Group) で策定されたビジネスルールについての仕様です。 https://www.omg.org/dmn/ ビジネスプロセス仕様 BPMN (Business Process Model and Notation) のルール版だと思ってよいで…

Droolsブログ : 12 Kogito Examples

12 Kogito Examples Kogito 0.9.1 がリリースされました! 別に切りのいい数字じゃないって? や、そうなんですけど、0.9.1 はドキュメントや examples を整備して「いい感じに仕上げました」マイルストーンリリースなのです。今後もバージョン自体はどんど…

Droolsブログ : 11 Kie Server

11 Kie Server ここまでルールエンジンを実行するために直接 Java コードを書いてましたが、REST API での実行も可能です。その場合 REST エンドポイントを公開するための Web アプリが必要です。そのために Kie Server という Web アプリが提供されています…

Droolsブログ : 10 Business Central

10 Business Central Drools には Business Central という強力な Web UI ツールが付いています。以下、機能を列挙しますと ルール、デシジョンテーブル、データオブジェクト、プロセスなど、ファイルの管理 プロジェクトの管理 ルール、デシジョンテーブル…

Droolsブログ : 09 Executable Model

09 Executable Model この記事は 赤帽エンジニア Advent Calendar 2019 18 日目の記事です。 07 MVEL で書いたように、Drools 7 から Executable Model というオプションが利用可能となっています。これは kjar のビルド時点で DRL を Java クラス化し、実行…

Droolsブログ : 08 no-loop, lock-on-active

08 no-loop, lock-on-active DRL には様々な属性(attribute)を指定することができます。 https://docs.jboss.org/drools/release/7.26.0.Final/drools-docs/html_single/#_rule_attributes 今回はそのなかで、no-loop と lock-on-active を紹介します。 サン…

Droolsブログ : 07 MVEL

07 MVEL MVEL というのは Java ベースの言語で、 Java をより簡単に表記する事を目的にしています。超ざっくり言うと、getter/setter を省略して書いたりできます。 user.name == 'ジョン レノン' ドキュメントはこちらを参照ください。 http://mvel.documen…

Droolsブログ : 06 Quarkus で Drools/jBPM を動かす Kogito

06 Quarkus で Drools/jBPM を動かす Kogito これまで入門ネタを書いてきましたが、今回はちょっと最新情報を! Drools/jBPM には Kogito という新規プロジェクトがあり、Drools/jBPM を軽量に適用するアプローチを目指しています。そしてその中心となるのが…

Droolsブログ : 05 KJAR

05 KJAR 前回まではルールをクラスパスに配置していました。アプリケーションにリソースを組み込むという意味では普通のやりかたです。一方 Drools ではルールをアプリケーションと分離して管理する方法も強力にサポートされています。 ルールを Maven を使…

Droolsブログ : 04 ステートレス ksession

04 ステートレス ksession ここまで、普通の ksession つまり ステートフル ksession を使ってきましたが、今回は ステートレス ksession の使い方です。 ステートレス ksession とは、「ステートフル ksession のラッパーで、insert, fireAllrules, dispose…

Droolsブログ : 03 推論(Inference)

03 推論(Inference) 今回は Drools の重要な機能のひとつ、推論(Inference)を紹介します。推論というと少し難しく聞こえますが、「再評価」と言い換えてもよいです。 サンプルコードはこちらから clone してください。 git clone https://github.com/tkobaya…

Droolsブログ : 02 デシジョンテーブル

02 デシジョンテーブル 前回は HelloWorld ということで基本の DRL でルールを書きましたが、次はよく使われる「デシジョンテーブル」を説明します。 デシジョンテーブル(意思決定表)は以下のように表形式で、条件と結果を表すものです。DRL よりずっと分か…

Droolsブログ : 01 Drools HelloWorld

01 Drools HelloWorld こんにちは、これから Drools についていろいろと書いていこうと思います。サンプルと共に、分かりやすい入門的なエントリを中心にしていく予定です。 Drools というのはオープンソースのルールエンジンで、Java で書かれています。 ht…

Drools 6 Documentation ナナメ読みその9

http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/index.html#d0e17404やっと最後、Examples です。 VI. Drools Examples 19. Examples 19.1. Getting the Examples 19.2. Hello World 基本ですね。まずは実行してみよう。 19.3. …

Drools 6 Documentation ナナメ読みその8

http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/index.html#d0e13220さあ、やっとワークベンチきました。 V. Drools Workbench 15. Workbench 15.1. Installation 15.1.1. War installation kie-wb-*.war です。 15.1.2. Workbe…

Drools 6 Documentation ナナメ読みその7

http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/index.html#d0e10827Integration、他との連携です。 IV. Drools Integration 9. Drools Commands KieSession で使う各種メソッドに対応して、 org.kie.api.command.Command イン…

Drools 6 Documentation ナナメ読みその6

http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/index.html#DroolsComplexEventProcessingChapterCEPについては昔にもエントリを書いています。 http://d.hatena.ne.jp/tokobayashi/20111109 http://tkobayas.wordpress.com/201…

Drools 6 Documentation ナナメ読みその5

http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/index.html#DroolsLanguageReferenceChapterDRLの文法です。ここはひとつきっちりおさらいしておこう。 7. Rule Language Reference 7.1. Overview ANTLR が分かるなら DRL.g 読…

Drools 6 Documentation ナナメ読みその4

http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/index.html#d0e3387 6. User Guide ランタイムでの基本的な動作の説明をするよ。 6.1. The Basics 6.1.1. Stateless Knowledge Session データ渡して一発実行には Stateless Know…

Drools 6 Documentation ナナメ読みその3

http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/index.html#d0e2752 III. Drools Runtime and Language 5. Hybrid Reasoning 5.1. Artificial Intelligence AIの栄枯盛衰を語るでー 5.1.1. A Little History 1990年頃にAIは失墜…

Drools 6 Documentation ナナメ読みその2

http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/index.html#d0e791 II. KIE 4. KIE 4.1. Overview 4.1.1. Anatomy of Projects KIE, an acronym for Knowledge Is Everything 4.1.2. Lifecycles 4.2. Build, Deploy, Utilize an…

Drools 6 Documentation ナナメ読みその1

おっと、バージョン6になってエンジンもGUIもまとめてひとつのドキュメントになりましたね。これはゴツい。少しずつやるか。http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/index.html I. Welcome 1. Introduction 1.1. Introd…

Drools Planner でウィッシュリストから出産祝いを送る

注:このエントリは実際に行われた出産祝いとは何の関係もありません Drools Planner は難しい問題を解いてくれるソフトウェアです。 1.1. What is Drools Planner? http://docs.jboss.org/drools/release/5.5.0.Final/drools-planner-docs/html_single/inde…

KnowledgeAgent, ResourceChangeScanner, ResourceChangeNotifier

Drools Template

Drools Template てコード生成自体にルール使うのか。デバッグしづれえwwworg.drools.template.parser.DefaultTemplateRuleBase: public DefaultTemplateRuleBase(final TemplateContainer tc) { ruleBase = readRule(getDTRules(tc.getTemplates())); }で作…

Twitter4JとDroolsでなんかリアルタイムな感じのもの その3 ルール編

やっとこさルールです。ここを見ないとDroolsが何なのか分かりませんね。 ルールはDrools Rule Language (DRL) という言語で記述します。twitterRules1.drl declare Status @role( event ) @timestamp( createdAt ) @expires( 2s ) end まず、入力されるPOJO…

Twitter4JとDroolsでなんかリアルタイムな感じのもの その2 実装編

今回は実装編、つまりTwitter4JとDroolsの使い方です。さて、コードを見ていきましょう。TwitterCBR.java // Creates a knowledge base final KnowledgeBase kbase = createKnowledgeBase( "twitterRules1.drl" ); // Creates a knowledge session final Sta…

Twitter4JとDroolsでなんかリアルタイムな感じのもの その1 ビルドと実行編

Twitter4JとDroolsでなんかリアルタイムな感じのものをやります。といってもこのデモは私が作ったわけではなく、Drools開発者のEdson Tirelliが作ったものです。 Twitter4JはyusukeyさんによるTwitterのオープンソースJavaライブラリです ( http://twitter4j…