任务管理后台之工作流


目前关联系统有:报表编制工具,填报审批端(web前台),任务下发端(web后台),本系列文档主要介绍web后台部分.

任务管理有介绍,目前系统中的任务都会选择一个工作流,然后选择该工作流对应的角色流节点,进行下发..启动任务的时候实际上启动的是工作流.
本篇主要介绍系统使用的工作流引擎,开源的工作流Activiti5
可参考的一些网址(开源的工作流有很多,我们系统中采用的是Activiti)

  1. 工作流定义 http://baike.baidu.com/view/60285.htm?fr=aladdin
  2. activiti官网 http://www.activiti.org/
  3. [临远的lemonOA]使用activiti做的一个开源oa.http://www.mossle.com/
  4. [咖啡兔个人网站]较早研究activiti的人 http://www.kafeitu.me/

阅读以上给出的参考网站.定会对activit工作流有较深的认识.
此处班门弄斧,稍作介绍.
历史, JBoss jBPM的一个架构师,到了Alfresco,跟另一个大牛一起建的项目,如果熟悉jbpm那么做activit就很简单.

名词解释

  1. 用户 不解释,参与activit流转的用户信息.引擎自身有自己的用户表.但通常实际项目会有自己的用户表,通过一定的手段,使两边数据同步.
  2. 用户组 不解释,用户多了的时候,方便管理添加组概念..把多个用户拉入一个组后,就可通过设置该组而达到设置用户的目的.
  3. 组用户关系 多对多的关系,不解释,一个用户可在多个组中,一个组可以保护多个用户
  4. 流程模型 比如当你在心里想一个请假流程,可能包含的一个个环节,一步步操作时,你在想的就是请假流程的模型..模型是对流程定义的图形化描述,信息以字节的方式存储在数据库中,模型可以导出为流程定义文件.可以发布供引擎使用.
  5. 流程定义文件 流程定义的xml文件描述..该文件可以被解析为图形,在发布前只是一个xml文件.数据库没有信息,可以通过某些工具生成该文件,比如某些自定义的流程绘制工具,通过拖拉图形,最后生成的是一个能够被 工作流引擎识别的xml文件...然后用引擎解析该文件进行相关操作.
  6. 发布的流程 模型以及流程定义文件,只是描述了流程流转的环节以及参与者等相关信息.只有发布后才可供引擎使用,发布前引擎会做一些必要的验证,确保该流程定义无误...发布后,引擎会把流程定义的相关信息作为某一个版本存到数据库中.(新增部署时间,版本后,是否挂起信息). 发布的流程,完整地包含了流程运行所需要的信息.包括流程图,流程xml描述
  7. 同一个流程定义文件,或者模型,可以多次发布,如果发布n次,数据库就会有该流程的n个版本的信息.版本号递增,默认流程实例使用的是:最新版本的流程定义信息.
  8. 流程实例 发布后的流程是:可启动的流程.当启动一个流程的时候,默认就生成了该流程的一个实例.对于运行中的任务来说,流程实例才是真正关心的对象.一个流程实例通常包含多个环节,当各个环节处理完后 流程实例就成为历史
  9. 任务当有了流程实例的时候,一个个的环节就称为任务..各个环节属于一个序列,由先后顺序.依次执行
  10. 待办任务 运行中的任务,就称为待办任务,当一个任务结束会触发下一个任务,如果没有下一个,则流程实例结束.
  11. 任务参与人 对于一个用户任务,会设置用户参与人,当根据参与人查询运行任务的时候,就是好该参与人的待办任务

    比如请假,用户指全公司员工,用户组相当于职位,
    首先公司会拟定一个请假流程草稿(相当于在做流程模型或流程定义文件).商定员工请假 先提交给经理审批,经理提交给部长审批,部长同意则结束,不同意则驳回,员工可修改请假日期天数等信息,再提交.
    当草稿定下来后,经各部门员工都同意没意见,则可发布.作为规章制度定下来执行(相当于发布的流程)
    如果张三想请假,则启动请假流程.启动后,就正式进入请假审批环节(生成一个流程实例).首先[员工请假]张三有一个待办任务.填写请假信息,进行提交,提交后[经理审批]张三的经理李四会有一个待办任务,提交回到[部长审批]....部长同意,则该实例结束.驳回则从小填写...


通常所说的工作流如上所述,在具体应用中会有一些更详细的细节问题,此处暂不讨论(比如任务回退,任务分支,任务合并等等)

一个完整可用的工作流管理,通常至少包括:
1. 流程图设计:设计模型或者流程定义的工具,通常都是图行化的,拖拉,发布 --(bfr任务中,审批流管理,用mxgraph来建事件流,但不完善,没考虑分支合并,调整的情况)
2. 表单设计:设计用户处理任务时,填写或者查看的信息---(bfr任务中直接嵌套报表 进行填写数据以及审批时查看) 3. 实例管理:用来启动已创建的流程. 4. 任务处理:查看待办任务,完成数据录入,提交驳回等动作---(bfr任务中用非admin用户登陆时的客户端做处理)


bfr扩展应用

  1. 用报表作为表单使用.替换掉在线表单设计.直接通过设计报表,把根据报表模板(表单模板)生成的虚拟报表(实际表单)通过业务主键(bussinessKey)关联到任务中.
  2. 用审批流定义作为流程定义.审批流定义中的事件流相当于工作流定义中的一个个任务环节..而每个任务关键的参与人通过角色流关联...当审批流发布的时候,实际操作就是发布一个工作流.(各个任务环节是事件流).而环节上的参与人,通过角色流动态绑定...
  3. bfr任务管理,属于定制化的.在工作流外再包一层.添加报表(表单信息),确定参与人(选择下发角色流节点).相当于定义了多个未启动的流程实例.使用的是同一个流程.
  4. 当bfr任务启动的时候,根据选择的节点确定要启动的流程实例个数,根据节点的等级确定跳转走向(回退直接退到开始节点),根据角色流节点下成员确定工作流任务参与人...

sunpander -java C#。
Published under (CC) BY-NC-SA in categories tagged with