Drools-ルールの作成

Hello Worldプロジェクト(Sample.drl)で記述されているデフォルトのルールが表示されている場合は、ここで説明する多くのキーワードが使用されています。

Sample.drl

  • Package−すべてのルールはパッケージ名で始まります。パッケージは、ルールの名前空間として機能します。パッケージ内のルール名は一意である必要があります。ルールのパッケージは、Javaのパッケージに似ています。

  • Import statement−ルールを適用するファクトが何であれ、それらのファクトをインポートする必要があります。たとえば、com.sample.DroolsTest.Message; 上記の例では。

  • Rule Definition−ルール名、条件、および結果で構成されます。Droolsのキーワードはrule, when, then, そして end。上記の例では、ルール名は「HelloWorld」と「GoodBye」です。ザ・when 一部はルールとルールの両方の条件です then一部は結果です。ルールの用語では、when 一部はLHS(左側)とも呼ばれ、 then ルールのRHS(右側)としての部分。

ここで、Droolsのロードとルールの実行に使用されるJavaファイルで使用される用語について説明します。

知識ベース

ナレッジベースは、ルール、プロセス、および内部タイプのコレクションを管理するインターフェイスです。パッケージに含まれていますorg.drools.KnowledgeBase。Droolsでは、これらは一般にknowledge definitions または knowledge。知識の定義はにグループ化されますknowledge packages。知識の定義は追加または削除できます。ナレッジベースの主な目的は、作成に費用がかかるため、それらを保存して再利用することです。ナレッジベースは、ナレッジセッションを作成するためのメソッドを提供します。

ナレッジセッション

ナレッジセッションは、ナレッジベースから取得されます。これは、Droolsエンジンと対話するためのメインインターフェイスです。知識セッションには2つのタイプがあります-

  • ステートレスナレッジセッション

  • ステートフルナレッジセッション

ステートレスナレッジセッション

ステートレスナレッジセッションは、推論を利用せずに、最も単純なユースケースを形成するステートレスセッションです。ステートレスセッションは、関数のように呼び出すことができ、データを渡してから結果を受け取ります。ステートレスセッションの一般的な例は次のとおりです。

  • Validation

    • この人は住宅ローンの資格がありますか?

  • Calculation

    • 住宅ローンの保険料を計算します。

  • Routing and Filtering

    • 電子メールなどの受信メッセージをフォルダーにフィルターします。

    • 着信メッセージを宛先に送信する

ステートフルナレッジセッション

ステートフルセッションは存続期間が長く、時間の経過とともに繰り返し変更できます。ステートフルセッションの一般的な使用例には、次のものがあります。

  • Monitoring

    • 半自動購入のための株式市場の監視と分析。

  • Diagnostics

    • 故障発見、医療診断

  • Logistics

    • 小包の追跡と配達のプロビジョニング

ナレッジビルダー

KnoledgeBuilderインターフェースは、ナレッジ定義(ルール、プロセス、タイプ)からKnowledgePackageを構築する役割を果たします。パッケージに含まれていますorg.drools.builder.KnowledgeBuilder。知識の定義はさまざまな形式にすることができます。ビルドに問題がある場合、KnowledgeBuilderは次の2つの方法でエラーを報告します。hasErrors そして getError

次の図は、プロセスを説明しています

上記の例では、ステートレスナレッジセッションの簡単な例を取り上げているため、セッションにファクトを挿入した後、fireAllRules()メソッドが呼び出され、出力が表示されます。

ステートフルナレッジセッションの場合、ルールが実行されると、ステートフルナレッジセッションオブジェクトはメソッドを呼び出す必要があります dispose() セッションを解放し、メモリリークを回避します。