前言:
osworkflow的任务管理很简单,没有专门的任务表,也没有待办,已办,发出,处理任务等等。
只有很简单的查询用户可处理的动作和已经处理过的历史步骤。(注意这里只是可处理的动作和已经处理过的历史步骤,都不是任务)
这显然距任务管理差很多很多。
改造方案:
增加任务表,记录任务的相关属性,可执行人,任务处理人,任务发出时间,完成时间等。
流程定义模版文件中增加任务节点,定义任务的名称,从流程上下文中获取任务的内容和相关属性,定义任务的可执行人。
将产生任务记录和处理关闭任务的过程嵌入到工作流引擎的动作执行函数中。
当流程到达步骤后,根据流程定义模版文件中定义的任务节点,产生任务记录;
当动作执行时,检查任务是否可以执行完成,关闭任务。
因为单独出一张任务表,所以可以增加对任务的管理,查询得出待办任务列表,已办任务列表,做代理待办,催办,逾期未办等等的处理。
可以做到的任务管理:任务发起,待办,已办,催办,督办,收回等等。
任务表结构:
流程定义节点:
例如:
<tasks>
<task name="审核员工:${oCaller.name} 的请假申请" classname="cn.com.fcsoft.workflow.util.MakeTask">
<arg name="taskDesc">内容:${remark}</arg>
<arg name="rolename">部门经理</arg>
<arg name="stepId">5110</arg>
<arg name="role">ROL_0000003</arg>
</task>
</tasks>
增加生成任务的类MakeTask:
增加descriptor中的任务定义类,并在相应的检查校验中增加对任务节点的校验:
总结:
通过增加任务,将任务的生成与处理嵌入到流程引擎中,任务的产生与完成跟流程的运行密切相关,在流程运行时会生成相应的任务,实例递进时完成相应的任务。同时任务记录单独抽出生成一张表,又可以很容易的做待办,已办,催办等等和任务相关的管理。
原来osworkflow是从流程引擎的核心表中去查太麻烦了,也很不灵活,功能太过简单,也不利于扩展。
相关链接;
web工作流管理系统开发之五 开源osworkflow之用户系统改造
web工作流管理系统开发之八 开源osworkflow之任务管理
web工作流管理系统开发之十二 同一张表单在流程多节点中流转的权限控件
web工作流管理系统开发之十三 流程与电子表单集成之事件实现篇