OA项目课程的第四天,今天的主要内容分析审批流程的需求与指定相应的解决方案,项目代码的编写放到后面的课程。还是那句话,解决问题最重要的是思路,所以项目的需求分析和解决方案非常的重要。

一 审批流转的目的

1.       审批流转就是把单位内部的各项审批电子化,如工作请示、出差申请、采购申请、报销请假等日常工作流程。

2.       审批流转所用的流程是表单流转的步骤,其核心是表单(或叫做文档),流程是为表单服务的,且一个流程对应一个表单。没有表单的流程没有意义。

二 审批流转的解决方案

1.  定义/修改与管理流程

1)使用人员是系统的管理员(不是程序员),要提供简单友好的设计界面

2)最好是Web流程设计器(可以使用vml技术),即在网页中通过简单的操作或设置就可以完成一般的审批流程。可以支持一般流程常用的一些逻辑或条件设置,但是复杂的逻(Decision或Assignment等)还是要通过代码配合才可以完成,且实现起来比较复杂。

2. 定义/修改与管理表单模板

1)最好是Web表单模板设计器,可以方便的制作各种表单模板。表单模板中要展现出相关的业务数据,如请假单的模板中要有请假时间与请假原因等信息(可以通过改造FCKeditor实现)

2)使用FCKeditor改造较为复杂,作为替代解决方案,所以采用设计最终的表单模板代码的方法(用FCKeditor最终也是生成表单模板的代码),所以要有一个表单模板管理的功能,用来配置表单模板的信息

3. 执行审批流转

1)创建,创建一个新的表单,并且开始流转(要启动一个新的流程实例)。在整个的审批流转过程中,表单状态都为"正在审批中"

2)审批,对下级呈报的表单文档等进行审查并予批示。当任一审批环节审批不通过时,本次流转结束,表单状态为"未审批通过";如果所有的审批环节都审批通过,表单状态为"已审批通过"

3)查询,查询所有的表单记录

三 设计实体

1.在Map中存储数据时,若值的类型不确定,可以使用Serializable储存数据值,它表示将不确定的值类型转换为二进制数据再进行存储

2. 表单标题格式:${表单名称}_${申请人姓名}_${申请日期} 例:请假单_张三_2009-07-13

3. 为了便于流程实例的查询,所以应当在审批信息实体和流程表单实体中存储流程实例和任务实例的Id(Long类型)

4.Hibernate配置文件中配置Map需要指定中间表,Map-key,实体值类型需要配置相关关系,非实体值类型,需要配置element