领域化业务构件描述体系及部署方法
2013-12-17王震东张育平
王震东,张育平
(南京航空航天大学计算机科学与技术学院,江苏南京 210016)
早期构件技术以CORBA,VCL,EJB为代表,实现了可拔插、可替换的功能,提供分布式计算服务。这里提到的面向构件技术体现的则是粗粒度、松耦合及更高层次(语义)上的抽象,它封装了企业信息系统的核心业务逻辑,是可重构企业信息系统的基本组成元素,也是大粒度可复用模块[1]。因此业务构件的合理设计是开发可重构企业信息系统的关键,有利于企业信息系统的可重构,在文献[2]中,将业务构件划分为过程构件和实体构件,给出了一种业务构件设计方法;文献[3]提出一种领域业务模型的可重用构件设计方法。
1 业务构件描述
各个行业的企业总有一些核心业务,长久保持不变,新时期的新业务基本上都是围绕核心业务展开。但是业务的扩展和IT技术的发展始终是一对矛盾的存在,如何重用原有的技术成果去描述常变的业务需求,是当前软件开发行业内所关心的话题。
就企业信息化领域而言,企业和业务包含几个重要要素:业务术语、业务流程、业务活动、业务表单、组织机构等。这些要素相互作用实现企业特定的目标。业务术语代表着领域化数据,是业务的数据来源;业务流程和业务活动代表着用户与系统之间有规律地交互,是业务的语义体现;业务表单代表着用户同数据之间的交互,是业务的交互接口。三者之间互相作用,完成一项特定的业务需求。至于组织机构,可以认为是业务术语的一个子集。
所以提出一套方法:对业务进行抽象分解,抽取出最核心的部分并使用统一的格式去描述,再把他们封装成基础颗粒(构件),定义向外提供的服务,在上述基础工作之上,就可以定义出具有不同功能甚至不同版本的构件,将它们部署在一个架构之上去运作完成指定的业务,从而应对当前企业信息化领域的业务需求挑战。在企业信息化领域对企业业务进行层次化划分为数据模块,流程模块,用户界面3部分。
1.1 业务数据
数据模块是企业信息化领域数据特征的抽象,用于描述一组数据的概念和定义。使用概念建模的方法:现实世界中存在各种概念,本质不同的属性集合,换言之不同的属性,依据一定规律或规则,形成的集合是概念。数据是企业信息内容积累的重点,建立业务数据库对业务概念重用有着重要作用。
业务数据作为业务构件的底层支撑部件,需要提供服务来供构件其他部分或者其他构件去调用。对其进行逻辑封装,将操作封装成业务服务发布出去。另一方面,通过映射逻辑操作,将概念和所属属性映射至持久层中去,这也是数据持久化的途径。
业务数据用于描述企业业务里包含的丰富的概念知识,它是整个业务模型的语义基础,可以规范和约束业务所处理的数据。为数据赋予语义,不仅可以促进企业知识的重用和共享,还可为企业数据交换和集成带来好处。
图1 业务数据模型描述图
1.2 业务流程
企业信息化核心职责是企业集成化、协同一体化,关键是实现商务流程系统和商务数据的互相协同。企业信息化领域的施工模块划分,一般以一项完整的流程作为划分的依据,因为它包含最小的独立可执行业务信息。并且在实际开发中,业务数据一般相对稳定,业务流程则是随需求常变的,故将业务流程当作构件中的一部分。
业务流程就是业务页面在不同用户之间流转。业务流程分为:业务活动,业务动作和业务规则,它建立在业务数据承载基础之上。
业务活动是业务流程的一个环节,每一个业务流程是通过处理一个个业务活动来展开的。它是状态的集合,另一方面也是用户访问的基本单位。利用业务活动这个载体,通过其传递、流转体现了企业协同交互功能。
业务功能,也可以理解为业务动作。它被业务活动引用去实现特定的业务操作,换言之它解决了业务流程中做什么和怎么做的问题。在开展业务活动时,参与者根据自己的权限进行受限范围内的操作。
业务规则,表示业务流程与业务活动中的丰富规则,它使流程在业务需求下恰当运行。业务流程有启动规则、流程合并规则。通过启动规则,可以确定流程在什么情况下启动以及如何启动。流程合并规则规定多个流程实例如何并行处理,方便大量流程的共同处理。业务活动之间通过连接弧、逻辑环节、条件环节等连接,这样规定了各项活动之间的先后关系和逻辑关系。最后每个业务活动上可以制定执行规则,转发规则,回退规则,时间规则等。
1.3 用户界面
用户界面和业务两部分之间完全独立的,他们之间通过服务接口交互。用户界面通过技术框架去实现同表单数据、业务流程之间的松耦合。它分为4部分:数据+格式+动作+规则。
数据部分定义了包含在表单中的数据,并规定了用户提交时如何处理数据。数据可以是数据模块中的概念,流程上下文数据,静态数据等;格式指数据如何在表单中布局以及采用什么构件来表现数据等。现在广泛使用的是xbl(界面构件),xforms(界面具体展现)等技术规范;在用户界面中,可以定义各种业务动作,也可以调用数据模块或者流程模块中定义的业务动作,采用事件驱动架构进行业务动作的响应;数据规则的检查,包括计算、约束、必须、只读等;最后还需要胶水层代码以实现一些简单业务逻辑。
图2 用户界面模型图
2 业务构件拼接组合
类似于对家具的各个零件部分进行组合、拆装来进行家具的搭建。下面对业务构件的组合以及拼接部署进行讨论。
2.1 业务构件封装
能否对软件开发进行更为有效的分工,降低程序员重复单件工作的成本,是衡量软件技术能否在复用性上取得突破的根本准则。因此提出,用户界面、业务流程、业务数据以及彼此之间提供的动作服务的集合,称之为业务宏构件,如图3所示。
图3 业务宏构件模型图
业务数据提供数据库表的映射服务;业务流程提供流程服务供流程引擎调用操作;用户界面提供界面服务供用户访问及交互。业务流程为语义执行核心,一方面通过技术框架中的容器同业务数据绑定,另一方面通过REST服务同用户界面发生关联。3部分均支持事件驱动框架提供业务服务供其他宏构件调用导入。最后提供系统管理服务,对宏构件进行部署、注册、注销等管理操作。注意一个业务构件可以由多个业务数据,多个业务流程,多个用户界面组成。
2.2 构件服务接口描述
由图3中可以看出,构件提供出的服务大致分为3类:界面服务,数据逻辑服务,业务动作服务。服务的接口规范基于WSDL(Web Service Description Language),而且也提供Java接口,这样使用业务构件的客户端可以选择使用WSDL接口或Java接口。服务接口类型具体采用哪种调用关系则主要是考虑性能、接口复杂度、耦合性等问题:不同构件之间可以通过REST服务进行调用;一个业务构件内部,业务构件和公共模块之间的调用实现API调用。
由于涉及到业务构件内外的调用,因此需要制定专门的绑定信息。这些绑定信息包括了目标服务或者源服务的调用方式,位置信息,调用的方法等。常用绑定方法有JMS绑定和Web Service绑定等。
2.3 构件的可配置化部署
文献[4]中提出了一套基于构件的软件配置管理系统模型。使用XML语言进行构件之间的配置描述,需要描述的部分大概有:构件的类库组成;描述构件暴露的服务;构件域描述,描述系统可用节点,互联接信息和桥接信息;逻辑构件映射成物理构件服务过程等。构件调用关系如果想实现自动绑定(Auto-wiring),还需要在标签中加入Autowire属性等标签。
系统架构彻底可配置化,要求框架本身构件也必须像业务构件一样可定制、可配置。这就需要一个微内核配置文件。框架本身构件也是靠配置这个微内核的配置文件达到组合使用或更换个别零件。
2.4 构件架构的实现
依照前述讨论内容,现假设存在多个业务功能不同的构件,为使他们彼此之间协同工作组成一个完整的信息系统,文献[5]提出了一个可拓展的集成式构件描述框架。这里结合CCM(Corba Component Model)标准和企业信息化领域的业务问题,提出一套构件框架模型,如图4所示。
业务服务总线是体系架构的核心,它负责缓存数据,统一数据格式,进行服务的引用调度,启动相应流程引擎,页面引擎等核心功能。
图4 基于宏构件的架构描述图
将跟每一个业务构件紧密相关的部分单独作为一个构件,即公共服务构件。业务构件和公共构件使用一个数据库,通过相关标准实现整合。公共服务构件包含组织管理、菜单管理、流程管理、系统管理、报表打印等。业务构件则由用户定制并部署至平台架构中,类似插件一样进行工作。
例如对会议管理部分进行分析。按照流程进行划分,可分为会议通知,会议记录,会议结果处理3个具有独立流程的部分,所以每部分作为一个宏构件进行设计。以会议通知为例分析,要求发起人填写会议信息并分发至参会人员并得到回执。流程包括3个环节:创建会议信息、分发通知、发送回执。业务流程从流程库中选择简单无分支流程类型,对环节进行命名和简单删减以符合流程要求,业务数据从本体库中选取会议本体,可依据企业需求选择所需子集,业务页面选择主表流式布局。接下来进行3部分之间的连接配置以及特色业务服务实现。主要包括:(1)页面技术构件同数据源属性之间的绑定。(2)页面业务服务实现流程各个环节执行者、分派模式等规则设定。(3)同组织机构构件交互的规则设定。(4)部署执行配置。最后通过Osgi技术将3部分资源以及配置信息打包封装,植入构架中运行。
以上为会议通知这一宏构件制造过程,若流程需求发生变化,只需对其流程环节进行轻微修改;若表单需求发生变化,只需对用户界面布局进行改变;若业务需求发生变化,只需对响应业务服务进行修改编码。三者之间彼此耦合度低,影响不大。这样就能将维护局限在宏构件中,甚至还可加入版本机制,增强复用度。
3 结束语
在对当今企业信息化领域分析的基础上,提出宏构件概念,借鉴CCM标准,对构件的拼接部署方法进行了讨论,提出了基于宏构件的业务架构平台,为企业信息化领域构件化开发提供一种可行的解决方法。
[1]ZHU SY,QIAN L Q,SU WM.Software engineering technology conspectus[M].Beijing:Science Press,2002.
[2]徐玮,尹宝林,李昭原.企业信息系统业务构件设计研究[J].软件学报,2003(7):2-3.
[3]孟凡超,战德臣,徐晓飞.基于领域业务模型的可重用构件设计方法[J].计算机集成制造系统,2006(12):98-101.
[4]张路,谢冰,梅宏,等.基于构件的软件配置管理技术研究[J].电子学报,2001,29(1):267-276.
[5]张涌,王渊峰,钱乐秋.一个集成式的软件构件描述框架[J].计算机学报,2002,25(6):212-218.