1

私はこのよだれをたらしているスタッフと全く新しいです。したがって、私はここで少し問題を抱えています。

rule "Raise the alarm when we have one or more fires"
    when
exists Fire()
then 
    insert( new Alarm() );  
end

私がこのコードを持っているとき、それはうまくいきます。しかし、私はこれを少し次のように変更したいと思います:

rule "Raise the alarm when we have one or more fires"
    when
exists Fire()
then 
    $alarm = new Alarm();
    $alarm.RingBell();
    insert( $alarm );  
end

おそらくあなたは私がここでやろうとしていることを理解したでしょう。Alarmクラスをインスタンス化し、そのRingBellメソッドを起動したいと思います。しかし、それは私にこのエラーを与えます

Rule Compilation error : [Rule name='Raise the alarm when we have one or more fires']
    com/sample/Rule_Raise_the_alarm_when_we_have_one_or_more_fires_cd7449c70a6a48c78f4e291495d23b05.java (8:436) : alarm cannot be resolved

java.lang.IllegalArgumentException: Could not parse knowledge.
    at com.sample.DroolsTest.readKnowledgeBase(DroolsTest.java:117)
    at com.sample.DroolsTest.main(DroolsTest.java:28)

あなたたちがここで私を助けてくれたら私はそれをいただければ幸いです:))

4

1 に答える 1

5

エラーは、$alarm変数が宣言されていないためです。次のことを試してください。

rule "Raise the alarm when we have one or more fires"
    when
exists Fire()
then 
    Alarm $alarm = new Alarm();
    $alarm.RingBell();
    insert( $alarm );  
end

重要な行は次のとおりです。Alarm $alarm= new Alarm();

于 2012-11-12T08:14:04.710 に答える