BAM 端对端(BizTalk Server 示例)

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

BAM 重新构造了跨管道组件和业务流程的业务活动。 从最低级别开始,这可以通过从每个实现组件调用 EventStream.EnableContinuation 来运行,这些组件需要活动更多事件。 对 EnableContinuation 的调用是显式的,而 Orchestration1 和 Orchestration2 中的调用是通过将一个延续文件夹添加到跟踪配置文件中的一个计划,并将一个 ContinuationID 文件夹添加到后面的计划。

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

Image that shows how to correlate events from multiple components.

本示例的用途

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”文件夹中<。 几秒钟后,邮件从“输入”文件夹中消失,“示例路径>\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,然后单击“ 新建继续 ID”。 将新的延续 ID 命名 为Orch1_。 重复此步骤,再创建两个名为 Orch2_Orch3_的延续 ID。

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

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

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

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

  12. 单击带有箭头 () button with folder and up arrow 两次的文件夹图标以显示业务流程。

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

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

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

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

    TPE Message Payload schema showing message_2

  17. 展开 Schema2,然后将右窗格中 的 Data2 拖到左窗格中 的 Data1

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

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

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

    注意

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

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

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

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

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

  25. 双击 消息列中包含 值“Message_3”的行,并在 “部件 ”列中单击值“BAMPart”。

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

    注意

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

  27. 单击带有箭头 () button with folder and up-arrow 两次的文件夹图标以显示业务流程。

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

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

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

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

  32. 展开 Schema3,然后将右窗格中 的 Data3 拖到左窗格中 的 Data2

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

  34. 双击 消息列中包含 值“Message_3”的行,并在 “部件 ”列中单击值“BAMPart”。

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

    注意

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

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

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

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

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

  40. 双击 消息列中包含 值“Message_3”的行,并在 “部件 ”列中单击值“BAMPart”。

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

    注意

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

  42. 单击带有箭头 () button with folder and up arrow 两次的文件夹图标以显示业务流程。

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

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

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

  46. 展开 Schema3,然后将右窗格中的 Data3 拖到左窗格中 的 Data3

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

    注意

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

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

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

重要详细信息

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

另请参阅

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