步骤 7 (本地):创建业务流程

根据业务方案,BizTalk Server 从服务总线队列收到销售订单消息后,需要检查消息中订购的数量是否大于 100。 如果数量大于 100,则消息将插入 SalesOrder 表中。 否则,该消息将发送到共享文件位置。 Northwind 通过创建编排来实现此业务逻辑。 本主题提供有关如何创建编排的分步指南。

将编排添加到 BizTalk Server 项目中

  1. 在已创建的 BizTalk Server 中,右键单击项目,指向 “添加”,然后单击“ 新建项”。

  2. 新建项对话框中,选择BizTalk 编排,输入映射名称OrderProcessing.odx,然后单击添加

为业务流程创建消息

前面生成的架构描述了业务流程中消息所需的“类型”。 消息通常是一个变量,即由相应架构定义的类型。 现在必须为业务流程创建消息,并将其链接到之前生成的架构。 需要创建以下三条消息:

消息名称 对应于模式
Message1_SO_Inbound 此消息是 ECommerceSalesOrder.xsd 架构的实例。
Message2_SO_Inbound 此消息是 Message1_SO_Inbound的副本。 最佳做法是,必须创建邮件的副本,然后修改新邮件,使原始邮件保持不变。 有关详细信息,请参阅 BizTalk Server 消息
消息1_SO_发出 此消息是 TableOperations.dbo.SalesOrder (Insert) 架构的实例。

创建消息

  1. 打开 BizTalk 项目的 “业务流程视图” 窗口(如果尚未打开)。 为此,请单击“ 视图”,指向 “其他窗口”,然后单击“ 业务流程视图”。

  2. 在业务流程视图中,右键单击 “消息”,然后单击“ 新建消息”。

  3. 右键单击新创建的消息,然后选择“ 属性窗口”。

  4. Message_1“属性”窗格中,执行以下作:

    属性名称 执行操作
    标识符 输入 Message1_SO_Inbound
    消息类型 在下拉列表中,展开 架构,然后选择 OrderProcessingDemo.ECommerceSalesOrder,其中 OrderProcessingDemo 是 BizTalk 项目的名称。 ECommerceSalesOrder 是从服务总线队列收到的销售订单消息的架构。
  5. 重复这些步骤以创建包含以下详细信息的消息:

    消息名 执行操作
    Message2_SO_Inbound - 将 标识符 设置为 Message2_SO_Inbound
    - 将 消息类型 设置为 OrderProcessingDemo.ECommerceSalesOrder
    Message1_SO_Outbound - 将 标识符 设置为 Message1_SO_Outound
    - 将 消息类型 设置为 OrderProcessingDemo.TableOperation_dbo_SalesOrder.Insert

向编排添加形状

业务流程形状定义 BizTalk Server 应用程序的流。 在本部分中,将所需的形状添加到编排中。

向编排添加形状

  1. 若要从头开始,必须添加 接收 形状。 此形状从服务总线队列接收传入的销售订单消息。 在接收形状上设置以下属性。

    1. “激活 ”设置为 True

    2. 消息 设置为 Message1_SO_Inbound

    3. Name 设置为 ReceiveOrder

  2. 如前所述,您必须创建收到流程编排中的原始销售订单消息的副本。

    1. 拖放“构造消息”形状到ReceiveOrder形状下方。 使用此形状构造类型为 Message2_SO_Inbound 的消息时,请将 Messages Constructed 属性设置为 Message2_SO_Inbound

    2. “构造消息”形状中添加消息分配形状。 双击形状以打开表达式编辑器,并添加以下内容:

      Message2_SO_Inbound = Message1_SO_Inbound; //copy the message  
      Message2_SO_Inbound(*) = Message1_SO_Inbound(*); //copy the context properties on the message  
      

      单击 “确定”

  3. 根据业务方案,消息必须根据已排序项的数量发送到不同的目标。 因此,现在必须从传入的销售订单消息中提取数量值。

    1. 入站消息中的 Quantity 元素(ECommerceSalesOrder.xsd)包含有序数量的值。 必须公开该属性,以便可以在编排中的表达式中使用该元素。 若要提升属性值,请打开 ECommerceSalesOrder.xsd 架构,右键单击 Quantity,指向“ 提升”,然后单击“ 快速提升”。

    2. 创建一个变量来存储数量值。 若要创建变量,请在 业务流程视图中右键单击 “变量”,然后单击“ 新建变量”。 设置变量的以下属性:

      属性名称 价值
      标识符 输入 quantityOrdered
      类型 选择 Int32
    3. 现在,必须将 Quantity 元素中的值分配给 quantityOrdered 变量。 将表达式编辑器拖放到构造消息形状之后。 打开编辑器并输入以下表达式:

      quantityOrdered = Message2_SO_Inbound.Quantity;  
      

      单击 “确定”

  4. 提取订单数量后,现在需要创建一个决策块,在该块中布局消息流采用的两个单独的路径。 在编排中通过添加“决定”形状创建决策块。

    1. 表达式编辑器形状之后拖放Decide形状。

    2. 选择 Rule_1 形状,然后在 “属性” 窗口中指定以下内容:

      属性名称 价值
      标识符 输入 Yes注意: 另一个路由默认命名 为 Else
      表达式 输入 quantityOrdered > 100

      您现在有两个可用的路径。 如果 quantityOrdered 变量中的值大于 100,则消息采用 “是 ”路由。 否则,它将采用 Else 路由。 现在必须定义在每个路由中要执行的操作。

  5. 根据业务方案,如果订单数量大于 100,则必须将消息插入 SalesOrder 表中。 因此,在 “是 ”路由中,必须将 ECommerceSalesOrder.xsd 架构转换为 TableOperations.SalesOrder.Insert 架构。 在主题 步骤 5(本地)中创建插入架构:生成用于在ito SalesOrder 表中插入消息的架构。 转换架构后,必须将消息发送到 SQL Server 数据库表。

    1. “是” 路径中,拖放 构造消息 形状。 将形状的 消息构造 属性设置为 Message1_SO_Outbound

    2. “构造消息” 模块中添加 转换 模块。 双击形状以打开 “转换配置 ”对话框。 请执行以下操作:

      1. 选择 “现有映射 ”选项。

      2. “完全限定的映射名称” 下拉列表中,选择 OrderProcessingDemo.SalesOrder_SQL

      3. 选择 Message2_SO_Inbound

      4. 对于 “目标”,请选择 Message1_SO_Outound

    3. 构造 消息 形状后,拖放 “发送” 形状,并将形状 的消息属性设置为Message1_SO_Outbound

  6. 根据业务方案,如果订单数量小于 100,则必须将消息发送到共享文件位置。 因此,在 Else 路由中,必须添加发送形状。

    1. Else 路由中,拖放 “发送” 形状,并将 形状的消息属性 设置为 Message2_SO_Inbound

      注释

      将消息设置为Message2_SO_Inbound,因为从服务总线队列接收的相同消息将发送到文件位置,而无需进行任何处理。 Message2_SO_Inbound表示服务总线队列接收的消息。

将端口添加到业务流程

端口表示消息在编排中的输入和输出介质。 消息由使用接收端口的业务流程使用,并使用发送端口发送。 在业务场景中,消息通过一个媒介(服务总线队列)接收,然后根据消息处理结果发送到两个不同的位置(SQL Server数据库或文件共享位置)。 因此,必须创建一个接收端口和两个发送端口作为业务流程的一部分。

添加端口

  1. 端口形状拖放到业务流程设计器“端口图面”窗格,以启动端口配置向导。 在“欢迎”页面上,单击“下一步”。

  2. 端口属性页中,将端口命名为ReceiveSO,然后点击下一步

  3. 在“ 选择端口类型 ”页中,选择 “创建新端口类型 ”选项,选择 单向 通信模式,保留访问限制的默认值,然后单击“ 下一步”。

  4. “端口绑定 ”页中,对于端口方向,选择 “我始终在此端口上接收消息”,将端口出价保留为默认值,然后单击“ 下一步”。

  5. 在最后一页上,单击“ 完成”。

  6. 重复这些步骤以创建两个发送端口。 创建端口时指定以下值。

    端口名称 性能
    SendToSQL - 将 名称 设置为 SendToSQL
    - 选择 “创建新端口类型”
    - 将通信模式设置为 单向
    - 将端口方向设置为 我始终在此端口上发送消息
    SendToFile - 将 名称 设置为 SendToFile
    - 选择 “创建新端口类型”
    - 将通信模式设置为 单向
    - 将端口方向设置为 我始终在此端口上发送消息

连接端口和消息形状

现在必须连接端口和信息结构才能完成编排。 当 ReceiveOrder 形状收到消息时,业务编排将启动;当消息被两个发送形状发送出时,业务编排将结束。 您必须使用此标准来连接端口和消息形状

通过消息形状连接端口

  1. ReceiveSO 接收端口连接到 ReceiveOrder 形状。

  2. “是 ”路由下的“发送”形状连接到 SendToSQL 发送端口。 这表示如果消息输入此路由(quantityOrdered> 100),则会将其发送到 SQL Server 数据库中的 SalesOrder 表。

  3. Else 路由下的发送形状连接到 SendToFile 发送端口。 这表示如果消息进入此路由(quantityOrdered<= 100),则会将其发送到指定的文件位置。

    编排必须类似如下所示:

    编排

另请参阅

教程 4:使用 BizTalk Server 2013 创建混合应用程序