需求描述:
某领导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工作。
总结:
这种方式实现的委派很灵活,委派和取消委派直接体现为对“委派表”的增删改操作。
某领导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工作。
总结:
这种方式实现的委派很灵活,委派和取消委派直接体现为对“委派表”的增删改操作。