1

その部分を理解するのに苦労していvalue : value == 0ますか?このコードはどのように機能しますか?

rule "My rule"
   when
       m : MyClass( value : value == 0)
    then
end
4

1 に答える 1

5

Drools 5.4以降のスナップショットを使用していると仮定すると、任意のブール式を制約として記述できます。したがってvalue == 0、「value」がMyClassのフィールド名である制約も同様です。

Droolsでは、次のように「:」を使用して属性を変数名にバインドすることもできます。

<variable_name> : <fieldName>

だから、あなたは書くことができます:

MyClass( $var : value == 0)

最後に、Droolsは「コンテキスト認識」パーサーを使用するため、属性名と同じ名前の変数を使用できます。これは、Droolsが:の前にあるものがフィールドではなく変数名であることを認識しているためです。したがって、この例では、変数「value」は属性「value」にバインドされ、value属性が0に等しい場合、制約「value==0」はtrueになります。

それが役に立てば幸い。

于 2012-06-28T02:26:12.873 に答える