BizTalk业务规则检查节点的存在和值

时间:2014-03-20 09:52:06

标签: biztalk business-rules biztalk-rule-engine

我有以下问题。我想执行一个检查节点存在的策略,然后检查该值是否大于0.

所以我们说我们有" xmlDoc"我想检查一下节点" test"存在,如果"测试"的价值大于0。

<xmlDoc>
    <test>5</test>
</xmlDoc>

当节点存在时,没有问题。但是当节点丢失时,所有地狱都会丢失。 很明显他崩溃的原因。他无法找到节点&#34; test&#34;所以他无法检查它的价值。

我的问题:在BizTalk BRE中是否可以检查节点的存在性和值,而不会崩溃?

2 个答案:

答案 0 :(得分:1)

存在&#39;存在&#39;然而,在条件列表中出现谓词,这并不总是有效,因为价值事实也会被评估。

我发现解决此问题的一种方法是创建一个词汇表项目并调整选择器以指向可能不存在的元素,&#34; text&#34;在你的情况下。

然后XPath字段将是/ text()节点。

这样,如果Selector路径返回null,则BRE知道事实不存在,因此不会评估需要它的规则。

答案 1 :(得分:1)

如果不存在,则检查与值检查一起执行,BRE无法按预期工作。

解决方案:

如果节点不存在,下面的函数将返回节点值和空字符串。 使用此函数的返回值执行值检查。

声明:XML文档。 路径:XML路径。

    public static string GetXMLPathValue(TypedXmlDocument claim, string path)
    {
        string nodeContent = string.Empty;

        if (claim.Document.SelectSingleNode(path) != null)
            return claim.Document.SelectSingleNode(path).InnerXml;
        return nodeContent;
    }