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

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

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

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

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

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

最近终于决定腾出一个分区安装了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日更新部分代码,修正某些情况下任务的分配对象会丢失地问题.

 

来源:http://coding.windstyle.cn/2007/08/01/moss-multi-level-approval-workflow-sequential-and-conditionedactivitygroup-edition/

你可能感兴趣的:(ActivityGroup)