公司对于代理人在流程中有这样的应用:
- 当用户设置了代理人之后的任务,用户和代理人都要能看到这个任务;
- 当用户设置代理人时,已有的任务需要添加代理人,并通知代理人处理;
- 当用户取消代理人设置后,原来代理人未完成的任务,需要重新回到用户的任务中。
经过昨天对ActorId和PooledActors的研究,想出这样一个解决方案,基本上完成了上面所需要的功能。
对于第一个要求,只需要设置TaskInstance的PooledActors这个属性给用户及代理人,这样用户及代理人都能看到这个任务。在代理人或用户确定要处理这个任务后,会进行check out的动作,把这个任务的ActorId设置为自己的id。
第二、寻找此用户的所有未完成的任务,然后设置PooledActors,并把ActorId设置为null,再通过邮件通知代理人有新的 代理任务。
第三、取消的时候,还是遍历所有未完成的任务,再把已经共享出去的任务,重新收回,即设置ActorId为用户ID。但是那些已经被check out的任务,就需要另外处理。
以上就是在ActorId和PooledActors两个属性的基础上做的一个小小应用。
经过这几天对jBPM的深入研究,对jBPM有了很大的了解。比以前了解的更加深入。在对类结构和表结构做了一次对照分析之后,对各个对象之间的关系,及所存数据表有了深一层的任务。:)
补充:
通过taskInstance.getSwimlaneInstance.setPooledActors(),可以重新设置共享任务的候选参与者。