Drools-rules-writing

提供:Dev Guides
移動先:案内検索

よだれ-ルールの記述

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

デフォルトルール

Sample.drl

  • パッケージ-すべてのルールはパッケージ名で始まります。 パッケージは、ルールのネームスペースとして機能します。 パッケージ内のルール名は一意である必要があります。 ルールのパッケージは、Javaのパッケージに似ています。
  • Import statement -ルールを適用するファクトが何であれ、それらのファクトをインポートする必要があります。 たとえば、com.sample.DroolsTest.Message;上記の例では。
  • ルール定義-ルール名、条件、および結果で構成されます。 Droolsキーワードは* rule、when、then、および *end です。 上記の例では、ルール名は「Hello World」と「GoodBye」です。 when 部分はルールの両方の条件であり、 then 部分は結果です。 ルール用語では、 when 部分はルールのLHS(左側)とも呼ばれ、 then 部分はルールのRHS(右側)とも呼ばれます。

ここで、Droolsのロードとルールの実行に使用されるJavaファイルで使用される用語を見ていきましょう。

知識ベース

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

ナレッジセッション

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

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

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

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

  • 検証
  • この人は住宅ローンの資格がありますか?
  • 計算
  • 住宅ローンのプレミアムを計算します。
  • ルーティングとフィルタリング
  • メールなどの受信メッセージをフォルダーにフィルターします。
  • 宛先に着信メッセージを送信する

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

ステートフルセッションはより長く存続し、時間の経過とともに反復的な変更を可能にします。 ステートフルセッションの一般的な使用例には、次のものがあります-

  • モニタリング
  • 半自動購入のための株式市場の監視と分析。
  • 診断
  • 障害発見、医療診断
  • ロジスティクス
  • 荷物の追跡と配達のプロビジョニング

ナレッジビルダー

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

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

KnoledgeBuilder

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

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