使用 BizTalk 业务流程创建自定义路线服务

作为 Microsoft BizTalk ESB 工具包的一部分的路线框架支持使用业务流程执行路线步骤。 可以根据功能要求将自定义行程服务实现为 Microsoft BizTalk Server业务流程,其中可能包括:

  • (多个服务调用,如 安装和运行 Scatter-Gather 示例)

  • 协议中介和消息关联 (例如 HTTP-MQSeries)

  • 基于来自外部数据源的消息扩充的复杂路由决策

  • 业务处理逻辑

    使用BizTalk Server业务流程实现的每个行程服务都负责以下事项:

  • 使用 ESB 异常处理框架或支持重新提交的可选自定义异常处理程序 (单向行程)

  • 通过BizTalk Server推进行程并发布出站消息,以便执行下一个行程服务步骤

使用BizTalk Server业务流程创建自定义行程服务

  1. 创建新的包含新业务流程BizTalk Server项目;例如 MyCustomeItineraryService.odx。

  2. 添加对下列程序集的引用:

    • Microsoft.Practices.ESB.Itinerary

    • Microsoft.Practices.ESB.Itinerary.Schemas

    • Microsoft.Practices.ESB.ExceptionHandling

    • Microsoft.Practices.ESB.ExceptionHandling.Faults

  3. 在业务流程中定义逻辑直接绑定接收端口和激活的接收形状。

  4. 定义订阅筛选器以从消息路线上下文激活业务流程,以便业务流程执行 MyCustomItineraryService 步骤。 以下代码显示了合适的筛选器的示例。

    (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceName   
        == "MyCustomItineraryService")   
    && (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceState == "Pending")  
    && (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceType   
        == "Orchestration")  
    
  5. 定义 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);  
    
    
  6. 将自定义实现添加到为后续行程步骤创建出站消息的行程;例如,OutboundMsg。

  7. 使用以下表达式活动推进行程,该活动使用入站消息中的消息上下文。

    OutboundMessage(*) = InboundMessage(*);   
    itinerary.Itinerary.Advance(OutboundMessage, itineraryStep.ItineraryStep);  
    
  8. 通过直接绑定发送端口发送包含更新行程的出站消息,以激活下一个行程服务。

    有关使用BizTalk Server业务流程实现自定义路线服务的详细信息,请参阅安装和运行路线斜坡示例安装和运行 Scatter-Gather 示例