1. 引言
随着信息技术的飞速发展,企业纷纷实施信息化战略,使得信息管理系统等应用性软件需求较大。然而由于传统开发技术存在开发效率低、人力资源成本高、开发周期长,软件可移植性和扩展性有待进一步提高等情况。针对这些情况,业界先后提出了基于软件工程的开发方法、软件设计模式、软件设计框架等改进措施。之后,对象管理组织(OMG, Object Management Group)定义的一个软件开发框架 [1] [2],即模型驱动架构(MDA, Model Driven Architecture)并在软件行业得到了高度关注和广泛应用 [3]。
MDA在工业界的发展非常迅速,它提供了一个中立于各开发商的开放的方法,以应对业务和技术变化带来的挑战。核心思想是抽象出与实现技术无关、完整描述业务功能的核心平台无关模型(PIM,Platform Independent Model),然后针对不同实现技术制定多个转换规则,通过这些转换规则及辅助工具将 PIM 转换成与具体实现技术相关的平台相关模型(PSM,Platform Specific Model),最后将经过充实的 PSM 转换成代码 [2] [4]。通过PIM和PSM、MDA 的目的是分离业务建模与底层平台技术,以保护建模的成果不受技术变迁的影响。
论文结合课题组多年来从事企业信息管理系统的开发经验,以及对模型驱动架构开发技术的研究,针对用户应对业务和技术变化带来的挑战,分析研究了基于模型驱动架构将业务和应用逻辑与底层平台技术分离开来的设计思路,构建了面向中小型企业日常信息管理软件系统开发所需的基于Web的快速开发框架。
2. 模型驱动架构介绍
2.1. 模型驱动架构
模型驱动架构源自于把系统操作的规范从系统利用底层平台能力的方式细节中分离出来的思想 [5] [6]。模型驱动架构包括模型技术、中间件、普适服务和解决方案,如图1所示。

Figure 1. Architecture of model driven architecture
图1. 模型驱动架构的体系结构
模型驱动架构的框架包括模型、变换定义语言、变换定义以及变换工具等,如图2所示。其中,模型是对系统的功能、行为、性能以及系统结构等因素的描述或表示 [7]。模型包括平台无关模型PIM和平台相关模型PSM。平台无关模型PIM从功能设计角度描述系统的体系结构,不涉及最终实现平台的知识,与技术细节无关;平台相关模型PSM描述基于特定软件开发环境的模型,包含最终实现平台的全部知识。此外,变换定义描述了源语言表述的模型如何变换到目标语言表述的模型。变换工具 [8] 按照变换定义,为特定源模型执行变换。元语言在MDA框架中扮演的角色不同于建模语言,它是描述建模语言的特殊语言。

Figure 2. Framework of model driven architecture
图2. 模型驱动架构的框架
2.2. 模型驱动架构的开发模式
在基于模型驱动架构的软件开发过程中,核心是对可被机器化读取的形式化模型的构建,首先针对业务需求建立平台无关模型(PIM),然后采用模型映射技术和代码自动生成技术转换为平台相关模型(PSM),最后按照某种规则生产应用代码,这种开发模式实现了模型在不同平台中的复用。其开发模式关注的是对系统的建模,包括对模型的理解、设计、创建、维护和修改,如图3所示。同时,模型驱动架构还涉及到XML [9] 等可扩展标记语言、AJAX技术等 [10] [11] [12]。

Figure 3. Development mode of model driven architecture
图3. 模型驱动架构的开发模式
3. 模型驱动架构的总体设计及实现
3.1. 总体设计思路
基于模型驱动架构的软件快速开发平台 [12] [13] 的基本设计思路为:
第一,建立一套XML文档标签的书写标准,利用建立的标准XML文档对企业业务建模进行描述。
第二,搭建一套完整的模型驱动运行环境(框架),该框架要求能够支持对标准XML标签的有效性验证、标签识别、XML解析存储并根据解析完成的标签自动生成HTML+JAVASCRIPT+CSS页面源码。
第三,利用框架和业务建模描述的XML文档,实现系统的自动生成。
3.2. 模块结构设计
基于模型驱动的软件开发框架主要包括XML建模文档、MDR运行时环境(XML解析器、HTML生成器、JavaScript脚本、CSS脚本、XML执行机制)、DBOperation等,其基本关系如图4所示。
MDR运行时环境主要用来解释和执行由建模子系统生成的XML持久化文档,并最终生成可执行的系统。该子系统包括以下几个模块:XML解析模块、界面生成引擎模块、XML工作流处理模块等。其中,XML解析模块首先利用预置的Shema模型对文档进行有效性验证 [14],验证通过则获取XML文档所包含的模型信息,包括界面中每个组件的具体信息,之后将获取的信息装填在对应组件实例,存储在公共静态容器中。
界面生成引擎首先封装一组创建基本HTML组件的API,然后构建XML文档模型与目标语言之间的映射转换关系;各类映射相互作用和相互促进,完成系统的数据处理、业务处理、逻辑调度、界面显示等功能。XML最初设计的时候是面向静态数据的,主要用于数据存储和展示,它在处理动态数据方面表现很弱。在考虑管理信息系统的动态交互方面,创新性地在XML标签中增加了几种类似C/C++中常用逻辑语法,如if、elseif、endif、else、goto等,并为上述元素添加了可执行模块的支持。此外,本文还采用了XML的数据格式表示能力,将不同的信息格式进行统一,实现了应用程序之间的数据交换,保证了数据的正确接收。
3.3. 设计框架的实现
设计框架的实现主要包括静态界面模型的建模和动态界面模型的建模。
1) XML标签规范
通过构建自定义标签及界面组件,完成对静态界面模型的建模。即采用Table控件类、Form控件类,Menu控件类三大类界面组件,实现数据的显示,数据的采集及分块显示和建立界面菜单索引等功能。同时,为了更好地快速完成静态界面模型的建模,论文预置一套包含基本的标签名称、定义、属性、父元素、子元素、实例等基本属性XML页面建模标签规范。
2) 组件规范(XML可执行动作)
静态界面模型是依靠XML标签规范对业务逻辑进行静态描述。动态界面模型建模是为用户提供信息交互功能,一般以需求业务逻辑引擎作为支撑,在业务逻辑静态描述的基础上,添加可执行的标签语句,实际运行业务过程。而业务逻辑引擎由连接组件和业务组件构成。连接组件可以使界面组件和数据库实体关联起来,针对不同的数据显示与数据存储需求,可以定义满足不同需求的连接组件,一般可以实现数据的增加、删除、加载等工作。业务组件是具有执行特定的业务处理操作的功能,通过提炼系统中可重用业务模块,并封装成业务组件,帮助用户完成应用系统的业务建模工作。连接组件关注的是数据库实体与界面之间的数据传递,而业务组件则关注的是如何实现可重用的业务处理流程。
3) XML建模
标签规范和组件规范是框架实现的前提和基础,进行XML建模是框架实现的关键。XML建模包括首页建模、菜单建模以及业务建模等。以首页建模为例,通常情况下,企业信息管理系统首页主要为登录及注册。就拿登录来讲,假设登录页面上有用户名、密码及登录按钮,并且在点击登录按钮时对输入的用户名进行判断,如果为空则警示ERROR消息,如果对照数据库中相应人力资源表中的用户名、密码完全正确则跳转到信息系统的内部首页。
4. 应用实例
论文将构建好的框架实际应用到企业信息管理系统的二次开发平台中。开发人员使用框架可以快速完成一个业务逻辑应用的开发:
1) 页面布局。把描述用户交互界面布局的ASPX文件,放置界面组件容器。
2) 菜单建模。描述页面导航的XML文件,实现业务菜单对应的页面跳转。跳转网址的后面附带一个Action参数,根据页面配置区分该Action要加载的页面描述XML文件,使得页面布局得到重用。
3) 页面配置。描述菜单模型中与Action参数对应的页面模型、流程模型以及业务处理类的XML文件。一个业务流程对应唯一的跳转Action参数以及页面模型,对于业务逻辑操作完全一致的流程,可以使用相同的流程模型。
4) 页面建模。描述用户界面的内容(各种组件)的XML文件。
5) 流程建模。描述页面使用的业务流程的XML文件。
如图5所示结合管理信息系统中备忘录的设计实现的实例应用。
图5中,备忘录的数据库设计,包括备忘名称、内容、时间等信息,数据库设计时需要每个表单信息的数据类型等。随后,通过备忘录菜单建模和备忘录XML建模得到如图6所示的备忘录显示效果图。快速而有效地开发过程,证明了已构建模型在企业信息管理系统的二次开发平台中应用的有效性和实用性。

Figure 6. Memo database display rendering
图6. 备忘录显示效果图
基金项目
国网浙江省电力有限公司科技项目资助。