所谓Step Modification,是指管理员可以任意控制当前流程的执行步骤,比如以下的需求:
误操作回退:当某一级审批人误操作后(例如误点击了提交按钮),怎么在下一级审批人审批之前退回,重新审批。
QuickFlow内置了这个功能, 可以允许管理员对工作流步骤进行管理。
当前版本(Build100316)的Step Modification只支持QuickFlow+VS2008(InfoPath或aspx form), 并不支持QuickFlowDesigner设计的流程.
下面看个例子:
1)用VS2008新建一个SharePoint顺序工作流。
2)添加对QuickFlow.dll的引用,并修改工作流的基类为QuickFlow.FlowchartWorkflow
3)添加一个Start活动,指定其CorrelationToken属性,并添加两个Task活动,添加一个EnableStepModification活动。
如下图。
4)修改workflow.xml文件,指定ModificationUrl和ModificationID
如下:
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Workflow Name="QFExamples_StepMod" Description="My SharePoint Workflow" Id="f5b50d75-85da-48d3-9775-2616c3caea4b" CodeBesideClass="QFExamples_StepMod.Workflow1" CodeBesideAssembly="QFExamples_StepMod, Version=1.0.0.0, Culture=neutral, PublicKeyToken=dc008f2bb43d9b78" ModificationUrl="_layouts/QuickFlow/WrkMod.aspx" > <Categories/> <MetaData> <Modification_93a2410e-8590-44c2-a6cd-4ef60347b380_Name>Step Mod</Modification_93a2410e-8590-44c2-a6cd-4ef60347b380_Name> <StatusPageUrl>_layouts/WrkStat.aspx</StatusPageUrl> </MetaData> </Workflow> </Elements>
5)部署工作流。
6)测试
启动工作流后,在工作流状态页面多出一个Step Mod链接
单价这个链接即可到步骤管理页面:
本文示例代码下载:
http://cid-7f5a25cdf47d03e6.skydrive.live.com/self.aspx/QuickFlow/QFExamples^_StepMod.zip
注意:
请下载最新版本:http://quickflow.codeplex.com/
Build100316)之前的版本StepMod页面会出错。
或者,你可以手工修改QuickFlow/StepMod.aspx的Page指令为:
<%@ Page MasterPageFile="~/_Layouts/application.master" Language="C#" AutoEventWireup="true"
CodeBehind="WrkMod.aspx.cs" Inherits="QuickFlow.UI.ApplicationPages.WrkMod,QuickFlow.UI.ApplicationPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ec1e0fe6e1745628" %>
后记: Build100320以上版本已经支持QFD设计的工作流启用StepModification了,详见:
http://www.cnblogs.com/jianyi0115/archive/2010/03/20/1690566.html