@Testpublicvoidtest_ifelse(){
Result result = null;if("男".equals(policy.getSex())){if(policy.getAge()<18){if(policy.getUserSingle()){
result = Result.buildResult("A","紅色A");}else{
result = Result.buildResult("B","紅色B");}}elseif(policy.getAge()>=18&& policy.getAge()<=30){if(policy.getUserMarry()){
result = Result.buildResult("C","紅色C");}else{
result = Result.buildResult("D","紅色D");}}elseif(policy.getAge()>30){if(policy.getUserParenting()){
result = Result.buildResult("E","紅色E");}else{
result = Result.buildResult("F","紅色F");}}}elseif("女".equals(policy.getSex())){if(policy.getAge()<18){if(policy.getUserSingle()){
result = Result.buildResult("A","黃色A");}else{
result = Result.buildResult("B","黃色B");}}elseif(policy.getAge()>=18&& policy.getAge()<=30){if(policy.getUserMarry()){
result = Result.buildResult("C","黃色C");}else{
result = Result.buildResult("D","黃色D");}}elseif(policy.getAge()>30){if(policy.getUserParenting()){
result = Result.buildResult("E","黃色E");}else{
result = Result.buildResult("F","黃色F");}}}
System.out.println("決策結(jié)果(IfElse):"+ result);}
package rules;
import org.itstack.demo.model.Policy
import org.itstack.demo.Result;
global org.itstack.demo.Result res;
rule "紅A"
when
Policy(sex == "男", age < 18, userSingle)
then
res.setResult("A","紅色A");
end
rule "紅B"
when
Policy(sex == "男", age < 18, !userSingle)
then
res.setResult("B","紅色B");
end
rule "紅C"
when
Policy(sex == "男", age >= 18, age <= 30, userMarry)
then
res.setResult("C","紅色C");
end
rule "紅D"
when
Policy(sex == "男", age >= 18, age <= 30, !userMarry)
then
res.setResult("D","紅色D");
end
rule "紅E"
when
Policy(sex == "男", age > 30, userParenting)
then
res.setResult("E","紅色E");
end
rule "紅F"
when
Policy(sex == "男", age > 30, !userParenting)
then
res.setResult("F","紅色F");
end
rule "黃A"
when
Policy(sex == "女", age < 18, userSingle)
then
res.setResult("A","黃色A");
end
rule "黃B"
when
Policy(sex == "女", age < 18, !userSingle)
then
res.setResult("B","黃色B");
end
rule "黃C"
when
Policy(sex == "女", age >= 18, age <= 30, userMarry)
then
res.setResult("C","黃色C");
end
rule "黃D"
when
Policy(sex == "女", age >= 18, age <= 30, !userMarry)
then
res.setResult("D","黃色D");
end
rule "黃E"
when
Policy(sex == "女", age > 30, userParenting)
then
res.setResult("E","黃色E");
end
rule "黃F"
when
Policy(sex == "女", age > 30, !userParenting)
then
res.setResult("F","黃色F");
end
rule 規(guī)則名稱、when then end 一套組合拳,什么條件下輸出什么結(jié)果
sex == "女", age > 30, !userParenting,英文逗號隔開的是and的條件,相當你的且。當不完全是,因為在后續(xù)處理中,逗號的處理邏輯在drools是有優(yōu)化的。