我有一个在Excel电子表格中有两个规则的决定表。 (这个例子已经大大简化了,我正在使用的那个有更多的规则。)更新决策表中的事实:Drools
第一条规则检查金额是否大于或等于500.如果是,则它将状态设置为400 第二条规则检查状态是否为400.如果是,则它设置消息变量。 问题是,即使设置了顺序,我也无法获得第二条规则。我也必须使用无循环和锁定活动来防止无限循环。
我的目标是让规则自顶而下,后面的规则可能取决于先前规则对事实/对象所做的更改。
有没有解决这个问题的方法? 任何帮助,将不胜感激,谢谢!
package com.example;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
public class SalaryTest {
public static final void main(String[] args) {
try {
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-dtables");
Salary a = new Salary();
a.setAmount(600);
kSession.insert(a);
kSession.fireAllRules();
} catch (Throwable t) {
t.printStackTrace();
}
}
public static class Salary{
private String message;
private int amount;
private int status;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}
}
谢谢,但是让这个改变仍然没有触发第二条规则 –
这只是更新事实的替代语法。 – laune