About GroupTask CompleteRule

Coordinator
Aug 26, 2009 at 9:05 AM

请教:在你的示例中,如何实现以下这样的场景:
在第二级审批中(多人),当其中任何一位REJECT了,这一级中其中未审批的人,就不用审批了,流程自动回到上一级。

你现在的流程是,在第二级审批中,需要二级审批中所有的人都审批(APPROVE或REJECT),流程才能向下或向上流

Coordinator
Aug 26, 2009 at 9:06 AM
Edited Aug 30, 2009 at 6:04 AM

可以用GroupTask的CompleteRule:this.GroupTask1.TaskOutcomes.Filter("Reject")>=1,这样只要有一个人reject,审批就结束,然后流向Decision,可以再进行其他判断。

这样做之前,首先将GroupTask1.TaskOutcomes绑定到一个字段。防止出现TaskOutcomes取不到值的情况。

ref: http://www.cnblogs.com/jianyi0115/archive/2009/08/28/1555917.html

QuickFlow并签有两种实现方式: 

1)采用多个活动,可以用Task或GroupTask或MultiTask,然后指向一个Decision。这样,只有所有并签的活动执行完成之后才会真正执行Decision的判断。
2)采用1个GroupTask或MultiTask,在这一个活动中实现多个任务的分配,默认情况下要所有任务都完成后才会结束活动的执行,如要要实现某个人reject后不管其他任务是否处理,则可以用CompleteRule声明完成条件,如this.GroupTask1.TaskOutcomes.Filter("Reject")>1.但是这里要注意,因为QuickFlow调度逻辑中,真正执行的并不是原始的处于设计器上的那个活动,那只是个原型,运行时,会由这个原型创建一个新的活动来执行,这样,this.GroupTask1.TaskOutcomes
就不能获取到真正的数据,为了解决这个问题,可以吧this.GroupTask1.TaskOutcomes绑定到一个字段,然后取值就没有问题了。