所有
使用Drools Workbench 6.2.0.Final以声明方式创建引导规则...
我的情况是这样的:
拥有具有以下属性的贷款数据对象:
自动生成的drl文件是:
rule "Arizona"
when
loan : Loan( state == "Arizona", amount >= 1000 , amount <= 3000,
interestRate >= 0.15, interestRate <= 0.50 )
then
loan.setRequirement( true );
end
问题(S):
(1)当规则失败时,如何以声明方式使用引导规则编辑器设置以下内容:
loan.setMessage( "Allowed values for amount should be in the range of 1000 to 3000");
或
loan.setMessage( "Allowed values for interest rate values should be in the range of 15% to 50%" );
(2)有没有办法以声明方式自定义SOAP响应:
e.g。
<requirement>true</true>
或
<requirement>false</requirement>
<message>Allowed values for amount should be in the range of 1000 to 3000</message>
或
<requirement>false</requirement>
<message>Allowed values for interest rate values should be in the range of 15% to 50%</message>
不想以编程方式执行此操作...
感谢所有......
答案 0 :(得分:0)
这个问题的制定方式存在根本的误解,因为没有“当这条规则失败时”这样的状态。当一个规则匹配一组匹配的事实时,规则就会触发,这可能会对工作记忆中的当前事实集合发生任意次数。
当然,有一个规则不会触发的情况 - 但即使是像“亚利桑那州”这样的简单规则,也有不止一个原因导致规则失败。
程序无法知道您对#3感兴趣(更不用说详细分析,即它只是一个或两个值)。但是一个程序可以让人知道:只是实现检测失败原因的所有规则,你感兴趣的那些,可以做到(我认为)与#3的一些规则
您的Loan设计似乎只预示了一条消息,但这可以修复。
进一步阅读:white paper on rule design patterns, section "Handling Failure to Match"这个答案太长了。