JBPM 中如何实现任务回退,并且分配给指定的人
|
SingleSea
2007-02-25
举个例子说:有个task是"申请",它的Actor是多个人.张三提出"申请"后提交给另一个task "审批",审批不通过要退回给张三,而其他人(李四)不会分配到该任务.
我是这样定义的:
<process-definition xmlns="" name="Simple">
<swimlane name="sa_employee">
<assignment pooled-actors="张三,李四"/>
</swimlane>
<swimlane name="sa_lead">
<assignment pooled-actors="王五"/>
</swimlane>
<!-- 申请 -->
<start-state name="申请">
<task name="申请" swimlane="sa_employee">
<controller>
<variable name="name" />
<variable name="day" />
<variable name="note" />
<variable name="comment" access="read" />
<variable name="modifyflag" />
</controller>
</task>
<transition name="提交" to="审批"></transition>
</start-state>
<!-- 审批 -->
<task-node name="审批">
<task name="审批" swimlane="sa_lead">
<controller>
<variable name="name" access="read" />
<variable name="day" access="read" />
<variable name="note" access="read" />
<variable name="comment" />
<variable name="modifyflag" />
</controller>
</task>
<transition name="修改" to="申请"></transition>
<transition name="通过" to="结束"></transition>
</task-node>
<!-- 结束 -->
<end-state name="结束" />
</process-definition>
请指点,谢谢 |
|
|
tomkoo
2007-03-02
这个问题其实也是我以前提到过的问题,在我的项目中也有这样的需求。我是通过程序来实现的。
1、给整个processInstance指定一个流程变量preActor,用来记录上一个节点由谁完成的; 2、当task被打回的时候根据这个preAction在设定任务的Actor就可以了。 |
|
|
wangyong58566
2007-04-16
呵呵。不错的做法。
|
|
|
huangxx
2007-04-25
根据NAME来判别吗?
|
|
|
firewindaa
2007-05-27
直接调用TaskInstance.getPreviousActId()方法,获得上一个任务的执行者,任务回退后,后在任务设定这个Actor就OK了
|
|
|
lyo
2007-07-19
如果上一个 Actor不是一个人呢?例如有几个人审批的,我这个 preActor是哪一个? 就是说我获得上一个任务的执行者如果有很多个,我需要调用多次setActor方法吗?
|
|
|
whk1007
2007-07-20
可以解决的. 你在ASSIGN时候,用assignable.setPooledActors(),这样,每个人都能看到这个TASKINSTANCE, 然后比如张三进去处理,在SAVETASK时,设置taskInstance.setActor("张三");下次打回时,你用张三的ACTOR去findTaskInstances(actor)时,就可以看到.
|
|
|
gabriel80
2008-04-24
恩。想法不错。。我试下啊
|
|
|
linuja
2008-04-28
还有种更灵活的方式,详见这里:http://jbpm.group.javaeye.com/group/topic/4497
|

