我有一個在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