Java 如何在.drl文件中实例化对象

Java 如何在.drl文件中实例化对象,java,instantiation,drools,Java,Instantiation,Drools,我对这根“口水棒”一无所知。因此,我在这里遇到了一点小麻烦 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

我对这根“口水棒”一无所知。因此,我在这里遇到了一点小麻烦

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)

如果你们能在这里帮助我,我将不胜感激:)

错误是因为$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=new Alarm()

错误是因为从未声明$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=new Alarm()