在 BizTalk 中,send/receive 操作是同步的,可以通过以下方法实现等待存储过程完成:
在 BizTalk Orchestration 中使用 Call Orchestration 活动来调用存储过程,确保该活动在整个流程中有序执行;
在调用存储过程前,添加一个消息路由器活动并设置它为“串行”模式,以确保每次只有一个存储过程在处理;
在存储过程执行完成后,使用 BizTalk 的 SOAP Adapter 或 WCF Adapter 发送响应消息。
以下是示例代码:
call MyStoredProcedure;
delay(PT1S); //等待 1 秒钟
//执行其他操作
Shape MyMessageRouter = new MyRoutingShape();
MyMessageRouter.Filter = MyFilter;
MyMessageRouter.ConstructMessage += new System.EventHandler(this.CopyMessage);
servicelink.SendRequest(MyRequestMsg);
Message MyResponseMsg = MyMessageRouter.GetNextOutgoingMessage();
servicelink.SendMessage(MyResponseMsg);