复杂的企业应用系统都会基于一些平台来开发和运行。这些平台软件主要提供一些各个应用系统共同需要的功能,如用于数据传输的消息中间件,用于远程数据交互,方法调用的各种组件技术,用于数据存储和访问的数据库,做规则推理的规则引擎,做数据展现的图表工具,做流程编排的流程工具等等。这些工具彼此配合构成一个完整的企业应用平台。企业应用开发者基于平台开发企业应用系统,可以专注于企业业务逻辑的实现,其他公共的功能由平台提供。
我按现在SOA的思想来绘制企业应用平台软件结构层次图,然后再和EAI平台,应用服务器来对应。
企业应用平台软件结构层次图
企业应用平台软件一般都包括设计时编排配置工具和运行时引擎。
2.1 服务总线
服务总线包含用于底层数据传输的消息中间件。具备一定的功能,对外提供接口的功能单元称作服务,不同类别的服务会运行在服务总线上的不同容器内。容器在消息中间件基础上支持远程数据交互,方法调用,支持异构接口和系统间数据格式的转换。基于这些服务可以编排实现逻辑流程来完成更复杂的功能。
服务的实现方式可以有多种:
(a) 程序语言Java, C++等。
(b) 已有的组件技术EJB,CORBA,COM.
(c) 调用已有软件,或者系统的功能。
(d) 基于已有服务编排更复杂的服务。
一般EAI平台的功能和服务总线的功能对应。EAI平台提供各种技术适配器,产品和系统适配器封装已有技术,产品和系统的功能为基础的服务,也支持用程序语言实现一些功能单元。通过EAI流程编排工具可以把这些基础的服务功能单元编排为复杂的流程。
J2EE应用服务器里的EJB容器,提供对EJB组件的支持。对应于服务总线上的一种类别的服务容器。事实上服务总线是个集成组件技术的平台,也可以称作组件容器的容器。现在应用服务器的功能越来越多,支持Web Service组件技术,加入符合JCA规范的集成工具等等。在功能上也更加靠近服务总线。
服务总线是分布式的服务平台,之上的服务都是可以分布部署运行的。EAI平台有分布式的(如TIBCO的EAI平台),也有集中式的。J2EE应用服务器一般都是集中式的。从系统的扩展性,可靠性,性能等方面讲,分布式系统都更有优势。
所有这些平台都提供流程编排和驱动工具,提供图形化的流程编排方式,基于服务功能单元编排逻辑流程,把这些对数据做传输交互,内容格式转换,计算处理的操作串起来,组合成更复杂的操作,提供粒度更大的功能。这种流程编排支持选择,循环,调用子流程等逻辑流程功能,支持用于做服务功能单元之间数据内容映射的功能。流程编排语言的语法定义也类似于过程程序语言的语法定义,但一般都比程序语言简单,没有面向对象语言的特点,不支持泛型,虚函数等功能,没法实现很好的功能封装和复用。数据内容映射和转换语言也是如此。所以一般使用流程编排和驱动工具,适合在已有功能单元的基础上编排实现不很复杂的逻辑流程。如果业务本身很复杂,流程分支多,对象变量多,子流程多,彼此关系复杂,这种情况下最好使用其他实现方式来实现这些业务,而不是使用流程编排工具以图形化的方式来开发这些业务。
使用服务总线平台开发应用,根据不同的情况选择不同的服务实现方式:
(a) 调用已有技术实现的功能,已有软件或者系统的功能,可以使用适配器作用的服务。
(b) 如果是复杂的数据计算处理,最好使用程序语言来实现,选择程序语言的服务开发方式。
(c) 如果需要做规则推理,又不想自己实现规则推理逻辑的话,可以使用规则引擎,自己只需要定义规则。
(d) 基于已有服务的不很复杂的流程,可以使用流程编排语言来实现,当然是图形化的方式。
从上面的分析说明,可以看到服务总线做了数据传输交互,数据格式转换,连接已有系统等技术层面的工作;应用开发者要做的是数据计算处理,规则定义,逻辑流程编排等业务逻辑的实现。
2.2 业务流程管理
业务流程管理在设计时层面更靠近业务开发人员,提供业务层面的流程编排,企业组织结构的建模;在运行时增加人机交互,提供工作流审批的功能。业务流程管理工具可以调用服务总线上的自动流程服务和其他各类服务。
2.3 数据展现和用户界面
数据结果展现可以是各类图形,报表,用户界面可以使用胖客户端或者浏览器。对于一个包含很多应用系统的企业,门户为这些系统提供一个统一的入口。
2.4 事件处理和业务活动监测
企业应用系统中数据流可以分为业务数据流和监测控制流。 事件是应用系统的监测和控制数据,各个层面的系统状态信息,操作记录都可视为事件。事件之间有时间和因果的联系。状态模式诊断,故障原因推理,控制动作决策这样的场景都会使用事件处理机制。基于具体业务数据的业务活动监测需要用到事件处理,而事件处理一般都基于规则引擎来做事件推理和判断。
2.5 规则引擎
在数据计算处理范畴,有一种处理模式区别于普通的过程式处理。对于待处理的对象,有很多的处理规则,即满足什么条件做什么动作。程序需要持续匹配对象状态确定需要做什么操作。而这些规则在系统运行时会经常由业务人员改变,所以规则引擎就应需而生,作为规则的解释执行虚拟机,分割了规则推理操作和规则本身。规则可以由业务人员编写,由规则引擎解释运行。
2.6 商业智能
商业智能对历史数据进行分析统计挖掘,发现数据中的模式和规律,为商业活动提供行为决策。对比实时性很强的事件处理,商业智能平台偏重的是海量历史数据的挖掘处理。
2.7 基础工具产品
平台的基础工具产品包括:
(a) 部署管理工具。用于应用工程的打包部署,应用系统内机器,软件,部署实例的管理。
(b) 策略控制。用于服务功能基本单元的管理,服务访问的安全控制。
(c) 平台监测控制。用于运行时平台各个软件实例的状态监测,软件运行出错时的处理,宕机时的自动重启等等。