droolsでルール作成

前準備

takeiteasy-09.net

上記で drools 環境を整えておきます。

プロジェクトの作成

トップページから「プロジェクト」-「MySpace」をクリックします。

f:id:akky97:20201203093323p:plain

「プロジェクトの追加」 をクリックします。

f:id:akky97:20201203093628p:plain

プロジェクト名、説明を入れて「追加」ボタンをクリックします。

f:id:akky97:20201203094220p:plain

プロジェクトが作成されますので、「アセットの追加」ボタンをクリックします。

f:id:akky97:20201203094338p:plain

「データオブジェクト」を選択します。

f:id:akky97:20201203094722p:plain

オブジェクト名とパッケージを入力します。パッケージはデフォルトだと「com」になっていますので、ここを今作成したプロジェクトになるように選択します。

f:id:akky97:20201203094942p:plain

データオブジェクトの作成がされますので、続いて「フィールドを追加」をクリックします。

f:id:akky97:20201203095209p:plain

本のタイトルと値段を入れられるようにします。IDに「Title」、タイプを「String」を選択し、「作成して続行する」ボタンをクリックします。

f:id:akky97:20201203095404p:plain

続いてIDに「Price」、タイプを「Integer」を選択し、「作成」ボタンをクリックします。

f:id:akky97:20201203102048p:plain

以下のように定義されていることが確認できますので、「保存」ボタンをクリックします。

f:id:akky97:20201203102550p:plain

ルールを定義する

パンくずリストのプロジェクト名をクリックし、「アセットの追加」ボタンをクリックします。(ブラウザの戻るボタンとかではうまく移動できず…)

f:id:akky97:20201203102642p:plain

「ガイド付きデシジョンテーブル」をクリックします。

f:id:akky97:20201203102809p:plain

デシジョンテーブルの名前の入力、パッケージをプロジェクト配下になるように選択します。

f:id:akky97:20201203102946p:plain

メニューの「挿入」から「列の挿入」をクリックします。

f:id:akky97:20201203103101p:plain

「条件の追加」を選択します。

f:id:akky97:20201203103224p:plain

「新規ファクトパターンを作成」をクリックします。

f:id:akky97:20201203103334p:plain

ファクトタイプに追加したオブジェクト、バインディングに名前を入力します。

f:id:akky97:20201203103540p:plain

「次へ」ボタンをクリックします。

f:id:akky97:20201203103738p:plain

計算タイプは「固定値」を選択し、「次へ」ボタンをクリックします。

f:id:akky97:20201203103900p:plain

フィールドに「title」を選択し、「次へ」ボタンをクリックします。

f:id:akky97:20201203104042p:plain

オペレータに「は次の値と等しい」を選択し、「次へ」をクリックします。

f:id:akky97:20201203104153p:plain

値オプションはそのままで「次へ」をクリックします。

f:id:akky97:20201203104325p:plain

ヘッダーに説明文を入れ、「完了」ボタンをクリックします。

f:id:akky97:20201203104452p:plain

これで本のタイトルがなんなのかを入力できる列が作成できました。続いて、値段を決定する列を追加します。

「挿入」-「列の挿入」をクリックします。

f:id:akky97:20201203104818p:plain

新規の列は「フィールド値のセット」を選択し、「次へ」ボタンをクリックします。

f:id:akky97:20201203105002p:plain

パターンにはBook[本]を選択し、「次へ」ボタンをクリックします。

f:id:akky97:20201203105140p:plain

フィールドは「price」を選択します。

f:id:akky97:20201203105258p:plain

値オプションはそのままにします。

f:id:akky97:20201203105421p:plain

ヘッダーの説明を入力し、「完了」ボタンをクリックします。

f:id:akky97:20201203105549p:plain

これで本のタイトルから値段を決める、という表が作成されました。赤枠で囲った列が本のタイトルが何であるかを入力する列、右の青枠で囲った列がその値段を入力する列となります。

f:id:akky97:20201203111230p:plain

データを入力してみる

メニューの「挿入」-「行の追加」をクリックします。

f:id:akky97:20201203111617p:plain

すると表に行が追加されますので、本のタイトルと値段を入れます。下記では二つ行を増やして情報を入力しました。(入力後「保存」ボタンをクリックするのを忘れずに!

f:id:akky97:20201203112043p:plain

このルールだと「入門Java」の値段はいくらか問われた時に「2500」円と返すパターンと「独習C++」がいくらか問われた時に「3000」円と返すパターンが定義されたことになります。

要は二冊分の情報しか返さないルールになっています(使いどころはない…)が、こんな感じでルールを作っていきます。