1. biztalk的由来
没有任何应用程序是完全孤立的。无论我们喜欢与否,将系统整合在一起已成为必然。系统整合不仅仅是交换字节,随着应用软件的复杂化和面向服务的发展,其现实目标也即将实现,即创建将各种单独的系统融为一体的有效业务流程。 为此,业务流程自动化(BPA)、业务流程管理(BPM)等名字也应运而生。整合企业应用已经多年,随着整合的概念(面向服务的架构SOA,面向消息的中间件MOM),方法(业务流程管理BPM,业务流程再造)和标准(XML,XSD,Rosetta.NET)以及问世如Web服务栈协议(WS-*),企业服务总线(ESB)和其他新兴技术,那么厂商已经发布了自己的解决方案,从而组织已达到具有挑战性的目标,他们的信息整合业务流程的自动化系统。微软的BizTalk就是为此而生的一个产品。
2. biztalk的工作原理
绝大多数现代业务流程都或多或少地依赖于软件,在许多情况下,已使用不同的技术在不同时间、不同平台上创建了此软件。若要使这些业务程序实现自动化,则需要连接不同系统。一个方案用于连接单个组织内的应用程序,通常称为企业应用程序集成(EAI)。下图显示了针对对EAI问题,应用核心BizTalk Server引擎的基本流程。引擎一直在监听消息接收端口。消息是一个实体,它包括一个头存储有关通信方面的信息和特定的元数据以及身体传达的有效载体,如业务实体。与外部系统的信息交换是通过适配器实现必要的协议机制。消息以其原生格式被biztalk引擎接受,但在系统内部消息使用XML作为的Biztalk引擎标准化的模式。这个任务是通过管道组件(pipeline)及其子组件专门拆装器组件。然后通过biztalk messagebox实现内部XML消息的发布。订阅者消费这些内部消息。主要的订阅者发送端口(send port)和业务流程组件(orchestration)根据自己的元数据或消息上下文属性订阅这些消息。当底层业务流程处理组件(orchestration)处理完这些内部消息时,再一次把他们发送到MessageBox供其他订阅组件订阅。最后,当一个发送端口消费内部的XML消息时,根据相关的pipeline等组件把消息转换成符合schema格式的消息。发送端口(sendport)根据adapter把消息把消息发送到其他系统。如下图所示。
3. biztalk的组成模块
为了将不同的系统组合到有效的业务流程中,biztalk引用了一系列技术。
如图所示,该产品的核心是BizTalk Server引擎。该引擎由两个主要部分组成:
用于提供与其他一系列软件进行通信的能力的消息传送组件。通过依靠于不同通信类型的适配器,该引擎可以支持诸如Web Services之类的各种协议和数据格式。
支持创建和运行被称为业务流程的以图形方式定义的程序。业务流程建立在该引擎的消息传送组件的基础上,可实现驱动所有或部分业务程序的逻辑。
Biztalk消息引擎中包括的主要组件:
Ø Adapter
适配器是一种软件组件,可以使用符合可识别的常用标准的传输机制通过BizTalk Server便捷地发送或接收消息:SMTP、POP3、FTP或Microsoft消息队列(MSMQ)。BizTalk Server主要包含以下类型的适配器:基本EDI、BizTalk消息队列、FILE、FTP、HTTP、MQSeries、MSMQ、POP3、SMTP、SOAP、SQL,以及Windows Sharepoint Services(如下图所示)。每个本地适配器均关联有一个接收位置,用于在特定地址侦听来自特定传输的消息。在接收位置收到消息后,消息将传递给适配器。适配器将向消息(通常在消息的正文部分)附加数据流,添加有关接收数据的源终结点的所有元数据,然后将消息提交到BizTalk消息引擎。
Ø Message
BizTalk的消息指的是XMl文件、二进制文件、SOAP消息等所有的格式。但在BizTalk内部唯一使用XML文档。每个消息都可以可以视为一个多部分消息,此类消息可以由一个或零个消息组成。所有消息在BizTalk中都是不可改变的,这就意味着消息在构造之后就不可以再改变。系统的每个消息都带有一个属性集,包括消息ID,接收端口,实例ID等信息。消息的属性可以通过管理控制台查看。实际开发过程中主要定义消息的格式,由于BizTalk内部唯一使用XML文档因此主要通过Schema编辑器定义XSD(XML架构定义语言)。
Ø Pipeline
尽管初始消息是由适配器创建的,但对收到消息的处理过程大部分发生在接收管道中。管道处理针对消息内容以及消息上下文。对消息内容的处理通常发生在解码、拆装和验证阶段,而对消息上下文的处理则可发生在所有阶段。BizTalk提供了比较方便的管道开发方法,通过继承BizTalk SDK提供的接口将消息流接收过来,经过处理之后再返回接口即可。无需涉及事务,大消息等复杂的内容。因此如需对消息进行底层的开发(例如Excel数据流转为拆装器可识别的XML数据流,针对XML消息添加命名空间等操作)大部份是在管道中进行。biztalk server中提供了几种现成的pipeline,当然也可以自定义pipeline。
Ø Orchestration
业务流程(Orchestration)用于定制和开发可执行的业务程序。在visual studio中可以直观可视地在绘图中设计流、解释和生成数据、调用自定义代码以及进行所有处理。消息、作用于消息的发送和接收操作以及传输消息的端口都是业务流程的基本元素。消息是业务流程与外界进行通信以及实施电子商务的媒介。业务流程不但跟实际的需求关系紧密而且需要了解的技术也比较多。主要有以下几个需要了解的技术:事务,相关集,多部分消息,类型(端口,多部分消息)。还有应熟悉业务流程设计器提供的各种形状,这些形状表示了业务流程的逻辑流。
Ø Maps
映射是为两个不同的xml架构包括其中的字段和记录定义之间的转换关系。映射由多个底层组件组成,并依赖于已创建的架构。这些架构又依赖于XML架构定义(XSD)语言。一个biztalk解决方案的很大一部分工作是用来定义xml架构和开发相应的maps(如下图)。
4. 类似的集成产品
目前所有的公司都有自己的集成产品,在市场上比较流行的主要是几个大的供应商提供的自己的中间件产品。主要包括:
Ø WebSphere Enterprise Service Bus(WESB):基于面向集成的SOA平台的WebSphere Application Server(WAS)而构建,针对中小企业的入门级ESB产品,能够帮助简化IT架构,降低运作成本,提升业务灵活性和市场响应速度,最终提升企业的竞争优势。
Ø WebSphere Message Broker(WMB):为异构IT环境中的统一连接和转换而构建。WMB通过提供对多种平台、语言、协议和传输方式的支持,帮助客户迅速部署企业服务总线,整合遗留应用,构建SOA架构的信息传输骨架。采用业界领先的WebSphere MQ消息传递基础设施。
Ø Oracle SOA套件(Oracle SOA Suite),不仅可以运行在Oracle自己的J2EE平台,还可以运行于其他中间件厂商(BEA,IBM)的中间件平台.
Ø SAP PI/XI SAP Netweaver中间件产品的一部分,目的是为non-SAP系统提供一个其他管理信息系统与SAP系统进行数据和流程交互的平台,因为SAP定位于ERP系统,关注点在企业的人、财、物,但对于企业其他的专业系统,SAP的功能无法覆盖和取代,因此,必须有这么的“接口”来实现相互之间的数据和业务交换。