【问题标题】:BizTalk custom pipeline component - Read a JSON node value and promote propertiesBizTalk 自定义管道组件 - 读取 JSON 节点值并提升属性
【发布时间】:2020-04-10 02:09:54
【问题描述】:

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

消息中的 Json 节点

"Dept": "support, Development,Test"

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

【问题讨论】:

  • 嗨纳瓦尼特。以下任何答案对您有帮助吗?您是否设法解决了问题?

标签: c# biztalk biztalk-2016


【解决方案1】:

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

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

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

【讨论】:

  • 问题不在于 JSON 解码,而是基于逗号分隔值提升属性
  • 对不起,错过了那部分。在这种情况下,方法 1 可以正常工作。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    "c:\Program Files (x86)\Microsoft BizTalk Server 2013 R2\SDK\Samples\Pipelines\ArbitraryXPathPropertyHandler" 
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-15
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多