@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("决策结果(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 规则名称、when then end 一套组合拳,什么条件下输出什么结果
sex == "女", age > 30, !userParenting,英文逗号隔开的是and的条件,相当你的且。当不完全是,因为在后续处理中,逗号的处理逻辑在drools是有优化的。