我将使用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”的规则中,获取每个项目并将其设置为一个变量,例如"employer“,那么对于"itemToValidate”中的每个项目(元素),对于与“employer”相关的所有规则,都将具有一个文件包,例如“employer”。
我面临的问题是,我需要在实际验证之前检查所有规则的空性。
有没有办法避免这种情况?或者我的实现有什么问题吗?
谢谢
发布于 2013-04-17 17:41:01
我不确定是否能理解你的问题。“在实际验证之前检查所有规则的空性”。
为什么不在工作内存中设置对象,让JRules处理内存,并使用局部规则变量而不是全局变量?
将"my employer“设置为雇主
如果“我的雇主”的名字是鲍勃
然后打印"hello“
我会创建一个函数,首先在工作内存中推送"ItemsToValidate“,然后像我一样编写规则。通过这样做,如果没有雇主需要验证,则规则永远不会触发,因为内存中没有雇主类型的项。
发布于 2016-05-12 01:49:24
可以实现您感兴趣的类的BOM到XOM映射的Tester部分,以检查您关心的字段是否存在。
例如,测试器可以写成:
返回this.employer != null
这意味着雇主为空的itemToValidate将不会在您编写的规则中进行评估。这将消除null检查(针对雇主)。
查看"class mapping tester using IRL“主题下的知识中心
发布于 2016-04-30 03:31:18
简单地说,在我们的项目中,我们对这种方法做了一个简单的描述,使用:
the value {VALUE} is defined (返回布尔值)
希望这能有所帮助。
https://stackoverflow.com/questions/15590958
复制相似问题