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