我想弄清楚为什么Drools继续说这个指导决策表的规则是冲突的。我还在Excel工作表中创建了这个表并导入到Drools中,它给了我相同的规则集没有冲突。
冲突的规则:(每条规则中唯一不同的是包括AwardCost在内的起点和终点距离范围。
rule "Row 1 DistanceAwardTable"
dialect "mvel"
when
$distanceAwardRequest: DistanceAwardRequest(startDistanceRange >= 0,
endDistanceRange <= 1000 )
then
AwardResult $awardResult = new AwardResult();
$awardResult.setAirlineId( 1 );
$awardResult.setAwardCost( 15000 );
insert( $awardResult );
end
同样的规则并没有给我一个冲突错误:
rule "Row 1"
dialect "mvel"
when
DistanceAwardRequest(startDistanceRange >= 0,
endDistanceRange <= 1000)
then
AwardResult $awardResult = new AwardResult();
$awardResult.setAwardCost(15000);
$awardResult.setAirlineId(1);
insert( $awardResult );
end
这里唯一不同的两件事是,在一组规则中,DistanceAwardRequest绑定到$ distanceAwardRequest,而在另一规则中,这不是。
我还创建了一个测试,以查看是否有多个规则触发,但事实并非如此。
我在这里缺少什么?
*** UPDATE
决策表示例:
航空公司ID:1 起始距离= 0 结束距离= 1000 费用:50000 分类:1
航空公司ID:1 起始距离:1001 结束距离= 2000 费用:60000 分类:1
航空公司ID:1 起始距离:2001年 结束距离:3000 费用:70000 1级