基于JAVAEE的工作流引擎的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与现代化
2008年第7期
JIS UAN JI YU X IAN DA I H UA
总第155期
文章编号:1006-2475(2008)07-0046-04
收稿日期:2008-05-15
作者简介:陈艳(1979-),女,湖北石首人,三峡大学电气信息学院助教,硕士,研究方向:计算机技术与应用。
基于J AVAEE 的工作流引擎的设计
陈 艳
(三峡大学电气信息学院,湖北宜昌443002)
摘要:提出了一种基于J AVAEE 的工作流引擎设计方案。详细介绍了工作流数据存储以及流程运转各个环节的实现原理。关键词:工作流;引擎;J AVA EE
中图分类号:T P311 文献标识码:A
Design ofW orkflow Engine Based on JAVAEE
C HEN Yan
(Co llege o f E lectr i ca l Eng i neer i ng and Infor m a tion T echnology ,T hree G orges U n i versity ,Y ichang 443002,Ch i na)Ab stract :T his paper presents the design sche m e o fw ork flow eng ine based on J AVA EE and the rea li zati on pri nc i p l e o f w orkflo w da ta st o rage and flo w runni ng on eve ry li nk .K ey w ords :workfl ow ;eng i ne ;J AVA EE
0 引 言
近些年来,有很多成熟的软件来满足企业的信息
化需求,如办公自动化软件(OA )。认真地剖析办公自动化软件得以成功的原因,除了计算机网络设备的普及外,根本原因就是办公自动化软件的核心系统的设计理念。
工作流系统是办公自动化软件系统的核心部件,它的功能是实现业务数据在由网络连接起来的企业计算机系统中运行。它使得原本单独的计算机个体真正地组成了一个有机的能够自动化运行的网络系统。
工作流软件系统的核心实现是一个被称之为/工作流引擎0的程序。通常这个程序被作为一个服务程序安装在服务器上,通过接受客户端发送的请求来进行处理,再把经过处理的信息反馈回客户端。工作流引擎按照事先定义好的流程规则,自动地判断数据状态,然后将其自动转发给需要的人。
工作流系统除了应用于办公软件外,现在已经取得更广泛的应用,如生产销售物流等各个领域。这些领域的数据处理自身没有流程的概念,但是如果考虑的范围更大一些就可以发现,这些数据实际上还是处
于一种有序的业务流程运转之中。比如说在零件的生产过程中,必须按照一定的工序来完成,有明显的分级传递过程。
笔者基于J AVAEE 设计了一套工作流引擎程序,按照目前投入使用来看,能较好地解决企业的各种业务流程。
1 工作流管理系统
工作流管理系统主要由三类构件组成,这三类构件分别是:
(1)软件构件:完成工作流管理系统不同组成部分功能的实现;
(2)系统控制数据:工作流管理系统中一个或多个软件构件使用的数据;
(3)应用与应用数据:对于工作流管理系统来说,他们不是工作流管理系统的组成部分,而是属于外部系统和数据,他们被工作流系统调用来完成整个和部分工作量管理的功能。
工作流管理系统的体系结构如图1所示。
2008年第7期陈艳:基于J AVAEE的工作流引擎的设计47
图1工作流管理系统的体系结构图
2工作流引擎的数据存储原理
数据的存储主要借助于/XML+数据库0的方式完成。系统中定义的流程以及流程运转实例数据以X M L的方式进行封装,存储于数据库中,系统调用时从数据库中读出来,将XML进行解析呈现到页面。之所以采用XM L+数据库相结合而没有直接用XML 文件存储的原因,主要是因为考虑到读取性能方面,文件输入输出的速度比读取数据库要慢。X M L代码框架如下:
,
...
X M L代码以
3工作流引擎的设计
3.1工作流引擎类模型设计
工作流引擎的设计实际上是引擎类模型的设计。
类模型反映各类之间的各种关系,如图2所示。
图2工作流引擎模型UM L图
eng i n e类是引擎的核心类,引擎的主要功能函数都集中在此类中,oa Rule类是规则引擎类,用来定义流程定义当中的各类规则,fl o wCache类的作用是将流程存在缓存中,便于随时快速的读取,以此来提高引擎的性能,flo wBox类用于存取各种状态的流程,如待办流程、已办流程等。fl o wT i m eContro l类是引擎时间控制器。
3.2运行时数据描述
工作流运行时,工作流根据工作流的定义会产生一系列的进程。但是工作流引擎从理论上来讲,引擎是无状态的系统,引擎又需要与大量的用户数据打交道,并且还需要识别不同的用户和流程。因此,需要实现一个存储系统来为工作流引擎的实时系统服务。
其实,工作流引擎所需要的实时数据的模型与工作流定义是相似的。工作流定义首先声明了一个工作流,然后再细分这个流程,划分成很多个业务环节。工作流的定义就是定义业务逻辑怎样一个接一个的运行。用图3表示这个数据模型。
图3流程运行时数据模型
而运行时工作流引擎也是在定义数据的指挥下,将业务进程接力发送的。工作流在接收到用户启动流程的请求后,会为用户所启动的这个流程建立一