Biztalk:如何通过WCF-Custom端口将msgbody中的文件名传递给存储过程

时间:2013-10-31 20:08:48

标签: biztalk biztalk-2010

我有带有FILE传入端口和WCFCustom发送端口的BizTalk应用程序。

WCFCustom发送端口正在调用存储过程并通过指定模板属性将消息体作为xml参数传递给此存储过程,如下面的屏幕截图所示。

消息正文由 bts-msg-body 标记指定。

问题:

1.有没有办法将文件名作为附加参数传递给存储过程?

2.是否可以将多个参数发送到存储过程?

enter image description here

2 个答案:

答案 0 :(得分:2)

2的答案是,可以将多个参数发送到存储过程。 是的,它是

<ns0:StoredProc xmlns:ns0="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo">
<ns0:document>
<bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="base64"/>
</ns0:document>
<ns0:documentname>
Test
</ns0:documentname>
</ns0:StoredProc>

如何从消息上下文属性填充文档名,这是我无法弄清楚的。也许其他人可以提出一个建议。

答案 1 :(得分:1)

  1. 是的,有推广财产。
  2. 是的,根据Dijkgraaf的回答。
  3. 我这样做的方式是:

    • 使用“消费适配器服务”BizTalk项目外接程序为您的存储过程生成一个架构,该架构可以包含多个参数的元素(示例here),或者如果您愿意,可以手动创建一个架构。
    • 编辑架构以指定包含文件名的元素,并将其提升为“http://schemas.microsoft.com/BizTalk/2003/file-properties#ReceivedFileName”。这将导致XML Assembler将此值从消息上下文复制到字段中。
    • 创建一个映射,将传入的消息作为CDATA复制到消息正文元素中。在您的发送端口添加此地图。
    • 使用XMLTransmit管道填充消息上下文中的文件名字段

    如果您的文件不是XML,则可能需要自定义管道组件而不是标准映射(我将使用SDK中的FixMsg示例)。