Closed Zsir2022 closed 1 year ago
感谢你的建议。
你说的这个条件组我理解应该和规则的含义是一致的,目前是三个维度:条件->规则->规则集。条件上配置的是最小的条件单元,规则是多个条件的组合,规则集是最终执行的对象,规则之间之所以添加规则逻辑关系,是因为考虑到可能有以下两种场景:
a == 1 || b == 2
) AND 规则2(c == 3 || d == 4
)let rmap = seq.map('myvalue', 'result_default');
if((a == 1 || b == 2) && (c == 3 || d == 4)){
seq.put(rmap, 'myvalue', 'result_1');
}
return rmap;
(a == 1 || b == 2)
XOR 规则2(c == 3 || d == 4
)let rmap = seq.map('myvalue', 'result_default');
if((a == 1 || b == 2)){
seq.put(rmap, 'myvalue', 'result_1');
}
elsif(c == 3 || d == 4){
seq.put(rmap, 'myvalue', 'result_2');
}
return rmap;
另外就是返回值覆盖的问题,第一种情况一个判断分支只有一种返回值,第二种情况因为有多个判断分支所以有多种返回值,为了同时满足这两种情况,返回值只能配置在规则上。并且在第一种情况中,因为两个规则都有返回值配置,所以以组合顺序最后一个为准。
1 在规则上增加逻辑运算关系,感觉不是最完美的方案,建议引入条件组的概念(conditionGroup) 条件装配为条件组,然后在规则中只对条件组通过逻辑运算关系装配为规则执行的决策条件,这样就不需要另外增加“XOR”,以及判断是否覆盖返回值的问题; 例:
个人拙见,相互学习交流