1
2
工作流系统的设计与实现
Version 0.8
Build 2008-08-25
姚旭平 :workflow100<at>gmail.com
张明翊 :zmyliyu<at>gmail.com
3
目录
I系统设计.................................................................................................................................................................. 5
零、前传 ........................................................................................................................................................... 5
一、概念 ......................................................................................................................................................... 14
二、介绍 ......................................................................................................................................................... 16
2.1、工作流模式说明 ............................................................................................................................ 18
2.2、模式在数据库的映射 .................................................................................................................... 22
三、引擎设计 ................................................................................................................................................. 26
3.1、工作流对象状态 ............................................................................................................................ 26
3.2、三层状态关系 ................................................................................................................................ 27
3.3、过程推进 ........................................................................................................................................ 28
II系统实现 .............................................................................................................................................................. 36
四、建模 ......................................................................................................................................................... 36
五、基于存储过程(实现 1)............................................................................................................................ 43
六、基于Spring框架(实现 2)......................................................................................................................... 46
七、基于面向对象(实现 3)............................................................................................................................ 59
八、基于Dataset(实现 4)................................................................................................................................ 63
九、关于事务 ................................................................................................................................................. 63
十、性能提升 ................................................................................................................................................. 71
III 附录 ................................................................................................................................................................... 72
附 1、相关文档资料介绍 .............................................................................................................................. 72
附 2、展望与规划 .......................................................................................................................................... 73
1、初期阶段(工作流引擎) ............................................................................................................... 73
2、中级阶段(业务基础平台) ........................................................................................................... 73
3、高级阶段(网络协同办公) ........................................................................................................... 75
附 3、控制台使用方法 .................................................................................................................................. 77
3.1、点击连接系统 ................................................................................................................................ 77
3.2、业务过程模块 ................................................................................................................................ 78
3.3、过程管理 ........................................................................................................................................ 81
3.4、活动管理 ........................................................................................................................................ 82
3.5、参与者平台 .................................................................................................................................... 83
3.6、当前用户信息 ................................................................................................................................ 87
3.7、调度 ................................................................................................................................................ 89
附 4、本文说明 .............................................................................................................................................. 89
4
概述
我们就像生活在矩阵之中,每天都要和不同的事与物进行沟通,交流,不停的切换自己的角色,早上
要检查工作,发几封邮件,上午要检查一些代码,看看是否已经修正,是否已经归并到版本库;中午要上
IM 和家人,老同事聊聊,下午要检查问题网站,检查局方是否提交了新的问题(需求),并判断是数据问
题还是程序问题,一边督办问题,一边被别人督办。生活单调且无聊,工作繁杂且枯燥。韶华易逝,红颜
易老,当岁月如白驹过隙般的从你身边流走,是否在内心的深处有一种涌动着一股叛逆的冲动?
为什么不让工作有序化?10 年前也有类似的躁动,为什么不网络化?为什么不让网络改变生活?网络
目前的确改变了我们的生活。外地出差,通过 QQ 可以检查孩子的作业并且可以一起玩游戏;晚上要更新
程序,打包文件可以通过 email 发过来;最令人振奋的是:当汶川地震的时候,直升飞机找不到起降点,
也可以通过 QQ 群广播(洪泛请求模式 Flooding)的方式,联系到相关的人。网络改变了我们的生活也逐
渐的改变了社会生活方式。
当我们已经习惯了网络生活,网络工作,随之而来的是大量的信息要读取,大量的数据的提交,那为
什么不更进一步,让我们的工作更加有序?采取工作流,用工作流规范内部流程,协同各个参与者的任务,
参与者关注自己的任务管理器,推动业务流程的流转或者完成。一切都在有序之中,所有都在掌控之中,
万物皆有自己的流程。
5
I 系统设计
零、前传
工作流系统应该包括什么呢?我们先从一个看得见摸得着的东西入手。
图 0.1、人工串行流程
这是一个过程,过程包括了几种不同类型的活动,以及活动之间箭头。通过箭头可以得到当前活动的
后续活动,也可以得到前驱活动。从这里看出来,一个流程最起码要有:
z 起始活动,结束活动,
z 人工活动,
z 活动之间的路径变迁。
图 0.1 描述的是人工活动,需要人(以后用参与者的概念描述,参与者类型有 6 种)来与引擎交互,
但也许执行者不需要人,而是机器本生来执行,执行一段 java 代码,执行 xxxx.cmd (xxxx.sh)或者发一
封邮件,或者跑一个存储过程。那我们就知道活动还可以是自动工具,这自动工具还可以细分。
z 自动工具(class,批处理,脚本),而且有的自动工具是需要定时触发的,我有个存储过程,是
晚上 2:00 跑一次,这就有定时调度的要求。自动活动和人工活动统称为业务活动。
这样的活动能满足了 80%的功能,但有些不足,比如我需要在某个阶段同时作 3 个活动,或者 3 个活
动里面,根据当时的条件值我只要选 1 个,那么就要对上述的过程进行扩展
图 0.2、并发分支流程
图 0.3、条件分支流程