MOSS多级审批工作流【Sequential+ConditionedActivityGroup版】v1.1
2007-08-01 23:08 Windie Chai 阅读(8419) 评论(31) 编辑 收藏 举报今年二月份,我开发了一个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日更新部分代码,修正某些情况下任务的分配对象会丢失地问题.