我在ilog工作,我有一个决策表,其中说我有5条规则。我有一些输入字段作为条件说明名称和年龄(虚拟数据),并有一些与之相关的行动部分。当我将带有一些条件值的输入传递为null时,调用异常处理程序,其中我处理了异常并返回false。但问题是如果在第一行发生异常然后它应该抛出异常并且程序应该直接到达最终操作,但在我的情况下,所有5个规则都被执行,我得到5个异常值,等于表中的行数。
public boolean handleexception(IRLruntimeexception ex)
{
errorcode=ex.getmessage();
return false;
}
我得到5次错误代码值,这是不正确的
答案 0 :(得分:0)
这可能是因为RetePlus algorithm在执行操作之前匹配所有条件
尝试将ruletask的算法更改为顺序。
答案 1 :(得分:0)
为每个规则调用异常处理程序,因为决策表中的每一行实际上都是一个独立的规则。将针对所提供的数据评估每个规则的条件。
您应该像处理任何其他语言的编程一样处理规则编程,并在将数据传递到规则之前验证数据/检查空值。因此,例如,规则流或初始操作中的第一个任务将检查任何空数据或无效数据。如果数据通过空检查,则调用规则流中的其他任务。
有关如何将输入数据的空值处理为规则的其他建议,请参阅文档Check for null values in rules。