使用 BizTalk 业务流程创建自定义路线服务
作为 Microsoft BizTalk ESB 工具包的一部分的路线框架支持使用业务流程执行路线步骤。 可以根据功能要求将自定义行程服务实现为 Microsoft BizTalk Server业务流程,其中可能包括:
(多个服务调用,如 安装和运行 Scatter-Gather 示例)
协议中介和消息关联 (例如 HTTP-MQSeries)
基于来自外部数据源的消息扩充的复杂路由决策
业务处理逻辑
使用BizTalk Server业务流程实现的每个行程服务都负责以下事项:
使用 ESB 异常处理框架或支持重新提交的可选自定义异常处理程序 (单向行程)
通过BizTalk Server推进行程并发布出站消息,以便执行下一个行程服务步骤
使用BizTalk Server业务流程创建自定义行程服务
创建新的包含新业务流程BizTalk Server项目;例如 MyCustomeItineraryService.odx。
添加对下列程序集的引用:
Microsoft.Practices.ESB.Itinerary
Microsoft.Practices.ESB.Itinerary.Schemas
Microsoft.Practices.ESB.ExceptionHandling
Microsoft.Practices.ESB.ExceptionHandling.Faults
在业务流程中定义逻辑直接绑定接收端口和激活的接收形状。
定义订阅筛选器以从消息路线上下文激活业务流程,以便业务流程执行 MyCustomItineraryService 步骤。 以下代码显示了合适的筛选器的示例。
(Microsoft.Practices.ESB.Itinerary.Schemas.ServiceName == "MyCustomItineraryService") && (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceState == "Pending") && (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceType == "Orchestration")
定义 Microsoft.Practices.ESB.Itinerary.ItineraryStep 类型的业务流程。 将表达式活动添加到填充此变量的业务流程,如以下代码所示。
// Retrieve the current itinerary step. itinerary = new Microsoft.Practices.ESB.Itinerary.SerializableItineraryWrapper(); step = new Microsoft.Practices.ESB.Itinerary.SerializableItineraryStepWrapper(); itinerary.Itinerary = Microsoft.Practices.ESB.Itinerary.ItineraryOMFactory.Create(InboundMessage); step.ItineraryStep = itinerary.Itinerary.GetItineraryStep(InboundMessage);
将自定义实现添加到为后续行程步骤创建出站消息的行程;例如,OutboundMsg。
使用以下表达式活动推进行程,该活动使用入站消息中的消息上下文。
OutboundMessage(*) = InboundMessage(*); itinerary.Itinerary.Advance(OutboundMessage, itineraryStep.ItineraryStep);
通过直接绑定发送端口发送包含更新行程的出站消息,以激活下一个行程服务。
有关使用BizTalk Server业务流程实现自定义路线服务的详细信息,请参阅安装和运行路线斜坡示例和安装和运行 Scatter-Gather 示例。