MOSS多级审批工作流【Sequential+ConditionedActivityGroup版】v1.1

本文介绍了一种使用ConditionedActivityGroup改进MOSS多级审批工作流的方法,简化了流程并提高了效率。通过减少While和IfElse的嵌套,使得工作流更加清晰易维护。

今年二月份,我开发了一个MOSS多级审批工作流,它实现了如下图所示的流程:

r_preview.PNG

之后我在《
SharePoint多级审批工作流开发文档[Sequential]》这篇文档中详细的描述了整个开发过程并提供了项目源码下载。

其实我在匆匆的写这篇文档的时候,对MOSSWF连一知半解都谈不上。

所以为了实现审批流程中常见的动作-“回退”,我用了好几层的WhileIfElse嵌套,最终整个工作流的流程图如下:



看着这么长而且繁复的流程图就知道这是比较笨的方法了。

最近终于决定腾出一个分区安装了Windows Server 2003 MOSS,然后把这个审批工作流改了一下,现在的流程图是这样的:




清爽了很多吧?

忘记那些讨厌的While+IfElse嵌套吧,我们只需要一个活动就可以代替它们: ConditionedActivityGroup

简单的介绍一下ConditionedActivityGroup活动:

  • 可以包含多条分支;

  • 每条分支都有一个 WhenCondition 条件用来决定它是否可以被执行;

  • 如果不设置分支的 WhenCondition 条件,那么这个分支只会在第一次循环的时候执行;

  • ConditionedActivityGroup UntilCondition 条件可以决定什么时候结束该活动,如果 UntilCondition 条件一直不满足, ConditionedActivityGroup 就一直循环;

  • 如果没有设置 UntilCondition 条件,则 ConditionedActivityGroup 会一直循环直到它的分支都不再执行为止。

也可以把ConditionedActivityGroup理解为一条包含若干if语句的do…until语句。

 

修改后的工作流项目下载:ApprovalSequentialEdition_with_CAG.zip

 

最后谢谢一些朋友对《SharePoint多级审批工作流开发文档[Sequential]》这篇文档的支持,本文对其实现进行了改进,但是我必须说,审批这样的流程并不适合用顺序工作流来实现,用WF的另外一种工作流-状态机工作流会更好。

本文写给一些总喜欢在顺序工作流里实现回退的朋友。


注:于2007年8月5日更新部分代码,修正某些情况下任务的分配对象会丢失地问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值