BizTalk 拆分存储过程结果

问题描述 投票:0回答:2

当我从 BizTalk 调用存储过程时,结果会分布在多个节点上。存储过程返回因拆分而被破坏的 XML。

多个来源表明正确的配置将自动组装结果,但我无法使其工作。

结果示例:

<bsp_FA_StatementOutputResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo">
  <StoredProcedureResultSet0>
    <StoredProcedureResultSet0 xmlns="http://schemas.microsoft.com/Sql/2008/05/ProceduresResultSets/dbo/bsp_FA_StatementOutput">
      <XML_F52E2B61-18A1-11d1-B105-00805F49916B>&lt;Root...</XML_F52E2B61-18A1-11d1-B105-00805F49916B>
      </StoredProcedureResultSet0>
    <StoredProcedureResultSet0 xmlns="http://schemas.microsoft.com/Sql/2008/05/ProceduresResultSets/dbo/bsp_FA_StatementOutput">
      <XML_F52E2B61-18A1-11d1-B105-00805F49916B>...</XML_F52E2B61-18A1-11d1-B105-00805F49916B>
    </StoredProcedureResultSet0>
    <StoredProcedureResultSet0 xmlns="http://schemas.microsoft.com/Sql/2008/05/ProceduresResultSets/dbo/bsp_FA_StatementOutput">
      <XML_F52E2B61-18A1-11d1-B105-00805F49916B>sactionDate&gt;2020-10-6&lt;/...;&lt;/Root&gt;</XML_F52E2B61-18A1-11d1-B105-00805F49916B>
    </StoredProcedureResultSet0>
  </StoredProcedureResultSet0>
  <ReturnValue>0</ReturnValue>
</bsp_FA_StatementOutputResponse>

手动执行时存储过程可以正常工作。

  • 我使用“添加生成的项目”向导创建了发送端口。
  • 我从向导中选择了“强类型”。
  • 我使用了向导提供的绑定。

如有任何帮助,我们将不胜感激。

wcf biztalk biztalk-2013
2个回答
0
投票

如果您遇到此问题,我已在here记录了我提出的解决方案。我使用手动 XSLT 映射来重新组装碎片结果。


0
投票

对于未来的读者,您可以让管道中的反汇编器阶段为您完成此操作。在 EnvelopeSpecNames 中指定顶部节点架构,在 DocumentSpecNames 中指定结果集架构。

如果您的模式有多个根节点,就像生成时经常遇到的那样,则需要在名称后面添加根节点名称,并带有+号,例如:[名称]+[根名称],[程序集]。

最简单的方法是转到您的应用程序,然后单击模式。按根名称排序以找到您想要的(您可能会找到几个 StoredProcedureResultSet0)并打开属性。然后复制名称并粘贴到描述中,添加 +,复制根名称并最后粘贴到描述中,添加 ,最后复制程序集并粘贴。复制结果并粘贴到信封或文档规范名称中。

示例:

INT001.Schemas.Invoice+MyInvoice, INT001.Schemas, Version=1.0.0.0, PublicKeyToken=ffsd7sf7

© www.soinside.com 2019 - 2024. All rights reserved.