因为要做一个拆分循环的Demo,很自然的想到了使用Envelop,但是有些信封头上的信息想要追加到每条消息里,好像比较麻烦,没办法,使用最笨的方法xpath解析循环body,循环构建单条消息,这样倒是可以随心所欲追加任何信息,但是总感觉用xpath解析效率不高,如图1.

想到BizTalk 2006提供了Use Expression Execute Pipeline in Orchestration的供能.照着例子做了一遍,有一个问题总是过不去,总是说我消息不匹配,没有订阅者,死活没有进流程.后来仔细看了文档,说是要求把Receive Document设为XmlDocument类型,照着改了(好在我使用了Multi-Part Message,改起来很方便),居然进流程了,但是还是报错,还是说消息类型不匹配.忘记看了哪篇文章说不要在ReceivePipeline里指定 Envelop Schema和Document Schema,照做了,居然通过了,这就郁闷了.

不死心,加了检查代码:

System.Diagnostics.Trace.WriteLine(DischargeMessage(BTS.MessageType));

居然结果不是Envelop的消息类型,而是拆分完的消息类型,这就纳闷了,把原来接收的消息从XmlDocument改成Body消息,没有问题,这个我就糊涂了,难到说进来之前已经拆分掉了?如图2,我本来以为可以接收整个消息,取出消息头,拆分消息体,然后重新构建消息体,追加消息头上的关键信息,比如说主键之类的,但是现在 Execute Receive Pipeline 和信封执行没多大区别.

关于Execute Receive Pipeline的问题 关于Execute Receive Pipeline的问题

图1              图2

图1:XPath循环消息构建

图2:Execute Receive Pipeline

相关文章:

  • 2021-06-17
  • 2021-07-07
  • 2021-10-16
  • 2021-08-05
  • 2021-07-24
  • 2021-04-03
  • 2021-04-26
  • 2021-04-16
猜你喜欢
  • 2022-12-23
  • 2021-06-20
  • 2022-12-23
  • 2021-12-24
  • 2021-07-14
  • 2022-01-09
  • 2022-12-23
相关资源
相似解决方案