BizTalk 实用课程代码






4.78/5 (7投票s)
《BizTalk 实用课程》书籍的示例代码和示例章节

1 BizTalk 概述
BizTalk 是一个业务流程管理;面向服务架构 (SOA) 或企业服务总线 (ESB) 平台。您可以将 BizTalk 视为一组工具和应用程序服务,它们有助于快速创建集成解决方案。大多数企业都希望 BizTalk 能够使不相关和断开连接的系统以标准、一致和可靠的方式交换数据。BizTalk 提供的工具使您能够比使用标准开发语言和工具从头开始自定义编码解决方案更快地设计出可靠且健壮的解决方案。考虑到这一点,重要的是要了解 BizTalk 擅长什么,以及不擅长什么,以便充分实现 BizTalk 解决方案可能带来的任何效率。
如果您查看由两个不同团队设计的两个解决相同问题的 BizTalk 项目,您会看到两个完全不同的解决方案。两个解决方案都将解决它们旨在解决的问题;但是,您会发现一个解决方案利用了更多的 BizTalk 工具。这个解决方案更好,因为它将更健壮且更易于维护。将 BizTalk 视为一个工具包,在这个工具包中,您会找到帮助您构建应用程序的工具。
1.1 为什么选择 BizTalk?
对于那些完全不熟悉企业应用集成 (EAI) 和业务流程管理 (BPM) 的人来说,也许一些背景信息可以澄清消息传递和业务流程编排背后的思想。此外,本节将尝试澄清“消息传递”的概念。如果您熟悉一些基本的 EAI 原理,如松散耦合、发布/订阅和业务流程编排,您可以安全地跳到下一节。
如果两个应用程序需要建立某种形式的通信,这可以通过多种方式完成。例如,应用程序“A”需要来自应用程序“B”的信息,而应用程序“B”是在“A”之前开发的。这意味着“B”甚至不知道“A”的存在。幸运的是,“B”的开发人员公开了一个 API 供集成。因此,应用程序“A”可以调用“B”的 API 来收集所需的信息。没问题,运行良好,生活很容易,不是吗?实际上并非如此,集成应用程序通常涉及做出假设。在我们的例子中:我们做了许多假设,例如
- “A”进行调用时,“B”正在运行。
- “B”箱和“A”箱之间的通信链路稳定、安全、建立良好等。
- “B”运行在与“A”类似的平台上,即相同的数据表示。
- “A”用可以消费“B”的 API 的语言编程。
- “A”将永远不需要另一个应用程序来提供信息。
现在,假设您有四个或六个需要集成的应用程序。即使您只有两个应用程序,如上所述,请暂时想象以下场景
- 如果我们想用另一个更好的应用程序替换“B”怎么办?
- 如果我们想逐步淘汰“B”并将其移动到另一个盒子或集群怎么办?
- 如果应用程序“B”宕机而“A”需要它怎么办?
由于“A”对“B”做了一些假设,您的集成解决方案可能会遇到严重问题。应用程序的松散耦合正是为了防止这类问题。一个应用程序在与另一个应用程序集成时做出的假设越少,它们之间的耦合度就越松散。
消息传递是减少应用程序之间耦合的一种非常流行的方式。消息传递依赖于中间件来将数据块(“消息”)从一个应用程序传输到另一个应用程序。通常,这是通过一种称为“消息队列”的“通道”完成的。队列的优点是它异步工作。这意味着发送应用程序可以将消息放入队列,而接收应用程序可以在有时间时立即从队列中取出消息。例如,当它已经宕机并再次启动时。显然,并非所有应用程序都知道如何与队列集成。在大多数情况下,会有一些“适配器”将应用程序的输出或输入转换为消息,或从消息转换。消息传递减少了耦合并使解决方案更具可伸缩性。由于队列充当负载缓冲区,每个应用程序都可以以自己的速度工作。当您直接将应用程序“A”与应用程序“B”集成时(即使通过队列),这被称为点对点集成。现在,如果您有5个或6个需要集成的应用程序。点对点会导致应用程序之间如何通信(或协同工作)的许多复杂性和纠缠,并导致图1.1所示的“意大利面条”式情况。在现实生活中,大多数组织依赖于许多软件应用程序,它们需要将它们集成在一起。这种“意大利面条”式的集成很可能变得难以管理。拥有许多彼此独立运行的点对点连接不仅难以管理;它还使得“业务概览”变得不可能。我所说的“业务概览”是什么意思,如果您成功地连接了保险组织索赔处理系统中的每一个系统,您会期望能够进行以下查询:“今天批准了多少索赔?”
这需要一些“业务概览”,超出点对点通信。为了克服与点对点连接相关的问题,发明了 Hub and Spoke 集成服务,如图 1.2 所示。
从架构上看,集线器和辐条集成服务是集中的处理机制“集线器”,它接受来自多个应用程序(辐条)的消息。应用程序通过部署在集线器上的适配器与集线器交互,因此辐条(应用程序)不需要任何修改。集线器管理应用程序之间的消息路由、映射和跟踪。集线器和辐条模式通过降低添加和移除连接的成本以及通过集中管理提供强大的总拥有成本。
中心辐射式集成服务带来了“发布/订阅”模式。在发布/订阅模式中,双方在除了消息格式协议之外没有任何共享知识的情况下进行通信。这两方通常被称为生产者和消费者,或者——在发布/订阅的上下文中更恰当地说——“发布者”和“订阅者”。发布者使用消息传递将其输出发布到发布/订阅引擎,而订阅者使用过滤器向引擎订阅。该过滤器根据消息内容标准指定哪些消息是订阅者感兴趣的。
BizTalk 是微软对 Hub and Spoke 架构的实现。BizTalk 是从辐条接收消息并将其路由到目的地的 Hub。
1.2 BizTalk 如何工作?
BizTalk 旨在接收入站消息,通过某种形式的逻辑处理,然后将处理结果传递到出站位置或子系统。BizTalk 将所有数据和事件视为“消息”。消息**是 BizTalk MessageBox 中的一个有限实体。一旦消息发布到 MessageBox,它们就不可变。消息具有上下文属性和零到多个消息部分。BizTalk 扩展了 TCP/IP 端口的概念,以包括文件、SQL 等其他协议。端口可以是“接收位置”(即 BizTalk 将在此端口上侦听传入消息)或 BizTalk 将通过其发送消息的发送端口。BizTalk 将接收位置分组到其所谓的“接收端口”中,并将发送端口分组到发送端口组中(我知道命名有点令人困惑)。接收位置使用称为“BizTalk 适配器”的组件接收消息。BizTalk 适配器是理解 HTTP、FTP 等传输协议的组件。接收到的消息由与接收位置关联的管道处理。管道是一个组件,它对消息执行转换,以准备它们进入或离开 BizTalk Server MessageBox 数据库。在接收位置,接收管道的主要任务是将输入数据转换为正确的 XML。同样,在发送端口中,发送管道的主要任务是将输入数据转换为传输协议(适配器)的正确数据格式。
接收或发送端口可以关联一个或多个映射。映射是将消息从一个 XML 架构转换为另一个 XML 架构的组件。结果消息随后发布到 MessageBox 数据库。MessageBox 评估活动订阅并将消息路由到那些业务流程和具有匹配订阅的发送端口。订阅是比较语句的集合,称为谓词,涉及消息“上下文”属性和订阅特有的值。订阅匹配消息的特定上下文属性并确定感兴趣处理它的端点(业务流程或发送端口)。业务流程可以处理消息并通过 MessageBox 发布消息到发送端口,在那里它被推送到其最终目的地。业务流程是可执行的业务流程(工作流),可以通过 MessageBox 数据库订阅(接收)和发布(发送)消息。
BizTalk 解决方案的设计始于选择使用哪个 BizTalk 工具来完成这三个简单但至关重要的任务(接收、处理和发送消息)。我将在本章中介绍这些工具,并在本书的其余部分继续深入探讨它们。首先,让我们从一个更简单的概述开始
- 业务流程引擎支持图形定义流程的创建和运行。业务流程是 BizTalk Server 工具箱中最强大的工具。可以将业务流程视为一种特殊形式的工作流,类似于 Windows Workflow Foundations。业务流程用于图形化建模流程工作流,并提供在基于 BizTalk 的项目中实现业务流程自动化的主要机制。业务流程在 Visual Studio 中创建并编译成 .NET 程序集,这些程序集在 BizTalk 管理数据库中注册。部署到此数据库的程序集还必须安装到全局程序集缓存 (GAC) 中。我将在第 6 章中更详细地讨论业务流程。
- 业务规则引擎 (BRE) 用于评估复杂的规则集。BRE 允许您使用简单的 GUI 建模业务规则。它旨在允许对已实现的业务规则进行版本控制和修改,而无需更改 BizTalk 中使用它们的流程。您可以使用 BRE 来实现需要频繁更新的逻辑,例如折扣政策百分比或因法律或政府法规而频繁更新的计算。我将在第 7 章中更详细地讨论业务规则引擎。
- 健康与活动跟踪(HAT)工具允许您监控和管理引擎服务。HAT 将在本章稍后的 1.2.3 节中详细介绍。
- 企业单一登录(SSO)设施,提供在 Windows 和非 Windows 系统之间映射认证信息的能力。
- 业务活动监视(BAM)框架,您可以使用它将跟踪和监视功能构建到基于 BizTalk 的解决方案中。信息工作者将使用它来监视正在运行的业务流程的状态。业务活动监视(BAM)和业务活动服务(BAS)提供了执行应用程序检测和指标报告的基础设施。BAM 提供了检测应用程序的能力,以提供业务级别的数据,这些数据比基础产品中可用的默认系统级别信息更具相关性。我将在第 9 章中讨论 BAM。
- 业务活动服务(BAS),信息工作者用于设置和管理与交易伙伴的交互。BAS 提供了一种简单而强大的方式,通过 Microsoft SharePoint Portal Services 显示来自 BAM 和其他系统级子服务的度量数据。大多数组织会将 BAS 门户集成到现有的 SharePoint 基础架构中,而不是围绕 BAS 本身构建一个完整的 SharePoint 站点。
1.2.1 发布/订阅机制如何工作?
理解发布/订阅机制是理解 BizTalk 的核心。订阅的理念可以概括为:
- 消息(通过接收处理程序或来自业务流程发送端口)被接收并交给 BizTalk 引擎。
- 引擎存储有关消息的数据,称为上下文属性。
- 引擎查询规则存储以确定一组匹配的订阅。
- 对于每个匹配的订阅,都会在特定于应用程序的队列中输入一条记录,并与服务的特定实例相关联。
- 然后,排队的消息通过多个独立的辅助线程出队,并路由到指定的服务实例。
- 服务(可以是业务流程或发送端口)处理消息。
本质上,订阅机制充当规则引擎,它从一组基于谓词的规则中推断出哪些消息应该交给哪些服务实例。
订阅主要根据消息上下文属性谓词定义。每个谓词描述一个用于订阅匹配的表达式。例如,谓词可能定义一个表达式,用于测试 orderQty 属性值大于 3500 的消息。BizTalk 支持以下谓词类型:
- 按位 AND
- Equals
- Exists
- 大于或等于。
- 大于。
- 小于或等于。
- 小于。
- 不等于。
谓词被收集到“与”和“或”组中。BizTalk 不允许这些组嵌套,因此在可能创建的订阅规则方面受到一定限制。订阅由服务创建,并导致消息路由到业务流程或发送端口。
1.2.2 BizTalk 数据库
当您安装和配置 BizTalk 时,它会在指定的 SQL Server 中创建多个数据库。您不需要拥有所有这些数据库,这取决于您通过 BizTalk 配置配置的功能,我将在下一节讨论。以下是强制性的 BizTalk 数据库:
- BizTalk 管理数据库:此数据库是所有 BizTalk Server 实例的中央元信息存储。
- BizTalk MessageBox 数据库:此数据库由 BizTalk Server 引擎用于路由、排队、实例管理以及各种其他任务。
- BizTalk 跟踪数据库:此数据库存储由 BizTalk Server 跟踪引擎跟踪的健康监控数据。
- 规则引擎数据库:此数据库是以下内容的存储库:
- 策略,即相关规则的集合。
- 词汇表,即规则中数据引用的用户友好、特定领域名称的集合。
- SSO 数据库:企业单一登录数据库安全地存储接收位置的配置信息。
以下是 BizTalk 根据您的配置可能创建的可选数据库
- BAM 分析:此数据库包含用于在线和离线分析的业务活动监控 (BAM) OLAP 多维数据集。
- BAM 归档:此数据库归档旧的业务活动数据。创建 BAM 归档数据库以最大程度地减少 BAM 主导入数据库中业务活动数据的累积。
- BAM 通知服务应用程序数据库:此数据库包含 BAM 通知警报信息。例如,当您使用 BAM 门户创建警报时,数据库中会插入条目,指定警报所涉及的条件和事件,以及警报的其他支持数据项。
- BAM 通知服务实例数据库:此数据库包含实例信息,指定通知服务如何连接到 BAM 正在监控的系统。
- BAM 主导入数据库:这是 BAM 收集原始跟踪数据的数据库。
- BAM 星型架构:此数据库包含暂存表、度量表和维度表。
- 跟踪分析服务器:此数据库存储健康监控联机分析处理 (OLAP) 多维数据集。
- Windows SharePoint Services 配置数据库:此数据库包含服务器的所有全局设置。
- Windows SharePoint Services 内容数据库:此数据库包含所有站点内容,例如列表项和文档。
BizTalk Server 运行时操作通常使用 BizTalk Server 管理数据库、MessageBox 数据库、跟踪数据库和 SSO 数据库。根据您使用的 BizTalk Server 功能,您可能拥有表中列出的部分或全部其他数据库。
1.2.3 BizTalk SQL 作业
BizTalk 使用以下 SQL 作业,您应该安排它们在 SQL 服务器上运行,以便清理 BizTalk MessageBox[1] 数据库
- 备份 BizTalk Server (BizTalkMgmtDb):此作业对 BizTalk Server 数据库执行完整数据库和日志备份。
- CleanupBTFExpiredEntriesJob_BizTalkMgmtDb:此作业清理 BizTalk 管理 (BizTalkMgmtDb) 数据库中过期的 BizTalk Framework (BTF) 条目。
- MessageBox_DeadProcesses_Cleanup_BizTalkMsgBoxDb:此作业检测 BizTalk Server 主机实例(NT 服务)何时停止,并释放该主机实例正在进行的所有工作,以便可以由另一个主机实例完成。
- MessageBox_Message_Cleanup_BizTalkMsgBoxDb:此作业删除 BizTalk MessageBox (BizTalkMsgBoxDb) 数据库表中不再被任何订阅者引用的所有消息。
- MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb:此作业管理消息的引用计数日志,并确定消息何时不再被任何订阅者引用。
- MessageBox_Parts_Cleanup_BizTalkMsgBoxDb:此作业删除 BizTalk MessageBox (BizTalkMsgBoxDb) 数据库表中不再被任何消息引用的所有消息部件。所有消息都由一个或多个消息部件组成,其中包含实际的消息数据。
- MessageBox_UpdateStats_BizTalkMsgBoxDb:此作业手动更新 BizTalk MessageBox (BizTalkMsgBoxDb) 数据库的统计信息。
- PurgeSubscriptionsJob_BizTalkMsgBoxDb:此作业从 BizTalk Server MessageBox (BizTalkMsgBoxDb) 数据库中清除未使用的订阅谓词。
1.2.3.1 如何激活和调度这些作业?
默认情况下,这些作业已启用并计划在午夜运行。您可能需要根据之前讨论的数据转换处理的计划来更改这些计划。
启动 Microsoft SQL Management Studio,选择 SQL Server Agent 并展开 Jobs,如图 1.4 所示。您将在那里找到定义的作业。要更改作业计划,右键单击作业并选择属性,如图 1.5 所示。选择计划并选择编辑以编辑计划。
1.3 关于 BizTalk 2009
新的 BizTalk 2009 比 BizTalk 2006 R2 有许多改进,最重要的是全面支持 Windows 2008、Visual Studio 2008 和 Hyper-V 技术。更新了 .Net 3.5 框架 SP1,并改进了故障转移集群,可以在多站点集群场景中部署,其中集群节点可以位于单独的 IP 子网中,并避免复杂的 VLAN。业务活动监控已增强以支持可伸缩的实时聚合。EDI 和 AS2 协议现在支持多个消息附件、可配置的自动消息重发、端到端文件名保留、改进的报告以解决新功能,以及针对 AS2 的 Drummond 重新认证。全面支持 Microsoft Team Foundation Server (TFS) 的应用程序生命周期管理 (ALM)。
对开发人员而言,最重要的是对 BizTalk 映射 (XSLT)、管道组件和 XLANG 业务流程等工件的增强调试支持,并支持通过 Visual Studio Test 进行单元测试。以及通过为拆卸 (DASM) 和管道中的验证阶段提供可恢复的交换处理支持来改进验证失败的可恢复交换处理。最后,WCF 适配器得到增强,以提供可配置事务的支持以及在 WCF-Custom Send 适配器中选择事务隔离级别的能力。
1.4 构建开发环境
1.4.1 BizTalk 2006 R2 开发环境
我用于本书随附的 BizTalk 2006 R2 示例的开发环境是基于虚拟机的。您需要构建一个类似的环境,以便您可以跟随本书中的示例和演练。在安装 BizTalk 2006 R2 之前,您需要安装以下软件。
- Windows 2003 服务器。
- Windows Share Point 服务,
- MS Excel,
- MS SQL Server 2005,以及
- Visual Studio 2005。
运行 BizTalk 2006 R2 安装后,安装包将启动 BizTalk Configuration 应用程序。在使用 BizTalk 2006 R2 服务器之前,您需要配置它与您正在使用的 SQL 服务器以及用户和用户组。在第 9 章中,我将详细讨论 BizTalk 2006 R2 环境的基础架构。但是,对于运行示例,您可以使用 BizTalk Configuration 工具中的“默认配置”选项。此选项假定您正在使用本地 SQL Server。您可以在 MSDN 上找到有关如何安装和配置 BizTalk 的更多信息。
安装并配置 BizTalk 2006 R2 后,您将在“程序”->“Microsoft BizTalk 2006 Server”开始菜单中看到 BizTalk 管理工具、健康与活动跟踪工具和业务规则撰写器。您还会注意到 BizTalk 项目在 Visual Studio 中作为创建新项目的选项出现。第 1.5 节将向您介绍 BizTalk Server 附带的 UI 工具和组件。
1.4.2 BizTalk 2009 开发环境
我在这本书中用于 BizTalk 2009 示例的开发环境是基于物理 Windows 2008 环境的;但是您可以使用虚拟机。您需要构建一个类似的环境,以便您能够跟随本书中的示例。在安装 BizTalk 2009 之前,您需要安装以下软件
- 带有 Service Pack 1 的 Windows SharePoint Services 3.0,
- MS Excel,
- MS SQL Server 2008,以及
- Visual Studio 2008。
在安装 BizTalk 2009 Beta 之前,您应该首先阅读 Microsoft 文档“安装和配置 BizTalk Server 2009 (Beta)”。运行 BizTalk 安装后,安装包将启动 BizTalk 配置应用程序。在使用 BizTalk 服务器之前,您需要配置它与您正在使用的 SQL 服务器以及用户和用户组。图 1.6 显示了 BizTalk 2009 的配置用户界面。
安装并配置 BizTalk 后,您将在“程序”->“Microsoft BizTalk Server 2009”开始菜单中看到 BizTalk 管理工具、健康与活动跟踪工具和业务规则撰写器。您还会注意到 BizTalk 项目在 Visual Studio 中作为创建新项目的选项出现。第 1.6 节将向您介绍 BizTalk Server 附带的 UI 工具和组件。
1.5 BizTalk 项目开发基础
当您在开发环境中安装 BizTalk 时,BizTalk 会向 Visual Studio 添加几个组件。您应该注意的第一件事是“新建项目”对话框中新的 BizTalk 项目模板,如图 1.7 所示。
这些模板允许您快速创建 BizTalk 项目。空 BizTalk Server 项目模板是您最常用的模板。图 1.6 向您展示了创建的项目会是什么样子。它是一个普通的 .Net 类库,引用了一些 BizTalk 程序集,这些程序集支持与 BizTalk 的集成。
在 Visual Studio 2008 和 BizTalk 2009 中,属性显示如图 1.9 所示。这些与 Visual Studio 2005 和 BizTalk 2006 中显示的图 1.10 相同,唯一的区别在于 UI 外观。
您应该关注的一些细节
- 对程序集进行签名:您应始终确保任何 BizTalk 项目程序集已签名,并且它们引用的任何程序集也已签名并部署到全局程序集缓存 (GAC)。
- Visual Studio 2008 中的 BizTalk 组设置或 Visual Studio 2005 中的部署设置为您的 BizTalk 开发环境。养成一个好习惯,为您开发的应用程序设置一个应用程序名称,而不是部署到默认的“BizTalk 应用程序 1”。
现在您已准备好向您的 BizTalk 项目添加工件。工件可以是 Schema、Pipeline、Map 或 Orchestration。您只需右键单击项目并选择添加新项,然后在对话框中选择其中一个项,如图 1.11 所示。
添加完工件后,您可以一键构建或部署项目。如果您右键单击项目并选择“部署”,Visual Studio 将检查项目的构建状态,如果项目未构建,它将尝试构建。如果项目成功构建,Visual Studio 将其“部署”到您在图 1.7 和 1.8 中设置的 BizTalk 组。部署意味着 Visual Studio 会将程序集 GAC 到本地计算机的 GAC 中,并将条目添加到 BizTalk 组管理数据库中。
如果构建和部署顺利,您将在输出中看到类似于列表 1.1 的内容。请注意,我已经编辑了列表以使其简短。
列表 1.1
-----
Build started: Project:
BTSPracCourse.Schemas.Sample, Configuration: Debug Any CPU ------
BTSPracCourse.Schemas.Sample
-> C:\Development\BTSPracCourse\PracBTS2009\BTSPracCourse.Schemas.Sample\bin\Debug\
------Deploy started: Project:
BTSPracCourse.Schemas.Sample, Configuration: Debug Any CPU ------
.
.
.
: Deploy operation succeeded.
: Deployed the following 1 BizTalk assemblies:
BTSPracCourse.Schemas.Sample.dll
==========
Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
==========
Deploy: 1 succeeded, 0 failed, 0 skipped ==========
>1.6 BizTalk UI 工具
BizTalk 附带了多种用户界面工具,以方便基于 BizTalk 的解决方案的管理、配置、部署和开发。这些 UI 工具包括:
- BizTalk 管理控制台用于管理 BizTalk 应用程序、平台设置、工件和其他 BizTalk 组件。我将在 2.4.1 节中更详细地讨论它。
- 健康与活动监视器用于监视 BizTalk Server 数据的健康状况。我将在 2.4.2 节中更详细地讨论 HAT。
- BizTalk 资源管理器是一个 Visual Studio 插件工具窗口,类似于 Visual Studio 中熟悉的服务器资源管理器工具窗口。它显示 BizTalk 管理数据库的内容。您可以使用它从 Visual Studio 2005 管理 BizTalk,而无需进入 BizTalk 管理控制台。BizTalk 资源管理器在 2009 版中仍然可用,但它已被弃用,不鼓励使用。
- 业务规则撰写器用于创建和修改策略和词汇表。我们将在第 7 章探讨规则引擎时讨论业务规则撰写器。
- 业务规则部署向导用于将策略和词汇表部署到 BizTalk 服务器。我们将在第 7 章讨论规则引擎时讨论业务规则部署向导。
- Web 服务发布向导用于创建和修改 BizTalk Web 服务。
- WCF 服务发布向导用于创建和修改 BizTalk WCF 服务。
- 您可以使用跟踪配置文件编辑器提取业务分析师所需的数据,并执行特定业务事件数据与实际业务流程之间的映射。我将在第 8 章中讨论跟踪配置文件编辑器。
在本书中,当讨论同时适用于 2006 R2 和 2009 的 BizTalk 功能时,我将仅将其称为 BizTalk,并且在讨论仅适用于一个版本的特定内容时,我将明确提及版本。
1.6.1 BizTalk 管理控制台
BizTalk 管理控制台(如图 1.12 所示)是一个您应该非常熟悉的工具。虽然我们认为自己是开发人员、架构师等,但有许多集成解决方案可以“开发”(或更准确地说是配置),而无需编写一行代码。
图 1.12 显示了管理控制台将逻辑项(称为 BizTalk Server 业务解决方案中使用的工件)分组到称为 BizTalk 应用程序中的情况。工件是:
- BizTalk 程序集和包含业务流程、管道、架构和映射的 BizTalk 特定资源。
- 不包含 BizTalk 特定资源的 .Net 程序集。
- 政策。
- 发送端口、发送端口组、接收位置和接收端口。
- 解决方案使用的其他项目,例如证书、COM 组件和脚本。
如果您展开管理控制台中的平台设置节点,如图 1.13 所示,您将看到两个重要项:“主机和主机实例”。BizTalk 主机不过是一个逻辑容器。
主机定义了哪些适配器、业务流程和端口将在其上下文和安全上下文下运行。主机实例就是主机的实例。该实例实际上只是一个在机器上运行的服务,名为 BTSNTSvc.exe。此进程为 BizTalk 引擎提供了执行的地方,并允许在给定时间在同一台机器上运行不同主机的实例。每个主机最终都将成为 Windows 任务管理器中 BTSNTSvc.exe 服务的独立实例。
1.6.2 健康和活动跟踪(HAT)
健康与活动跟踪(HAT)(如图 1.14 所示)是一个 GUI 工具,提供用于报告、分析和调试存档在 BizTalk 跟踪数据库中的数据和消息的实用程序。对于实时数据,请使用 BizTalk 管理控制台。您可以使用“组中心”页面上包含的查询,或者选择“新建查询”选项卡创建自定义查询和报告。
您可以使用 HAT 调试业务流程,方法是运行业务流程的一个实例,然后右键单击它并选择业务流程调试器,如图 1.15 所示。您还可以使用 HAT 通过右键单击消息并选择消息流来查看消息流,如图 1.16 所示。
1.7 BizTalk 项目架构
您将如何组织基于 BizTalk 的解决方案?通常,您应该始终努力将 BizTalk 解决方案设计成分层结构,如图 1.17 所示,以分层方式设计解决方案可以简化项目并使其更易于维护。
您可以将解决方案设计为至少包含以下三层
- 外部接口层:此层包含所有不同的映射、管道、架构,它们将消费外部数据源并将其转换为企业内部的统一内部架构。这可以在一个 DLL 或多个 DLL 中实现,每个数据源一个 DLL,或者每个数据源多个 DLL。这取决于您的解决方案、未来的更改(新的第三方、外部系统等)。
- 业务逻辑层:这是所有业务逻辑在业务流程、映射、业务规则策略等中实现的地方。
- 企业系统接口:此层类似于外部接口层,但它是针对企业内部系统的。
您应该注意,我们总是转换为系统内部的统一或简单模式。我见过许多 BizTalk 解决方案,它们有如此多的业务流程或映射执行相同的逻辑,仅仅是因为第三方提供了不同的模式。在任何 BizTalk 解决方案中,您都应该努力实现:
- 最大限度地利用 BizTalk 开箱即用的功能和实用程序,
- 最小化代码量(这包括自定义管道组件、自定义适配器、自定义库等),并且
- 宁愿购买 BizTalk 未提供的组件,也不愿开发它们。
至于代码结构,没有一个放之四海而皆准的答案。许多 BizTalk 开发人员倾向于将架构、映射、业务流程和管道放在单独的项目中。这不适用于大型、中型解决方案,有时甚至不适用于小型解决方案。在构建解决方案代码时,您应该考虑 DLL 和其他工件的部署,以及解决方案的模块化。
例如,添加新合作伙伴和附加功能应该变得容易。您还应该考虑最大程度地减少开发人员之间的依赖性。例如,当所有开发人员都在同一个项目上工作时,他们可能会阻碍彼此的进展。另外,如果一位开发人员专门从事模式设计,那么其他开发人员就会依赖她,等待她完成模式设计才能开始。
注意:作业名称会根据配置期间给定的数据库名称而变化。如果您的环境中部署了多个 MessageBox 数据库,则每个 MessageBox 都会有几个作业。