BizTalk 自定义管道组件 - 读取 JSON 节点值并提升属性



在我的 BizTalk 接收端口中,我从 Web 服务接收 JSON。我想读取自定义管道组件中的特定 JSON 节点值(逗号分隔值(,并在节点值具有预期值时提升消息的属性。 例如:

消息中的 JSON 节点

"Dept": "support, Development,Test"

所以我想Dept读取 JSON 节点,如果它有价值Development那么我需要提升消息的属性,比如说devDepttrue否则false。 我有一个想法如何使用业务流程来完成它。但我想在自定义管道组件中执行此操作。任何人都可以分享这个想法或帮助吗?

有几种方法可以做到这一点:

  1. 您可以使用 Newtonsoft JSON 库读取 JSON,然后提升属性。可以使用 Nuget 包将其添加到项目中。然后,您需要将包文件夹中的程序集部署到 GAC。
  2. 或者,还可以使用 BizTalk JSON 解码器管道组件将 JSON 转换为 XML,然后使用 XmlReceive 管道提升属性,而无需使用任何业务流程。

这两种方法都很好,具体取决于您使用 JSON 进行的其他处理。部署明智的方法 2 更好,因为您不必将 Newtonsoft Json 库部署到 GAC

正如Vikas所说,您首先需要使用JSON解码器。

为了根据逗号分隔的值列表中的内容实际提升属性,我将使用 BRE 管道框架,这允许您在管道中的策略中执行业务规则,而不必在业务流程中执行它。 您只需要一个规则来查看该元素,如果它包含 Development,则创建提升的属性。

请参阅 SDK 示例,了解如何实现自定义管道组件以提升给定名称下的 XPath 表达式的值:

"c:Program Files (x86)Microsoft BizTalk Server 2013 R2SDKSamplesPipelinesArbitraryXPathPropertyHandler" 

使用此组件,您可以计算任何表达式并将其提升为指定的属性名称,例如

//*[local-name()='Dept' and contains(text(), 'Development')]

最新更新