如何将任何元素从包络模式发布到MessageBox

时间:2011-10-21 06:02:52

标签: biztalk biztalk-2010

我有一个信封消息(EM),在这个EM中有一些元素在上下文中被提升(用于路由),并且有一个Any元素(称为Payload)保存实际的模式实例以供进一步使用(其他编排是订阅该Payload实例。)

这是接收请求消息的通用服务(WCF,请求 - 响应),返回响应消息(具有请求的一些元素和新生成的唯一事务ID)和故障消息(如果适用)。 / p>

Payload必须在MessageBox(直接绑定)上与EM的某些上下文属性一起发布。

如何最有效地完成这项工作?

2 个答案:

答案 0 :(得分:0)

您是否了解如何使用接收管道中的xml反汇编程序组件处理信封架构?从您的问题中不清楚您是否尝试过这种情况,或者这是否是您所面临的挑战。

如果没有,请在此处阅读:http://msdn.microsoft.com/en-us/library/aa546772(v=BTS.20).aspx

答案 1 :(得分:0)

我可以确认吗

  1. WCF客户端发送与信封架构匹配的消息
  2. 您希望将信封架构转发为Payload处理编排中包含的一个或多个Payload消息。
  3. ?您是否需要等到所有Payload消息都被处理,直到您使用成功/失败响应响应WCF客户端(即响应取决于Payload消息的完成)。
  4. 如果您不需要第3点),那么您的WCF业务流程只需将“是”消息发送回WCF客户端,而无需担心您的负载会发生什么。

    WCF接收位置上的标准XMLReceive应该能够自动解除消息,只要它将其识别为信封模式,即包含

    <b:schemaInfo is_envelope="yes" xmlns:b="somexmlns"/>
    <b:recordInfo body_xpath="xpathtoroot"/>
    

    但是,如果确实需要第3点问题,我可以看到,因为您正在使用WCF请求 - 响应,客户端是否需要根据Payload处理返回同步响应。使用标准信封debatching很难做到这一点,因为您需要将有效负载处理的进度和结果关联回WCF orch - 相反,您可能只是将外部(Envelope)架构保持为非信封,并且在WCF orch中使用自定义接收管道来拆分消息,然后遍历每个消息并调用有效负载处理Orchestration。

    http://mstecharchitect.blogspot.com/2008/12/debatching-biztalk-xml-messages.html