TIBCO的EAI解决方案主要包括两个产品Business Works和Adapters两个产品。之前的文章中概括过EAI平台提供的主要功能:
a)定义了中间层数据类型,数据格式,接口规范,接口通信方式和通信协议。
b)平台去做已有系统和中间层之间的数据格式转换。
c)对已有系统接口的封装,提供统一的接口。
d)使用图形工具进行流程编排,编写数据转换和映射规则。由EAI平台引擎来执行。
Business Works主要负责EAI流程编排和运行,Adapters来对已有系统或技术的接口进行封装,做已有系统和中间层之间的数据格式转换。底层使用TIBCO的消息中间件进行传输。接下来分四个小节来分析这两个产品。
1.TIBCO EAI解决方案结构功能特点
2.统一的中间层数据接口定义
3.自动流程的实现
4.应用场景和典型案例分析
TIBCO EAI 解决方案结构功能特点。TIBCO EAI结构图如下:
说明:
(1) Business Works 与Adapters产品都包含设计时编排配置工具和运行时引擎。
(2) 在Business Works流程中的基本功能单元组件完成一些基本操作:文件操作,XML数据解析,JDBC数据库访问,收发邮件等;封装一些基于各种通信协议的数据包收发操作TCP, HTTP, JMS,FTP等;封装一些组件技术接口:Web Service之SOAP。在流程内部使用中间层的数据定义,每种类型的组件负责做中间层和目标之间数据转化,封装相应的接口。
(3) 对于复杂目标应用和技术,如果依然实现为BW里的功能组件,则这些组件会过于复杂,整个流程的工作负载也过大,所以TIBCO采用Adapters 适配器的解决方法。
Adapter独立于流程运行,功能和BW流程中的功能组件类似:在中间层和目标之间做双向的数据转换,封装目标系统或者技术的接口,管理与目标系统之间的连接。不同的目标系统或者技术有不同的Adapter产品:产品类的Adapter有Tuxedo, MQ, Oracle Apps, Siebel 等;技术类的Adapter有EJB, COM, CORBA,SWIFT等。Adapter与Adapter之间, Adapter和BW流程之间都通过消息总线进行互联。
(4) 基于基本的组件可以编排逻辑流程,支持分支选择,循环,分布式事务,子流程调用等特性。
(5) 通过BW内部的功能组件和Adapter的封装,在流程内部处理的数据既是中间层的统一的数据定义。BW在流程内部使用XML格式的数据,功能组件之间的数据映射由XSLT描述,提供图形化的数据映射工具。
流程功能组件之间数据映射示意图
(6) Business Works流程代表一系列的操作任务,这些任务由Business Works引擎来执行,每个任务的触发条件称作事件,所以也叫做事件驱动流程。通常事件都是通信的服务端,接收到通信协议数据包后触发一个流程任务的执行。BW也提供客户端组件用来向服务端发送请求。
(7) 任意数目流程实例和Adapter实例由各自的引擎运行,可以任意部署在系统内不同的节点上,彼此通过消息中间件交互。TIBCO EAI解决方案是典型的分布式系统。
(8) Business Works提供的功能组件支持Web Service相关协议,流程可以包装为Web Service。同时也支持服务编排的标准规范BPEL。
(9) Business Works流程内可以嵌入JAVA程序作为一个功能组件。
上述可以看到TIBCO EAI解决方案,提供诸多对各种基本技术操作,各种通信协议,各种组件技术,各种应用软件产品和系统的数据和接口的封装,基于这些封装的功能单元编排实现自动的流程。
(1) 方案适用于复杂业务逻辑都在已有产品或者系统中实现,通过功能组件和Adapter调用这些已有功能实现编排一个新的流程。Business Works流程编排的语法类似简化版的过程式解释型计算机语言的语法,编排出的流程和程序一样都会由引擎来解释运行,和语言的区别在于其使用图形化的编排方式。这种图形化流程实现方式的好处是直观方便,缺点是语法过于简单,不像计算机语言编程那样有多态,有复用,有设计模式,不适合实现复杂的逻辑流程,且流程调试和维护也不如程序方便。建议不要在Business Works流程内实现复杂逻辑,而是使用其他手段(如编程语言)实现复杂逻辑,然后通过功能组件和Adapter调用这些实现。零语言编程并不一定是优势,况且流程编排也是种编程语言,一种图形化的流程编排语言。
(2) Business Works流程不适合实现复杂逻辑,可以选择使用JAVA语言实现这些逻辑,然后嵌入BW流程。BW只支持JAVA语言,不支持其他常用编程语言如C++, .NET。这是一个限制。
(3) 对于各种由通信协议数据包请求事件驱动的流程,BW也提供客户端组件用来向服务端发送请求。但BW没有提供程序接口用来向这些服务端发送既定数据Schema和通信协议的请求。这也是一个小的限制,使得BW EAI平台构建的系统相对的封闭,它可以调用其他系统的程序接口,但没有程序接口供其他系统调用。Web Service例外, Web Service的方法调用和数据Schema使用WSDL,调用协议使用SOAP, 这些是标准协议。集成开发者可以使用AXIS生成访问BW实现的Web Service的客户端程序。
总之EAI平台做的是数据传输交互,数据内容格式转化,数据存储,简单流程编排的工作,复杂的业务逻辑还需要应用开发者自己来编程实现。
参见文章http://blog.youkuaiyun.com/zlushangnwpu/archive/2008/09/30/2999470.aspx