0

我将使用 ilog jrules 单独验证多个对象(一次一个)。

我目前的想法是将所有需要验证的项目包装在一个名为“itemToValidate”的输入参数中,如下所示

<xs:element name="itemToValidate">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="employer" type="tns:employer" minOccurs="0" />
            <xs:element name="department" type="tns:department" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

然后在名为“init”的包中名为“init”的规则中获取每个项目并设置为一个变量,例如“雇主”然后对于“itemToValidate”中的每个项目(元素)将有一个包,例如“雇主”与“雇主”相关的规则

我面临的问题是我需要在实际验证之前检查所有规则的空值。

有没有办法避免这种情况?或者我的实施有什么问题吗?

谢谢

4

3 回答 3

0

我不确定是否理解您的问题。“在实际验证之前检查所有规则的空性”。

为什么不将对象设置在工作内存中,让 JRules 处理内存并使用局部规则变量而不是全局变量?


如果“我的雇主”的名字是鲍勃,则将“我的雇主”设置为雇主,
然后打印“你好”

我将创建一个函数,首先将“ItemsToValidate”推送到工作内存中,然后像我一样编写规则。通过这样做,如果没有需要验证的 Employer,则规则永远不会触发,因为内存中没有 Employer 类型的项目。

于 2013-04-17T09:41:01.257 回答
0

可以实现您感兴趣的类的 BOM 到 XOM 映射的 Tester 部分来检查您关心的字段是否存在。

例如,测试仪可以写成:

返回 this.employer != null

这意味着雇主为 null 的 itemToValidate 不会在您编写的规则中进行评估。这将消除空检查(对于雇主)。

查看“使用IRL的类映射测试器”主题下的知识中心

于 2016-05-11T17:49:24.240 回答
-1

简单地说,在我们的项目中,我们为这种方法做了一个单一的语言化,使用:

the value {VALUE} is defined(返回一个布尔值)

希望这可以帮助。

于 2016-04-29T19:31:17.623 回答