1、AO 流程引擎总体设计方案一、 名词。流程表:每设置一个新的流程时,都会设置流程相关的字段信息。设置后生成一张流程表。每按此流程进行一个办事流程时即是此表的一条记录(实例) 。流转单:即处理流程中的各个环节,如科员填表申报环节、科长审批环节等。每个流转单所需要的字段是从流程表中选出的字段。每个流转单实例即是根据选择的字段从流程表的实例记录中进行显示或操作。二、 流程设置2.1 流程表设置在设置流程时,根据其下流转单的情况设置好所要的所有字段信息。设置好后生成一张数据库表。并把流程名称,流程表名等信息记录到一个流程记录表里(这张表只用来记录流程表及流程对应的流程表名) 。默认存在的字段应该有:流
2、程实例名(如:2011 年 3 月消防器材发放管理工作) ,流程状态,父流程表名,父流程实例 id,父流程关联流转单编号,开始时间,结束时间等。2.2 流转单设置。2.2.1 流转单基础信息设置。设置流转单名称,即 流程在此环节时的名称(如科长审批) ;设置流转单编号,编号应该是唯一性的;设置流转单类型:一般流转单或子流程流转单或起始流转单;2.2.2 选择表单字段。字段从流程表中字段进行选择。选择每个字段后,要设置此字段的配置属性:是否只读、是否隐藏;要设置此字段的验证属性:是否必填、验证方法(email 验证、长度验证等) ;要设置此字段对应的控件:HTML 控件:文本框、文本域、密码框、
3、下拉框、多选框、单选框、上传框。及对应的默认数据和备选数据。动态控件:如部门下拉框等。及对应默认数据。要设置此字段的控件样式:高宽等。根据字段的名称流程表名等信息对此字段设置一个字符串标识。在设置字段过程中如果觉得字段不够,应该有操作可以再添加流程表字段。2.2.3 设置流转单显示模板。用一个编辑器编辑流转单的显示形式,要显示对应字段时用字段的标识符进行占位,再显示时根据占位的字符串显示对应的字段。最好可以预览效果。2.2.4 设置流转单操作权限。设置此流转单可操作的部门、岗位。工作组或特定个人。2.2.5 设置前置流转单。指定该流转单的前置流转单,只有当所有前置流转单都是已处理状态时。此流转
4、单才可进行操作。如果前置流转单没有处理完成时,此流转单显示的提示内容。2.2.6 设置前置条件。设置字段的单一条件。如字段的值不为空,或等于某个值等。设置各单一条件之前的与或关系,而组成的综合条件。并要设置如果不附合条件时显示的提示内容。2.2.7 设置下一级流转单设置此流转下一级流转单,配置好对应编号。 (一个流转单转出时,如果下级流转单是一般流转单应该设置它的状态为需求处理,如果下级流转单是子流程要实例化子流程) 。如果要结束流程可以在此设置中设置为特定的标记。2.2.8 设置此流转单在处理时要强行设置为未处理状态的下级流转单。设置此流转单在处理时要强行设置为未处理状态的下级流转单。只要流
5、转单状态被触发为未处理完时,相关设置的流转单都要设置为未处理的。2.3 子流程流转单和起始流转单2.3.1 起始流转单。起始流转单的作用是,提交后生成流程表实例记录。也要设置相应的字段和相应的操作权限及下级流转单。2.3.2 子流程流转单子流程流转单应该要设置记录子流程的流程表名、默认子流程实例名称三、 流程使用3.1 新建工作。选择对应的工作流程后,有起始流转单操作权限的用户才可以新建工作以实例化一个工作流。3.2 待办工作。显示用户需要处理的工作流转单实例及其状态,以及对应的工作流程实例名称等。点击进入后可以操作流转单。3.3 流转单操作。3.3.1 流转单状态初步设定流转单状态有:未处理
6、,需处理,处理中,已处理。3.3.2 流转单前前置条件的判断。先判断前置流转单状态。再判断前置条件状态。如果不附合条件显示提示语。此流转单不可浏览,或只能只读浏览。如果附合条件则可以操作。3.3.3 流转单操作附合条件的、状态为非已处理的流转单可以进行正常操作。初步设定流转单的表单操作有:保存,转出。保存操作,各字段信息保存后,把流转单状态改为处理中。转出操作,提交前要对各字段的进行验证(根据在配置流转单字段时设置的字段验证方式进行验证) 。转出操作执行后,根据下一级流转单的设置。设置下一级一般流转单为需处理,或下一级子流程流转单实例子流程。如果下一级流转单设置是结束标记。则执行结束流程。3.
7、4 流程日志应该对一个工作流实例中从新建实例,到每一次工作流转单的转出操作,到结束都要有日志记录。表用户表oa_users: 真实姓名,用户名,密码,邮箱。用户信息表oa_user_info: 性别、手机等其它信息部门表oa_department : 应该有层级关系,有字段区分是工作组还是真实部门。部门用户表 oa_department_user: 多对多的部门用户关系表,确认用户属于哪个部门。流程表:oa_cf_开头: 流程引擎生成的表。流程实例名(如: 2011 年 3 月消防器材发放管理工作) ,流程状态,父流程表名,父流程实例 id,父流程关联流转单编号,开始时间,结束时间等流程名称表
8、oa_flow_name: 记录流程表表名,流程名,描述,所属部门(多个放在一个字段里记录 ID 组合,0 可以表示通用流程) 。流转单表Oa_flow_stepmodel: 字段应该有:流程表名,流转单名称,编号,类型,下一级流转单,强行关闭流转单,表单模板,前置流转单条件(组合配置) ,前置字段条件(组合配置)流转单字段表Oa_flow_stepmodel_fields: 流程表名、流转单编号、字段程序编码、名称、是否只读、是否隐藏、控件模型编号、样式、是否必填、合法验证、初值等配置,占位字符串。HTML 元素控件Oa_html_control: 编号、名称、类型(动态、静态)流转单操作权限人Oa_flow_stepmodel_user: 流程表名、流转单编号、部门(ID 组合) 、特定人员(ID 组合)流转单实例表Oa_flow_stepentity: 流程表名、流程实例 ID、流转单编号、状态(未处理,需处理,处理中,已处理)工作流中附件表Oa_flow_attachment: 附件类型、附件名称、附件路径、流程表名、流程实例 ID工作流日志表Oa_flow_log: 流程表名、流程实例 ID、流转单编号、流转单名、操作人、时间、备注