我今天学习了审批流转的知识:
1,为什么要有审批流转(目的)
2,审批流转模块要实现的功能(要求)
3,解决方案与界面
1,目的
1,审批流转就是把单位内部的各项审批电子化,如工作请示、出差申请、采购申
请、报销等日常工作流程。
2,审批流转所用的流程是表单流转的步骤,其核心是表单(或叫做文档),流程
是为表单服务的,且一个表单对应一个流程。没有表单的流程没有意义。
2,要求
1,方便的定义/修改与管理流程
2,方便的定义/修改与管理表单模板
3,执行审批流转
4,方便的查询所有的表单记录
3,方案
1,方便的定义/修改与管理流程
1,使用人员是系统的管理员(不是程序员),要提供简单友好的设计界面
2,最好是Web流程设计器(可以使用vml技术),即在网页中通过简单的操作
或设置就可以完成一般的审批流程。可以支持一般流程常用的一些逻辑或
条件设置,但是复杂的逻辑(Decision或Assignment等)还是要通过代码
配合才可以完成,且实现起来比较复杂。
3,Web流程设计器比较复杂,可以使用Jbpm提供的流程设计器做为替代方案。
(但他对用户不友好,需要学习很多东西且有bug,不适合最终用户使用)
2,方便的定义/修改与管理表单模板
1,使用人员是系统的管理员(不是程序员),要提供简单友好的设计界面
2,最好是Web表单模板设计器,可以方便的制作各种表单模板。表单模板中要
展现出相关的业务数据,如请假单的模板中要有请假时间与请假原因等信
息(可以通过改造FCKeditor实现)
3,使用FCKeditor改造较为复杂,且与课程关系不大,所以采用设计最终的表
单模板代码的方法(用FCKeditor最终也是生成表单模板的代码),所以要
有一个表单模板管理的功能,用来配置表单模板的信息
3,执行审批流转
1,对于表单有三个操作:创建、审批、查询
2,表单有三种状态:"正在审批中"、"未审批通过"、"已审批通过"
3,创建,创建一个新的表单,并且开始流转(要启动一个新的流程实例)。
在整个的审批流转过程中,表单状态都为"正在审批中"
4,审批,对下级呈报的表单文档等进行审查并予批示。当任一审批环节审批
不通过时,本次流转结束,表单状态为"未审批通过";如果所有的审批环
节都审批通过,表单状态为"已审批通过"
5,查询,查询所有的表单记录
4,方便的查询所有的表单记录
5,添加新审批流程的步骤与使用说明
1,先添加流程定义,再添加表单模板。因为表单模板一添加就可以使用,但
是没有设置流程的表单不能正常使用,所以添加流程要在添加表单模板之
前(可以在表单模板中增加一个"是否可用" 的属性,那么在起草申请时就
是显示所有可用的表单模板了)
2,正在使用的表单模板应不能修改,可以采用流程定义的版本机制解决,让
每次修改的表单模板都是一个版本同时存在
4,设计实体
0-1,版本机制是解决流程定义的修改问题,每次使用时应使用最后一个版本(最新)
的流程定义
0-2,什么是Serializable
1,表单模板配置
1,每个表单模板对应一个流程定义,但不是某个具体版本的流程定义。应保
存流程定义的名称,在使用时是取指定名称的最后一个版本来使用
2,表单的模板在指定地址时,是按照制定好的规则,比如开头的'/'代表应用
程序的路径。可以使用打开一个窗口选择某个文件的效果。
2,表单实例
1,表单实体要能存储所有类型表单中的业务信息,可以使用一个Map属性来存
放,其key是String型,value是Serializable类型,这样就可以存储各种
表单业务数据了(String/Date/Number等)
2,表单标题格式:${表单名称}_${申请人姓名}_${申请日期}。
如:"请假单_张三_2009-07-13"
3,在与Jbpm的实体关联时,采用只保存他的id的方式,因为Jbpm的实体的映
射文件我们不能修改。
4,FlowForm的主键类型使用 long 型,因为他要做为流程变量保存