Rules 替换口水规则的最佳方法
我有一个系统,其中“动态逻辑”被实现为Drools规则,使用规则引擎 对于每个客户端实现,使用特定实现的drl文件实现自定义定价和税务计算逻辑Rules 替换口水规则的最佳方法,rules,drools-flow,Rules,Drools Flow,我有一个系统,其中“动态逻辑”被实现为Drools规则,使用规则引擎 对于每个客户端实现,使用特定实现的drl文件实现自定义定价和税务计算逻辑 rule 'abc' when name = 'X' then price= '12' end 一个规则的条件取决于之前规则中设置的内容,因此基本上存在规则转换 这真的很痛苦,因为drools规则不是顺序编程,也不利于开发人员。由于对drools如何计算的错误解释,引入了很多bug 是否有更好的“java/groovy”替代方案可以轻松
rule 'abc'
when
name = 'X'
then
price= '12'
end
一个规则的条件取决于之前规则中设置的内容,因此基本上存在规则转换
这真的很痛苦,因为drools规则不是顺序编程,也不利于开发人员。由于对drools如何计算的错误解释,引入了很多bug
是否有更好的“java/groovy”替代方案可以轻松取代它?我认为答案将取决于最终的解决方案。如果您希望将业务规则从规则引擎中提取出来,并将其放入java/groovy中,这与希望将它们从一个规则引擎中提取到另一个规则引擎中是非常不同的 你的问题似乎倾向于前面的问题,所以我会解决这个问题。对这种方法要非常小心。以前实现这一点的人在使用Rete算法时似乎是正确的,因为听起来一个规则的触发可以执行其他规则,这是好的业务规则-它们不是顺序的,而是声明性的。请记住,命令式软件主要是为工程师编写的,它不会100%地映射回现实世界:) 如果你想把它移植到java/groovy中,你就是在移植到命令式语言中,这可能会让你陷入If/then/else的地狱。我建议如下: