一个“平等”表达就足够了。您的RHS事实应该是另一个词汇项目。在XML类型的情况下,正确的路径将逐个拉出所有值并导致多个评估,并且如果匹配则分别触发动作。要记住的关键:BRE是模式匹配引擎。
词汇表只是事实定义的一个方便的别名。假设您使用以下结构创建XML文件:
<options> <value>A</value> <value>B</value> <value>C</value> </options>
为这个事实定义一个词汇表 名称:PossibleValues XPath选择器:/ options / value XPath字段:。
然后将规则定义为IF currentValue == PossibleValues将导致三个条件评估,因为RHS将三个事实产生到工作存储器中。因此,只有那些真实的才会触发规则(行动)。将此与BRE从XML模式中选择一个节点时创建的默认定义进行比较,该模式仅断言一个(第一个)事实:
XPath选择器:/ options / XPath字段:值
(为简洁省略了名称空间)
在运行时将此XML文档作为BRE的参数传递(无论是在业务流程中还是在.Net组件中,具体取决于BRE调用上下文)。在测试的设计时,您必须实现Fact Creator组件(实现IFactCreator)以提供所需参数的实例。
使用自定义事实检索器可以更好地管理长期事实(如问题中的那些事实)。事实检索器是一个实现IFactRetriever的.Net组件。见 文件 详情。内部事实检索器实现加载XML(从磁盘)并将其作为TypedXmlDocument断言到工作内存中。