BAM 端对端(BizTalk Server 示例)

端到端示例演示了如何使用 BAM 将来自多个组件的事件关联 (三个业务流程和一个管道) 。

BAM 重新构造了跨管道组件和业务流程的业务活动。 在最低级别,这通过从每个实现组件调用 EventStream.EnableContinuation 来工作,这些组件需要为活动提供更多事件。 对 EnableContinuation 的调用是显式的,而 Orchestration1 和 Orchestration2 中的调用是通过将一个 Continuation 文件夹添加到一个计划中的跟踪配置文件,将一个 ContinuationID 文件夹添加到其后的计划进行。

下图说明了本示例中使用的工作流。

显示如何关联来自多个组件的事件的图像。

本示例的用途

BAM 端对端示例显示如何使用 BAM 从管道和多个业务流程收集信息并更新单个活动。

本示例的设计方式和原因

BAM 端对端示例旨在阐释下列活动:

  • 在管道中使用 BAM。

  • 使用跟踪配置文件编辑器 (TPE) 将活动项映射到业务流程中的形状和消息的元素。

  • 当一个解决方案的多个部分都作用于活动时,使用继续符使活动保持活动状态。

本示例的工作原理如下所示:

  1. <Samples Path>\BamEndToEnd\Input 文件夹中检索输入消息。

  2. 管道组件向消息分配唯一的 DocumentID,然后使用 BAM API 开始一个新 BAM 活动。 将此 DocumentID 作为此输入消息的一个单独部分附加,以使其可用于业务流程。

  3. 在收到此输入消息时激活服务 Orchestration1。

  4. Orchestration1 修改此输入消息,然后将其作为参数传递给 Orchestration2。

  5. Orchestration2 修改此输入消息,然后将其发送给 MessageBox 数据库,这便激活了 Orchestration3。

  6. Orchestration3 修改消息并将其写入文件夹 <Samples Path>\BamEndToEnd\Output。

  7. 每个业务流程都会更新 BAM 活动中的活动项。

本示例所在的位置

可以在 Samples Path>\BAM\BamEndToEnd 中找到此示例<

下表显示了本示例中的文件及其用途说明:

文件 说明
BamEndToEnd.sln BAM 端对端示例解决方案。
BamEndToEnd.xls BAM 定义样式表。
BamEndToEnd.xml BAM 定义 XML。
BAMEndToEndBinding.xml BAM 绑定。
Cleanup.bat 用于取消部署本示例的批处理文件。
InputMessage.xml 输入消息。
Setup.bat 用于编译和部署本示例的批处理文件。
\Components\AssemblyInfo.cs 管道组件代码。
\Components\BAMMessagePartPLComponent.cs 管道组件代码。
\Components\Components.csproj 管道组件项目。
\Messages\InputMessage01.xml

...

\Messages\InputMessage10.xml
示例输入消息。
\Services\BAMInbound.btp 入站管道文件。
\Services\BAMPartSchema.xsd BAM 部分消息架构。
\Services\Orchestration1.odx 编排。
\Services\Orchestration2.odx 编排。
\Services\Orchestration3.odx 编排。
\Services\PropertySchema.xsd 属性架构。
\Services\Schema1.xsd 消息架构。
\Services\Schema2.xsd 消息架构。
Services\Schema3.xsd 消息架构。
\Services\Services.btproj Visual Studio BizTalk 文件项目。
\Services\Transform_1.btm 映射文件。
\Services\Transform_2.btm 映射文件。
\Services\Transform_3.btm 映射文件。

如何使用本示例

请按下面的过程生成并运行 BAM 端对端示例:

生成并初始化此示例

  1. 以管理员身份打开命令提示符,并运行 <示例路径>\BAM\BAMEndToEnd\Setup.bat。 Setup.bat 为此示例生成并初始化 BAM 基础结构。 保持命令提示符处于打开状态。

  2. 创建一个跟踪配置文件,以将 Orchestration1、Orchestration2 和 Orchestration3 映射到 BAM 活动。 (由于创建跟踪配置文件是一个复杂的过程,因此详细说明位于名为 “创建跟踪配置文件”的单独过程中。此过程将在此文档的后面部分显示。)

  3. 部署上一步中创建的跟踪配置文件 BamEndToEnd.btt。 在命令提示符下,更改为 <Samples Path>\BAM\BamEndToEnd 目录。 若要部署跟踪配置文件,请键入以下行,然后按 Enter

    “<BizTalkInstallationPath>\Tracking\bttdeploy” BamEndToEnd.btt

    如何使用跟踪配置文件管理实用工具部署跟踪配置文件 提供了详细信息。

    重要

    你可以忽略 ContinuationID Orch1_ 没有匹配继续符的消息。 预期会出现此消息,因为名为 Orch1_ 的继续符是在管道组件中定义的,而不是在踪配置文件中。

运行此示例

将文件 <示例路径>\BamEndToEnd\InputMessage.xml 复制到文件夹 <Samples Path>\BamEndToEnd\Input 中。 几秒钟后,该消息从“输入”文件夹中消失,输出消息将显示在 <Samples Path>\BamEndToEnd\Output 文件夹中。

查看 BAM 数据

  1. 打开 SQL Server Management Studio。

  2. 在SQL Server Management Studio中,依次展开服务器、数据库BAMPrimaryImport

  3. 右键单击 “dbo.bam_EndToEndActivity_Completed”,然后单击“ 打开表”。 如果使用SQL Server,请单击“选择前 1000 行”。

    右窗格中会显示 bam_EndToEndActivity_Completed 表的内容。 表中的每一行均代表一个已完成的 EndToEndActivity 活动。

重新运行此示例

  1. 以管理员身份打开命令提示符,并切换到 <Samples Path>\BAM\BamEndToEnd 目录。 键入以下行:

    “C:\Program Files\Microsoft BizTalk Server <version>\Tracking\bttdeploy” BamEndToEnd.btt /remove

    注意

    如果未将BizTalk Server安装到 C 驱动器,请将“C”替换为安装BizTalk Server的驱动器号。

  2. 运行 <示例路径>\BAM\BAMEndToEnd\Cleanup.bat。 Cleanup.bat 删除此示例的 BAM 基础结构。

  3. 执行本主题中 生成和初始化此示例 部分中的步骤。

创建跟踪配置文件

  1. 单击“开始”,指向“所有程序”,指向“Microsoft BizTalk Server 20xx”。 右键单击“ 跟踪配置文件编辑器”,然后 以管理员身份运行

  2. 在“ 跟踪配置文件编辑器 ”窗口的左窗格中,单击“ 单击此处导入 BAM 活动定义”。

  3. 在“导入 BAM 活动定义 ”对话框的“ BAM 活动定义名称 ”部分中,选择“ EndToEndActivity”,然后单击“ 确定”。

  4. 在“ 跟踪配置文件编辑器 ”窗口的右窗格中,单击“ 单击此处选择事件源”。

  5. “选择事件源父程序集”对话框的“程序集名称”部分中,选择“Microsoft.Samples.BizTalk.BamEndToEnd.Services”,然后单击“下一步”。

  6. “选择业务流程”对话框的“业务流程名称”部分中,选择“BamEndToEnd.Services.Orchestration1”,然后单击“确定”。

  7. “跟踪配置文件编辑器 ”窗口的左窗格中,右键单击“ EndToEndActivity”,然后单击“ 新建 ContinuationID”。 将新的延续 ID 命名为 Orch1_。 重复此步骤,再创建两个名为 Orch2_Orch3_ 的延续 ID。

  8. 右键单击“EndToEndActivity”,然后单击“新建延续”。 将新延续 命名为Orch2_。 重复此步骤,创建名为 Orch3_ 的另一个延续。

  9. 右键单击 Receive1 形状,然后单击“ 上下文属性架构”。

  10. 滚动到 “上下文属性名称” 列表的末尾,然后双击“ BAMEndToEnd.Services.PropertySchema.DocumentID”。

  11. 展开“<架构”>,然后拖动右窗格中的 DocumentID左窗格中Orch1_。

  12. 单击带有文件夹箭头 (按钮的文件夹图标,单击带有文件夹的向上箭头) 两次以显示业务流程。

  13. 将右窗格中的 Receive1 形状拖到左窗格中的 SBegin1

  14. 将右窗格中 StartOrchestration_1 形状拖动到左窗格中的 SEnd1

  15. 右键单击 StartOrchestration_1 形状,然后单击“ 消息有效负载架构”。

  16. 双击“ 消息 ”列中包含值“Message_2”和“ 部件 ”列中值“MessageBody”的行。

    77fbc444-46cf-4d45-8e9c-c330da7ba7d1显示 message_2 的

  17. 展开 “架构2”,然后将右窗格中的 “Data2 ”拖动到左窗格中的 “Data1 ”。

  18. 单击 “选择事件源”,然后单击“ 选择上下文属性”。

  19. 滚动到 “上下文属性名称” 列表的末尾,然后双击“ BAMEndToEnd.Services.PropertySchema.DocumentID”。

  20. 展开“<架构”>,然后将 DocumentID 拖到左窗格中Orch2_延续。

    注意

    不要将Orch2_延续与Orch2_延续 ID 混淆。 表示延续 ID 的图标包含 延续 ID) 的键 (图标,而表示延续的图标不包含 延续) 的键 (图标。

  21. 单击 “选择事件源”,然后单击“ 选择业务流程计划”。

  22. “选择事件源父程序集”对话框的“程序集名称”部分中,选择“Microsoft.Samples.BizTalk.BamEndToEnd.Services”,然后单击“下一步”。

  23. “选择业务流程”对话框的“业务流程名称”部分中,选择“BamEndToEnd.Services.Orchestration2”,并单击“确定”。

  24. 右键单击 ConstructMessage_1 形状,然后单击“ 消息有效负载架构”。

  25. 双击“ 消息 ”列中包含值“Message_3”和“ Part ”列中值“BAMPart”的行。

  26. 展开 “BAMPart”,然后将右窗格中的 DocumentID 拖到左窗格中 Orch2_ 延续 ID。

    注意

    不要将Orch2_延续与Orch2_延续 ID 混淆。 表示延续 ID 的图标包含 延续 ID) 的键 (图标,而表示延续的图标不包含 延续) 的键 (图标。

  27. 单击带有文件夹箭头 (按钮的文件夹图标,单击带有文件夹的向上箭头) 两次以显示业务流程。

  28. 将右窗格中 ConstructMessage_1 形状拖动到左窗格中的 SBegin2

  29. 将右窗格中 Send_1 形状拖到左窗格中的 SEnd2

  30. 右键单击 Send_1 形状,然后单击“ 消息有效负载架构”。

  31. 双击“ 消息 ”列中包含值“Message_3”和“ 部件 ”列中值“MessageBody”的行。

  32. 展开 “架构3”,然后将右窗格中的 “Data3 ”拖到左窗格中的 “Data2 ”。

  33. 在右窗格上方的下拉列表中,选择“ 消息有效负载架构”。

  34. 双击“ 消息 ”列中包含值“Message_3”和“ Part ”列中值“BAMPart”的行。

  35. 展开 “BAMPart”,然后将右窗格中的 DocumentID 拖到左窗格中 Orch3_ 延续。

    注意

    不要将Orch3_延续与Orch3_延续 ID 混淆。 表示延续 ID 的图标包含 延续 ID) 的键 (图标,而表示延续的图标不包含 延续) 的键 (图标。

  36. 单击 “选择事件源”,然后单击“ 选择业务流程计划”。

  37. “选择事件源父程序集”对话框的“程序集名称”部分中,选择“Microsoft.Samples.BizTalk.BamEndToEnd.Services”,然后单击“下一步”。

  38. “选择业务流程”对话框的“业务流程名称”部分中,选择“BamEndToEnd.Services.Orchestration3”,并单击“确定”。

  39. 右键单击 Receive1 形状,然后单击“ 消息有效负载架构”。

  40. 双击“ 消息 ”列中包含值“Message_3”和“ Part ”列中值“BAMPart”的行。

  41. 展开 “BAMPart”,然后将右窗格中的 DocumentID 拖到左窗格中 Orch3_ 延续 ID。

    注意

    不要将Orch3_延续与Orch3_延续 ID 混淆。 表示延续 ID 的图标包含 延续 ID) 的键 (图标,而表示延续的图标不包含 延续) 的键 (图标。

  42. 单击带有文件夹箭头 (按钮的文件夹图标,单击带有文件夹的向上箭头) 两次以显示业务流程。

  43. 将右窗格中的 Receive1 形状拖到左窗格中的 SBegin3

  44. 将右窗格中 Send_1 形状拖动到左窗格中的 SEnd3

  45. 右键单击 Send_1 形状,然后单击“ 消息有效负载架构”。

  46. 展开 “架构3”,然后将右窗格中的 “Data3 ”拖到左窗格中的 “Data3 ”。

  47. 右键单击Orch2_延续下方的 DocumentID,然后单击“设置端口映射”。

    注意

    不要将Orch2_延续与Orch2_延续 ID 混淆。 表示延续 ID 的图标包含 延续 ID) 的键 (图标,而表示延续的图标不包含 延续) 的键 (图标。

  48. “选择端口 ”对话框的“ 选择端口” 部分中,单击“ BamEndToEnd_ReceivePort”,单击) (大于号 > ,然后单击“ 确定”。

  49. 将跟踪配置文件保存到 <Samples Path>\BAM\BamEndToEnd\BamEndToEnd.btt。

重要详细信息

管道不支持跟踪配置文件。 但是,在管道组件中调用 BeginActivity 与在业务流程中使用 ActivityID 相同。 对 EnableContinuation 的 调用与在业务流程中使用延续相同。

另请参阅

业务活动监视(BizTalk Server 示例文件夹)