Fire Workflow如何实现自动委派
需求描述:
某领导A休假,休假期间需要将他的工作自动委派给领导B,当A休假完毕后,取消委派。
实现访法:
1)首先在系统中建立一张表,记录委派关系,假设叫做“委派表”吧。里面有两个基本字段:委派人,代办人。
2)扩展BasicTaskInstanceManager里面的org.fireflow.engine.taskinstance.DefaultTaskInstanceEventListener 。将委派逻辑写在protected void afterWorkItemCreated(...)。
委派逻辑如下:
a)取得新创建的IWorkItem对象,假设为theNewWorkItem。如果是领导A的工单,则theNewWorkItem.getActorId()返回的就是A的ID
b)通过theNewWorkItem.getActorId()到委派表里面去查找,看看有无匹配记录,如果有,则调用如下代码(假设代办人是B)
theNewWorkItem.reasignTo(B);
工作流系统同时会记录A和B的工单情况,而且可以清楚地表明B是代A工作。
总结:
这种方式实现的委派很灵活,委派和取消委派直接体现为对“委派表”的增删改操作。 1 楼 itstarting 2009-08-05 委派是否包含两层含义:
1、当前已经给我的workitem,自动转发给受委派者;
2、新创建的workitem,re-asign-to受委派者,就是你说的这种情况。
前者怎么办?需要处理吗?听听你的高见 2 楼 nychen2000 2009-08-05 "当前已经给我的workitem"
显然,已经发给我的工作,我是看到了的,这种情况下一般无法“自动”了。需要我点击一下界面的某个按钮,委派给其他人。最终仍然调用workItem.reasignTo();
万一,我没有看到呢?说是在的这时一个业务问题,不是一个技术问题。如果你一定要某种程度的“自动”,还是可以在workItem.reasignTo()上做文章。但我觉得很可能并不是业务的真正需求,已经发给我的Workitem还是让用户“手动”好一些。 3 楼 itstarting 2009-08-06 其实这种需求也满“中国国情”的:领导有了很多工作项,让秘书办,不可能“手工”(都懒成这样了还让他手工,找抽),给账号密码秘书也不是好提议。
我的做法就是在获取工作项的时候进行解析,逻辑比较复杂,对性能有一定的影响
有些时候,需要你这种坚持:)