【发布时间】:2014-10-17 05:12:21
【问题描述】:
我有一个模型对象 Account
package com.drool.model;
import java.util.Date;
public class Acccount {
private int id;
private int balance;
private Date transDate;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
public Date getTransDate() {
return transDate;
}
public void setTransDate(Date transDate) {
this.transDate = transDate;
}
}
流口水规则
import com.drool.model.Acccount
rule "accountTransaction"
when
$first : Acccount()
$second : Acccount( this != $first, transDate==$first.transDate )
then
System.out.println("second Accounbt had latest transaction");
end
测试应用代码:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("HelloWorld.drl"), ResourceType.DRL);
KnowledgeBase kbase = kbuilder.newKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
Acccount account = new Acccount();
account.setBalance(1000000);
account.setId(123);
account.setTransDate(new Date());
Acccount account1 = new Acccount();
account1.setBalance(200);
account1.setId(1234);
account1.setTransDate(new Date());
ksession.insert(account);
ksession.insert(account1);
ksession.fireAllRules();
输出:
second Accounbt had latest transaction
second Accounbt had latest transaction
我是流口水的新手,当我运行上面的示例时。结果被打印两次,理想情况下应该只打印一次。请让我知道我的规则是否正确?
【问题讨论】:
标签: java drools rule-engine