1.引言
1.1. 编写目的
一直以来自己就想写一个工作流管理系统(包括组织模型、流程引擎、流程定义),今天终于提起了笔。从毕业到现在自己在这个方向也摸爬打滚了四年多,其中遇上过各种各样的客户,做过不同行业的项目,而做完之后心中总是有那么一种遗憾。遗憾的是心中缺少一种成就感,对自己做出来的东西感觉不满意,做出来的东西并不能给客户带来工作上的方便,有时候还感觉有了它不但没有减少客户的工作量,反而还增加了客户的工作量。并且从系统本身来说感觉可扩展性差。而之所以会这样的原因是缺少一个灵活的工作流管理系统。为了弥补自己心中的那份遗憾,所以自己确定利用自己的空闲时间来开发一套工作流管理系统。
1.2. 背景
在中国电子政务的大潮下,越来越多的政府、企业、机关单位加入了其中。是潮就有潮起与潮落,潮落后总会留下一些”失败”的项目。这里的失败包括:1、项目(软件)本身的失败;2、项目根本就没有用或用起来(当然包括那些政绩工程、面子工程)。
1.3. 定义
关于工作流的定义不同的组织有不同的定义,而大体意思都相同。就是一群参于者(可能是人、系统、机器等)为了完成某一业务过程(如果公文中的发文、入学报名、参保等)而经历的过程。在这里我所讨论的工作流主要是针对中国国情的电子政务方面的,因为笔者只对这方面比较熟悉,对其它方面的工作流(工业控制等)不敢妄加评论。(针对不同的行业、不同的业务方面应该有不同的工作流系统)。
而在工作流管理系统中,我们首先必须要考虑的是组织模型。因为工作流管理系统应该是建立在组织模型之上的,组织模型中定义的人员是流程的主要参于者。
2.设计说明
程序的主要实现技术为:Struts+Hibernate+Spring
2.1. 类型说明
组织模型中的实体类型主要包括如下五类:
1、 人员
2、 部门(组织单元)
3、 群组(工作组、组)
4、 角色
5、 职务(如行政职务)
各实体之间的关系:
人员---------部门 n-----1
人员---------群组 n-----n
人员---------角色 n-----n
人员---------职务 1-----1
部门---------部门 1-----n
群组---------群组 n-----n
群组---------角色 n-----n
说明:
1、原本设计为 角色-------角色 n---n ,后来想了想,没有这必要。原因如下:
a、 这样设计太复杂。
b、 如果角色中包含角色,最终用户使用也复杂;不能给用户使用上带来方便。
2、角色应该分为两种。一种是全局角色,一种是局部角色。第一种角色在整个系统都是相同的含义,都有用。第二种角色是受一定的范围(部门)约束,针对不同的部门可能会有不同的权限。
3、
2.2. 功能说明
a、 人员的增加、删除、修改、查询
b、 部门的增加、删除、修改、查询
c、 角色的增加、删除、修改、查询
d、 群组的增加、删除、修改、查询
e、 职务的增加、删除、修改、查询