1

我正在开发一个 BizTalk 应用程序。

我已经设置了我的词汇表并开始在规则编写器中编写规则。

在评估一条规则后,我创建了一个名为 AddValidationError 的函数,它将验证错误写入正在验证的 XML 文档中。AddValidationError 方法是从规则的 Action 部分调用的。

我想将正在评估的节点传递给 AddValidationError 方法,以便我可以确定该节点的 XPath 并将其作为错误消息的一部分包含在内。

我以为我可以有一个 TTypedXmlDocument 类型的参数,但这不允许我传递定义为 TTypedXmlDocument 以外的任何内容的节点,例如字符串、int、日期时间等。我注意到规则引擎有一个名为的方法存在它将接受任何类型的节点并将其解析为 XPath,这正是我想要的。

我不想将 XPath 文本复制到 AddValidationError 方法中,因为这看起来很乱,而且任何 BA 都应该能够通过简单地在屏幕上拖放节点和方法来创建新规则,即他们不应该知道您需要将节点的 XPath 复制到 AddValidationError 方法中以使其工作。

我希望这是有道理的。

所以回到 Exists 谓词方法,我可以将任何节点传递给它,它似乎可以自动计算出 XPath,我怎样才能获得这个功能?或者更好的是,如何将 TTypedXmlDocument 以外的类型的节点传递给方法,然后确定传入节点的 XPath?

我考虑过为每个节点定义两个定义,一个代表值、字符串、int、日期时间等,另一个代表同一个节点但属于 TTypedXmlDocument。虽然这确实有效,但它也闻起来有点所以想要更好的东西。

4

1 回答 1

2

您具体要求的内容是不可能的。Compose 不会将实际的 xPath 视为工件,而只会将其解析为。

虽然您可能会在 Exists Predicate 中看到 xPath,但这实际上并不是正在评估的内容。与任何其他参数一样,正在检查 xPath 的结果是否为空。

如果我不得不做这样的事情,我可能会创建一个词汇项,其中包含规则中正在测试的节点/字段的“路径”(但不一定是有效的 xPath)。

于 2014-07-04T11:55:27.447 回答