关于Execute Receive Pipeline的问题

因为要做一个拆分循环的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 和信封执行没多大区别.

xpathResolve executePipeline

图1              图2

图1:XPath循环消息构建

图2:Execute Receive Pipeline

你可能感兴趣的:(pipeline)