65.9K
CodeProject 正在变化。 阅读更多。
Home

BizTalk 的业务活动监控 (BAM)

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.71/5 (6投票s)

2015年1月23日

CPOL

18分钟阅读

viewsIcon

54826

downloadIcon

396

关于为 BizTalk 项目实现 BAM 解决方案的教程

1.引言

BAM(业务活动监控),随着电子商务行业的日益蓬勃发展,中间件系统在与不同供应商/合作伙伴集成以完成供应链方面发挥着至关重要的作用。商业界期望所有交易都得到监控,无论每笔交易的成本如何。由于商业智能解决方案完全依赖于计划好的数据源,因此实时监控只能通过实时数据源来实现。BAM 充当了一个微型的实时商业智能模型,用于在 BizTalk 或任何基于 WCF 的跟踪中实现实时监控。由于 BAM 随 BizTalk Server 包一起提供,因此它在 BizTalk 项目中得到了广泛应用。作为一名 BizTalk 开发者,我想在这篇文章中写下我对 BAM 的看法,使其成为 BizTalk BAM 专业人士的入门工具包,这将有助于打破僵局,开始 BAM 开发。

1.1.先决条件

本文假设您对 BizTalk 工具具有基本知识,并且已在 BizTalk 配置工具和 MS Excel 中配置了 BAM 以便进行实施。

1.2.商业智能

众所周知,商业智能解决方案有多种技术可供选择,但所有商业智能工具的基础都是三个组件:

ETL(提取、转换、加载),它构成原始数据并充当数据源。

分析——数据分析是过程层,将数据转换为多维视图。

报告——报告包括具有高级数据表示的全面演示层。

 

1.3.MSBI 和 BAM

我将从微软的思维方式开始。

MSBI(Microsoft Business Intelligence)分别使用 SSIS、SSAS 和 SSRS 作为 ETL、分析器和报告工具,以构成完整的业务解决方案。

SSIS --> SQL Server Integration Service (SQL Server 集成服务) à 充当 ETL 工具。

SSAS --> SQL Server Analysis Service (SQL Server 分析服务) à 充当分析工具。

SSRS --> SQL Server Reporting Service (SQL Server 报告服务) à 充当报告工具。

BAM 反过来也使用这三种工具来形成全面的实时跟踪和报告。您可以在极短的时间内看到 BAM 跟踪。BAM 基础架构专为低延迟、高性能而设计,使您能够在几分之一秒内可视化 BAM 门户中的数据。

 

 

1.4.比较表

 

 

 

数据源

数据分析器

数据报告器

MSBI

SSIS

SSAS

SSRS

BAM

数据从消息框移动到跟踪数据

分析服务(度量/维度)

BAM 门户(网格/图表视图)

 

 

商业智能

 

 业务活动监控

 

 

1.5.SSIS 和 BAM 架构

 BizTalk 依赖于强大的发布/订阅架构,其中消息框数据库充当 BizTalk 引擎的心脏。从 BAM 的角度来看,可以将消息框视为实时数据源。但是,由于我们需要控制数据,因此需要将数据复制到称为 BAM 主要导入的 BAM 特定数据库。

数据从 BizTalk 消息框移动到 BAM 主要导入数据库的责任在于跟踪数据解码服务,该服务在运行时内部使用 SSIS 包执行此操作。

此外,BAM 特定数据库/表之间的数据移动也由 SSIS 包执行。

 

1.6.SSAS 和 BAM 架构

BAM 主要导入数据库中包含原始数据,我们需要对可用数据进行分析,并为用户形成全面的数据。例如:每天的总交易次数、交易的平均值等。这些分析决策取决于业务,他们希望报告如何呈现。

此数据分析针对 BAM 中的度量和维度进行。

度量是数据的数值聚合。

维度是根据时间表示的度量。

度量和维度构成了全面的业务报告,BAM 可以为此提供网格或图表视图。

1.7.SSRS 和 BAM 架构

BAM 门户在 BAM 架构中充当用户友好的演示层。数据可以以网格或图表视图的形式呈现。BAM 门户添加了查询服务,用于快速搜索正在跟踪的里程碑或数据。BAM 门户以活动和视图的形式表示数据。活动。

1.7.1.活动

活动代表需要监控的原子信息单元。通常,活动是代表业务里程碑和业务数据的字段集合。活动以 BAM 门户中的网格视图形式表示。

1.6.2. 业务里程碑

里程碑是时间相关的特定数据,用于表示业务流程的状态。例如:ReceivedTime(接收时间)和 SendTime(发送时间)。

1.7.2.视图

视图是活动的集合,用于根据不同业务角色的期望来表示数据。

由于 BAM 主要导入中的所有数据都可以用作关系数据,因此可以扩展 BAM 的功能,通过 SSRS 进行您自己的报告。

1.7.3.Excel 中的实时聚合

借助数据透视表,还可以通过实时聚合在 Excel 表格中查看 BAM 数据。

本文将通过实际示例帮助您理解 BizTalk 的运行时架构。

2.BizTalk 架构

BizTalk 在发布/订阅架构原则上运行,消息进入 BizTalk;它经过不同构件的一系列阶段,并(带或不带转换(映射))发布到消息框。然后,订阅者/侦听器会订阅消息,应用转换,通过管道,然后消息会从 BizTalk 发出。

BizTalk 中的构件

适配器、管道、架构、映射等。

 

3.电子商务场景

让我们以一个简单的电子商务解决方案为例:ABC 电子商务行业以 BizTalk 作为中间件,SAP 作为后端。客户订单通过 BizTalk 传递到后端系统,以进行进一步的供应链流程。

3.1.入站流

 

 

 

后端系统异步发送三个响应:确认/已处理/失败,取决于订单的状态。

3.2.出站流

 

 

由于订单交易状态非常重要,业务用户必须能够看到它,因此我们将为此场景设计 BAM 监控。创建一个 BizTalk 应用程序并设计一个 BAM 解决方案。

3.3.创建简单的 BizTalk 应用程序

请按照以下步骤创建仅消息的 BizTalk 应用程序(无编排):

  1. 在 Visual Studio 中创建一个新的 BizTalk 项目,并将其命名为 BAMTraining
  1. 创建一个如下所示的入站架构,并将其命名为 InboundOrder.xsd(所有元素均为字符串数据类型)。

这将是我们场景的请求流消息。

  1. 创建如下所示的另一个架构,并将其命名为 outboundOrder.xsd(所有元素均为字符串数据类型)。

  1. 将此项目部署到 BizTalk 管理控制台。
  1. 创建接收端口和接收位置。

 

 

  1. 创建发送端口并订阅相应的接收端口。

 

 

  1. 现在,在重新启动主机实例后,尝试使用示例入站文件和出站文件。

现在,让我们为已在您的计算机上部署的消息专用项目设计跟踪解决方案。

3.4.跟踪场景

在设计之前,我们需要确保回答两个问题:

  1. 跟踪什么 à 关键决策元素/业务数据/业务里程碑
  1. 在哪里跟踪 à 接收端还是发送端

我们将接收端口视为 Tracepoint1,发送端口视为 Tracepoint2。

 

 

我们将在发送端和接收端跟踪以下元素:

注意:发送端口时间表示消息已成功传递到最终系统。如果未填充,则表示存在传输失败或任何 BizTalk 内部故障。

3. BAM 架构

众所周知,消息框是 BizTalk 的核心,但 BAMPrimaryImport 数据库是跟踪的核心。消息框数据库会将数据传输到 BAMPrimary Import 数据库,从而将跟踪与 BizTalk 引擎隔离开来。

当消息发布到消息框时,消息将在消息的生命周期内(直到消息被所有订阅者订阅)保留在消息框中。

消息生命周期结束后,消息将从消息框中删除。在这两项任务之间,如果 BAM 已实现到 BizTalk 解决方案中,则心跳信号将启动数据从消息框到 BAMPrimaryImport 数据库的移动。

此移动由 TDDS 服务(跟踪数据解码服务)完成。TDDS 还负责将数据移动到 DTA 跟踪数据库。借助 BAM,可以跟踪已发布的和已订阅的消息以及里程碑。

BAM 事件处理器有助于触发业务事件,并将它们映射到 BAM 主要导入数据库中的活动模型。一旦部署了 BAM 解决方案,在运行时,消息将从消息框移动到其他数据库。请记住,跟踪不会发生在消息框中,以减轻其开销。

注意:消息有效载荷将是压缩/编码格式,TDDS 服务(跟踪数据解码服务)负责解码并将数据移动到 BAM 主要导入数据库和 DTA 数据库。

 

可以通过 BizTalk 管理控制台在端口处启用跟踪来实现 DTA 跟踪,这将有助于在 BizTalk 管理控制台的跟踪消息事件中查看消息。

一旦达到指定的 1 个月时间(在线窗口),消息将被分区到 BAM 主要导入数据库中。BAM 表的分区是通过 SSIS 包完成的,这些包在 BAM 定义文件部署期间创建。此外,一个多月的数据将被存档到 BAM 存档数据库。在部署期间创建的 SSIS 包负责这些数据移动。

3.1.BAM 数据库

安装和配置 BAM 时创建的数据库列表。以下数据库有助于跟踪以实现其各种功能,如下所示:

数据库

目的

BAM 主要导入

数据源/BizTalk 跟踪的核心

BAM 存档

基于时间窗口归档的数据

BAM 星型模型

分析度量、维度和图表视图等数据。

BAM 分析

BAM 警报应用程序

BAM 警报管理数据库

BAM 警报 NS 主数据库

用于通过 SMTP 触发邮件的通知服务。

BAM 还包含连续性和关系的概念,用于增强关系活动模型。

3.2.连续性

商业界期望在一个单独的活动中包含所有可能的关联。将详细信息拆分到不同的活动中,会使关键决策过程变得繁琐。因此,BAM 通过连续性显示操作的连续性。总的来说,连续性是 BAM 中一个独特的概念,用于关联入站和出站消息。

3.3.关系

活动是监控的原子信息单元。必须关联不同的活动以提供全面的数据。这种不同活动之间的关联是通过 BAM 中的关系实现的。

4.实施 BAM 解决方案

BAM 跟踪的实施可以按以下步骤进行:

  1. 使用 MS Excel 创建 BAM 定义文件(用于创建相关的表、视图、存储过程等)。
  1. 使用跟踪配置文件编辑器创建 TPP 文件(负责将数据绑定到端口)。

4.1.     使用 MS Excel 创建 BAM 定义文件

4.1.2.   在 Excel 表格中创建活动和视图

在 BAM 中,所有内容都以活动和视图的形式表示。在 Excel 表格中创建活动和视图等同于设计代表最终用户数据的容器。我们需要知道,必须跟踪哪些关键列(KPI),这将增强用户的理解能力。

活动是收集源(编排、管道、WCF 拦截器)信息的表。

视图是活动的集合,它可以代表业务的集体数据信息。

4.1.3.   创建活动

转到 MS Excel >> Add-ins >> BAM >> BAM Activity

4.1.4.   为入站活动创建里程碑/业务数据

将活动命名为 InboundOrder,然后单击“新项”来创建列。所有列都应分配给如下所示的数据类型。

 

注意:业务里程碑是日期时间戳,用于显示消息到达时间和消息发送时间。所有其他列数据类型均为文本。

4.1.4.1   为出站活动创建里程碑/业务数据

使用以下详细信息,为创建出站订单活动执行相同的过程。

创建两个活动后,您将看到如下所示的屏幕。

 

4.1.4.2   创建视图

在创建了活动之后,视图将有助于在 BAM 门户中表示多个活动。

单击“确定”,您将被导航到初始视图页面。

单击单选按钮“创建新视图”并单击“下一步”。

选择视图名称,然后在下一个窗口中选择活动,如下图所示。

我们可以为一个活动创建任意数量的视图,以满足不同用户的需求。现在选择您在两个活动中创建的所有数据项。

 

然后单击几个“下一步”,直到进入最后一页,因为我们不涵盖度量和维度。

此页面将创建包含完整详细信息的 Excel 表格。

BAM 定义可以是 Excel 或 XML 格式,由于 XML 跨服务器兼容,因此始终首选使用导出的 XML 定义文件。现在将 BAM 定义文件导出为 XML 格式,并将其保存为 BAMTraining.xml。

 

4.1.5.   部署 BAM 定义文件

BAM 定义文件 (BAMTraining.xml) 应使用 BAM 命令行实用程序进行部署。

部署 BAM 定义文件将创建相应的数据库表、视图、SSIS 包等,这些将以关系视图组织数据。

请按照以下步骤部署 BAM 定义文件:

  1. 以管理员身份打开命令提示符。
  1. 导航到 %BTSInstallPath%/Tracking 文件夹。
  1. 使用命令:

bm.exe deploy-all –DefinitionFile:”<<FileLocation>>\BAMTraining.xml”

BAM 定义已成功部署 :)

4.1.6.   后端

部署 BAM 定义文件时,您的跟踪解决方案的详细信息将进入 BAM 主要导入中的 BAM 元数据表,并且在 BAM 数据库中还会创建以下构件:

4.1.6.1. 与活动相关的表

4.1.6.2. 与活动相关的视图

4.1.6.3. 用于分区/存档/数据移动的 SSIS 包

SSIS 包将在 Integration Services 中创建,这将有助于分区和存档 BAM 数据以提高性能。

SSIS 包名称:BAM_DM_<活动名称>

4.2.     配置并部署跟踪配置文件编辑器文件。

4.2.1.   配置文件编辑器

跟踪配置文件编辑器定义了跟踪数据的方式。跟踪配置文件编辑器工具将负责将数据绑定到端口。

4.2.3. 为入站订单请求配置跟踪配置文件编辑器

我们已经部署了 BizTalk 解决方案和 BAM 定义文件,现在是时候使用跟踪配置文件编辑器将它们链接起来了。

  1. 转到开始 >> 跟踪配置文件编辑器。

左窗格 à 活动定义文件。

右窗格 à BizTalk 已部署的消息/上下文属性。

  1. 单击左窗格中的“单击此处导入 BAM 活动定义”,然后在弹出窗口中选择 InboundOrder。

 

 

  1. 活动列现已填充。

  1. 选择事件源。

事件源是 BAM 中数据填充的位置。

事件源

描述

编排计划

编排属性

消息有效载荷

已部署的架构元素

上下文属性

BizTalk 上下文属性

消息属性

消息/端口属性

 

  1. 按照下表,将右窗格(事件源)中的属性拖放到左窗格(活动列)中。

活动列名称

事件源

属性/元素名称

端口名称

OrderID

MessagingPayloadàBAMTrainingà

InboundOrderàOrderID

OrderID

InboundReceivePort

ProductID

MessagingPayloadàBAMTrainingà

InboundOrderàProductID

ProductID

InboundReceivePort

XProductName

MessagingPayloadàBAMTrainingà

InboundOrderàProductName

ProductName

InboundReceivePort

ShipmentAddress

MessagingPayloadàBAMTrainingà

InboundOrderàShipmentAddress

ShipmentAddress

InboundReceivePort

RcvPortName

ContextProperty à BTS.ReceivePortName

BTS.ReceivePortName

InboundReceivePort

RcvdTime

Messaging PropertyàPortStartTime

PortStartTime

InboundReceivePort

SendPortName

ContextProperty àBTS.SPName

BTS.SPName

InboundSendPort

SendPortTime

Messaging PropertyàPortEndTime

PortEndTime

InboundSendPort

 

 

  1. 插入连续性 >> 右键单击 Inbound Order >> 新建连续性并从接收端口分配 Interchange ID。
  1. 此外 >> 右键单击 Inbound Order >> 新建 Continuation ID。
  1. 将 ContinuationID 重命名为 Continuation(两者应同名)并从发送端口分配 Interchange ID。
  1. 最后,您的跟踪配置文件应与上图类似,将其保存为 TestInboundTPE.tpp 文件。
  1. 转到文件 >> 单击“应用跟踪配置文件”。

这使您能够成功将跟踪配置文件部署到 BAM 解决方案。

 

 

 

 

4.2.4. 为出站订单活动配置跟踪配置文件编辑器文件。

打开一个新的跟踪配置文件编辑器,在左窗格中打开 OutboundOrder 活动,并分配值,如下所示。

活动列名称

事件源

属性/元素名称

端口名称

OrderID

MessagingPayloadàBAMTrainingà

InboundOrderàOrderID

OrderID

InboundReceivePort

RcvPortName

ContextProperty à BTS.ReceivePortName

BTS.ReceivePortName

InboundReceivePort

RcvdTime

Messaging PropertyàPortStartTime

PortStartTime

InboundReceivePort

SendPortName

ContextProperty àBTS.SPName

BTS.SPName

InboundSendPort

SendPortTime

Messaging PropertyàPortEndTime

PortEndTime

InboundSendPort

 

 

在上图中,InboundOrder 指示了与 OutboundOrder 的关系。应该有一个公共 ID,在本例中是 Order ID。

转到 >> 文件 >> 应用配置。

端口与 BAM 之间的绑定已应用,这将帮助 BAM 事件在消息到达端口时触发,并将数据填充到 BAM 表中。

5.连续性如何工作

考虑入站活动。

我们已配置跟踪配置文件编辑器将两个跟踪点跟踪到单个活动中。

我们以上述 1:1 场景为例。

Tracepoint1- 入站消息。

Tracepoint2 – 出站消息。

Tracepoint1 和 Tracepoint2 之间的连续性通过一个公共 ID InterchangeID(在接收端口和发送端口上相同)建立。每当入站消息到达时,Active 表都会被填充。

当出站消息成功传递时,数据将从活动表移动到已完成表。所有实例(SQL 视图),它结合了活动表和已完成表,将负责数据在 BAM 中显示。

5.1.活动表中的数据移动

 

5.2.测试连续性场景

我们已配置 BizTalk 应用程序,停止 InboundSendPort 并将以下消息发布到接收位置。

消息已被拾取,但未能发送到发送端口位置,并在 BizTalk 中挂起。让我们看看后端表的结果。

5.2.1.活动表值

以下快照显示了在接收端口跟踪的业务数据和里程碑。

5.2.2.BAM 视图

在 BAM 视图中的表示。

另外请注意,发送端数据未填充,因为消息尚未从发送端口移出。现在让我们启动发送端口并查看结果。

5.2.3.已完成表值

启动发送端口后,跟踪点 2 的业务数据/里程碑已记录在 BAM 活动已完成表中,当消息成功传递时,记录会从活动表移动到已完成表。

5.2.4.BAM 视图

您还可以看到 RcvdTime 和 SendportTime 也已填充的 ExecutionTime。

5.2.5.完整的 BAM 记录视图:

这是所有数据、里程碑和活动 ID 的完整视图。

 

6.关系如何工作

当 SAP 系统为单个订单请求返回多个响应时,我们需要建立响应消息与请求消息之间的关系。

 

关系场景应用于连续性场景之上。

这种 1:N 场景(1 个请求和多个响应)是使用 BAM 中的关系来解决的。

在上图中,对于一个订单请求,可能有多个响应从最终系统到达,一个请求和多个响应之间的关系是通过 Inbound Order 和 Outbound Order 之间的一个公共 ID(在本例中为 OrderID)建立的。

注意:只能为属于同一视图的活动建立关系。

6.1.测试关系场景

在本例中,关系将是入站订单与多个出站订单状态之间的关系。

让我们将以下确认消息发布到出站接收位置。

入站和出站订单的 OrderID 相同。

6.1.1.BAM 视图 - 已确认

6.1.2.记录的完整 BAM 视图

您可以在“相关活动”部分看到 InboundOrder 活动的链接。

6.1.3.BAM 视图 - 已处理

发布另一个消息作为已处理状态。

6.1.4.BAM 视图:用于多个响应消息

在入站活动中,您会找到两个相关的出站活动。

  1. 已确认
  1. 已处理

实现了一个入站订单与 N 个出站订单状态的关系。

通过单击出站订单活动,可以轻松导航到相应的入站订单活动。这使得业务/支持团队能够轻松监控成功处理的订单与未成功处理的订单。

 

7.BAM 警报

BAM 警报是随 BizTalk 一起提供的优秀警报功能。警报将基于您在设计时根据业务期望设置的条件触发。通常,SLA 违规会通过 BAM 警报进行提示。如果 BizTalk 系统有在接收时间后 20 分钟内发送消息的 SLA,里程碑(接收时间 SendTime)将告知我们 SLA 的违规情况,并且警报服务将每 30 秒运行一次以评估条件并触发对指定订阅者/组的警报。

 

 

8.结论

BAM(微型商业智能)是 BizTalk 开发人员用于跟踪和报告的现成业务解决方案。由于这个 IT 时代主要关注以更少的资源获得快速的结果,BAM 将成为一个最佳选择,并拥有良好的跟踪记录,未来将有许多增强功能来满足不断增长的需求。我希望本文能为您提供 BAM 的基础知识。

 

集成愉快 :)

© . All rights reserved.