0

drools は初めてですが、既存のプロジェクトに統合したいと考えています。Spring MVC フレームワークを使用しています。drools の無料プロジェクトから、簡単な例の hello world を正常に実装しました。私が今やりたいことは次のとおりです。

  1. 評価するルールに Bean を送信します。
  2. ルールに応じて Bean を変更する
  3. コントローラーに送り返して、ユーザーに応答します。

ステップ 1すでに完了しています。Bean をルールに挿入できました。私のルールで今のところ持っているものは次のようなものです:

global String $test;

rule "Excellent"

    when
        $m: FLTBean ( listeningScore > 85 )
        $p: FLTBean ( listeningScore < 101 )
    then
        $test = "Excellent";
        System.out.println( $test );

end

ステップ 2ステップ 3については、どうすればよいかわかりません。可能であれば、これを行うための簡単なコードを教えてください。ネストされたルールが必要です。例として2つのネストされたルールを使用すると、素晴らしいでしょう。

前もって感謝します。

4

2 に答える 2

0

1 つのオプションは、ルールが実行された後にルール エンジンから Bean を取得するために、Bean のクエリを作成することです。取得する Bean が多数ある場合、これは面倒になる可能性があります。ドキュメントには、このアプローチの例が示されています

別のオプションとして、ルール実行の最後にすべての Bean を収集するグローバル コレクションを用意することもできます。「収集」ルールが最後に実行されるように、重要度が低いことを確認してください。このルールは以下のようなものになります

rule 'collect results'
  salience -500
  when
    $beans : ArrayList() from collect( MyBean() )
  then
    someGlobal.setBeans( $beans);
end

実際、必要に応じてグローバル リストに直接追加することもできます。collectすべての Bean が必要ない場合は、 でいくつかの条件を追加することもできます。

于 2013-11-09T11:47:29.117 に答える