基于JBPM的电子政务系统的设计
扫描二维码
随时随地手机看文章
摘要:随着信息技术的深入发展,电子政务已成为信息化建设的重要领域。由于电子政务建设中软件费用支出巨大,本文提出了一个基于开源工作流引擎JBPM的电子政务系统的设计方案,该设计方案既能提高了电子政务系统性能,又能有效的节省软件开发的费用。
1 引言
所谓电子政务,是指各级政务部门利用现代信息技术,开展办公决策、业务处理和公 共服务等政务活动,提高工作效率、管理能力和服务水平的过程。近几年,随着国内信息化 建设速度的不断加快以及国家对电子政务工作重视程度的日渐加深,电子政务呈现出强劲的 发展势头[1]。
同时,工作流技术也发展迅速,商业和开源工作流产品相继推出。由于电子政务工程中 软件费用支出巨大,在不影响系统功能和性能的前提下,采用开源软件成为电子政务工程降 低成本的一个重要途径。而且,开源软件具有开放的特性,开源社区都在不断的努力提高开 源代码的可靠性,逐渐完善开源系统的质量。
本文在对比分析当今三大开源的工作流引擎的基础上,重点分析并研究了基于JBPM 构 建电子政务系统。基于JBPM 所设计的电子政务系统,既提高了政府的办公效率又降低了系 统开发的费用。
2 开源工作流引擎之间的比较
目前,在工作流领域,具有代表性的开源工作流产品有Shark、OSWorkflow 和JBPM。 在此对这三大工作流引擎进行分析比较,如表1。
由于JBPM 的图形化流程设计工具jbpm-designer 目前只是一个eclipse 插件,只能在 eclipse IDE 环境下使用,故在JBPM 开发中通常使用的是eclipse 开发环境。安装JBPM 很 简单,只需将文件jbpm-STarters-kit-3.1.1jbpm-designerjbpm-gpd-featureeclipse 拷贝到eclipse 安装目录的pulgins 目录下即可。如果安装成功,重启eclipse,就可在 Eclipse 的首选项里发现多了一个JBoss jBPM 。
JBPM 具体的开发流程如下: 1) 初始化数据库。 任何系统都需要数据库支持,jBPM 会把自己的一个初始化数据存 储到数据库,同时工作流的数据也是存储到数据库中的。jBPM 使用了Hibernate 做为自己 的存储层,因此只要是 Hibernate 支持的数据库,JBPM 也就支持。
本文所设计系统使用的 数据库是MySQL,故以MySQL 为例,简单介绍JBPM 数据库的初始化操作: 首先安装MySQL 和MySQL 客户端,安装MySQL 客户端是为了方便查看数据库中的数据; 接着在MySQL 中创建一个库并将下载的文件 jbpm-starters-kit-3.1.1 下的子目录 jbpm 改名为 jbpm.3;最后在DOS 窗口下进入jbpm-starters-kit-3.1.1jbpm-db 子目录,执行 命令“ant mysql. scripts ”。若执行成功,会在bpm-starters-kit-3.1.1jbpm-dbbuild mysql scripts 子目录中生成四个sql 文件。再在MySQL 客户端中的脚本界面执行 “mysql.create.sql”脚本,这样就在JBPM 库中创建了一个数据表。
2) 在Eclipse 中配置JBPM。进入Eclipse 的首选项中找到JBoss JBPM,指定 JBPM 的安装路径,目的是为了在Eclipse 找到JBPM 下的各种 jar 包,设置项目的JBPM 库引用。
3)新建JBPM 项目。进入Eclipse 的主菜单,依次点击文件、新建、项目、JBoss JBPM、 Process Project,取个项目名,点击完成即可。
4)设置Hibernate 的配置文件,主要是设定相关的数据库连接信息。以MySQL 为例,在 JBPM 项目中点击进入hibernate.cfg.xml 文件,其中做如下修改:
<!-- jdbc connection properties -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property nAME="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">******</property>
5) 添加库引用。为了连接JBPM 工作流引擎与Hibernate 持久层的通信,要将Hibernate 的Hibernate3.jar 包添加进JBPM 项目的库引用。而本系统使用了MySQL 数据库,故也要将 其JDBC 库添加进库引用,使用其他数据库与此类似。
6) 具体工作流的开发。使用JPDL 定义工作流,保存在processdefinition.xml 文件中。 流程定义法则参考JBPM 工作流开发指南[2]。
4 电子政务系统的设计与实现
本文采用工作流引擎JBPM作为政务系统的核心,利用Struts +Spring +Hibernate架构[3] 作为政务系统的框架,构建一个结构清晰、实用价廉的电子政务系统。系统架构如图3所示。
通过对上表的分析可以得出:如果开发电子政务系统,JBPM 是最适用的开源工作流引 擎。因为相对于Shark,JBPM 更加灵活,而且以当前流行的Hibernate 作为它的持久层,这使它能在不同的数据库服务器上轻松部署并方便地进行管理,另外还有全面的文档;相对于 OSWorkflow,JBPM 更加简单,可以作为嵌入工作流,给了开发者更大的灵活性。同时,JBPM 系统最大的特色是使用自己的流程定义语言JPDL 来精确描述业务流程,过程建模结合了UML 活动图和状态图的知识,为用户提供了可视化的面向图形的编辑流程定义的方法,业务人员 能很直观的与软件进行交互,更好的发挥了电子政务系统的作用。
3 JBPM 剖析
JBPM,全称是Java BusinESS Process Management,是基于J2EE 的轻量级工作流管理系 统[2]。JBPM 是公开源代码项目,它使用要遵循Apache License,可以免费应用于商业开发。 JBPM 在2004 年10 月18 日,发布了2.0 版本,并在同一天加入了JBoss,成为JBoss 企业 中间件平台的一个组成部分,它的名称也改成JBoss JBPM。JBPM 的系统结构如图2 所示。
由于JBPM 的图形化流程设计工具jbpm-designer 目前只是一个eclipse 插件,只能在 eclipse IDE 环境下使用,故在JBPM 开发中通常使用的是eclipse 开发环境。安装JBPM 很 简单,只需将文件jbpm-STarters-kit-3.1.1jbpm-designerjbpm-gpd-featureeclipse 拷贝到eclipse 安装目录的pulgins 目录下即可。如果安装成功,重启eclipse,就可在 Eclipse 的首选项里发现多了一个JBoss jBPM 。
JBPM 具体的开发流程如下: 1) 初始化数据库。 任何系统都需要数据库支持,jBPM 会把自己的一个初始化数据存 储到数据库,同时工作流的数据也是存储到数据库中的。jBPM 使用了Hibernate 做为自己 的存储层,因此只要是 Hibernate 支持的数据库,JBPM 也就支持。
本文所设计系统使用的 数据库是MySQL,故以MySQL 为例,简单介绍JBPM 数据库的初始化操作: 首先安装MySQL 和MySQL 客户端,安装MySQL 客户端是为了方便查看数据库中的数据; 接着在MySQL 中创建一个库并将下载的文件 jbpm-starters-kit-3.1.1 下的子目录 jbpm 改名为 jbpm.3;最后在DOS 窗口下进入jbpm-starters-kit-3.1.1jbpm-db 子目录,执行 命令“ant mysql. scripts ”。若执行成功,会在bpm-starters-kit-3.1.1jbpm-dbbuild mysql scripts 子目录中生成四个sql 文件。再在MySQL 客户端中的脚本界面执行 “mysql.create.sql”脚本,这样就在JBPM 库中创建了一个数据表。
2) 在Eclipse 中配置JBPM。进入Eclipse 的首选项中找到JBoss JBPM,指定 JBPM 的安装路径,目的是为了在Eclipse 找到JBPM 下的各种 jar 包,设置项目的JBPM 库引用。
3)新建JBPM 项目。进入Eclipse 的主菜单,依次点击文件、新建、项目、JBoss JBPM、 Process Project,取个项目名,点击完成即可。
4)设置Hibernate 的配置文件,主要是设定相关的数据库连接信息。以MySQL 为例,在 JBPM 项目中点击进入hibernate.cfg.xml 文件,其中做如下修改:
<!-- jdbc connection properties -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property nAME="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">******</property>
5) 添加库引用。为了连接JBPM 工作流引擎与Hibernate 持久层的通信,要将Hibernate 的Hibernate3.jar 包添加进JBPM 项目的库引用。而本系统使用了MySQL 数据库,故也要将 其JDBC 库添加进库引用,使用其他数据库与此类似。
6) 具体工作流的开发。使用JPDL 定义工作流,保存在processdefinition.xml 文件中。 流程定义法则参考JBPM 工作流开发指南[2]。
4 电子政务系统的设计与实现
本文采用工作流引擎JBPM作为政务系统的核心,利用Struts +Spring +Hibernate架构[3] 作为政务系统的框架,构建一个结构清晰、实用价廉的电子政务系统。系统架构如图3所示。
图中用户(User)负责以下工作:
(1)登录电子政务系统界面,使用流程定义工具(Modeling Tool)将要进行流程运行的 业务流程定义完整后发送业务请求到中央控制器(ActionServlet);
(2)在系统界面(System Interface)上查看本人所发起的业务流程的详细信息,包括到 达流程路线中各节点的时间以及各节点负责人的意见;
(3)通过系统界面(System Interface)读取由视图模块(JSP)传递出来的业务流程的 最终结果。
接着再分析电子政务系统架构图中其他组件的具体实现:
(1)表示层。在该系统架构中,表示层实际包含了Struts框架中的两个层次结构:控制层 和视图层。控制层是使用中央控制器(ActionServlet)和处理器(Action)实现,视图层 则是使用JSP实现。表示层中的处理器表单(ActionForm)本质上是一种JavaBean,是专门用 来传递表单数据的DTO(Data Transfer Object),它包括用于表单数据验证的validate() 方法和用于数据复位的reset()方法。在表示层的设计中,严格遵照MVC模式设计系统,页面中需要的数据均由控制层传递,用户提交的业务请求和数据都是通过控制层处理,访问合法 性判断、页面跳转、响应用户请求等工作也是由控制层完成;视图层负责显示模型的数据、 接受模型的数据更新通知更新视图、接受用户输入的数据传送给中央控制器和接受处理器处 理后的结果传送给系统界面,将控制层和视图层代码分离。表示层具体实现的流程如图4。
(2)业务层。业务层是电子政务系统的核心,负责处理繁琐复杂的日常事务和工作流 事务,并根据业务需求进行动态扩展,同时业务层还为表示层组件提供必要的接口服务,本 系统使用Spring管理bean的机制。具体的实现流程是:当业务请求流转到业务层时,模型层 (JavaBean、EJB)负责与工作流引擎(JBPM)连接,把业务请求传送到JBPM进行业务流转, 流程定义文件通过JBPM流程解析器解析进入工作流引擎的核心完成业务流转的具体实现。业 务流程实现后将结果返回模型层,模型层再返回给表示层中的Action。在JBPM流程运转中, 模型层还负责与持久层通信,实现对数据库中数据的调用。
(3)持久层。本文所描述的系统采用了轻量级O/R Mapping工具-Hibernate,进行数据 持久化的工作。实例中只要把对象的属性抽象出来,Hibernate就会根据映射文件自动将对 象映射到基于SQL的关系模型数据结构中去,则在使用JBPM的时候可以不用考虑数据持久化 操作的具体实现细节,而只专注于流程的设计,并且业务中需要保存和修改的信息都将会实 时的在数据库中更新,保证了整个数据系统数据一致。这些特性使Hibernate 为电子政务系 统提供良好的持久层支持环境。
5 结束语
本文创新点:JBPM系统的过程建模技术结合了UML活动图和状态图的技术,能实现并提 高电子政务系统的可视化设计,并且,作为当今市场上扩展性能最好的开源工作流引擎,为 电子政务系统的升级奠定了坚实的基础。故基于开源工作流引擎JBPM构建电子政务系统,既 节省了软件开发费用又提高了政务系统的性能。