在企业级应用中,文档审批流程是常见的需求之一。SharePoint提供了强大的工作流引擎,可以方便地实现审批流程。本文将介绍如何实现一个类似于“Out of Box SharePoint approval workflow”的多用户审批流程,即当所有用户审批通过后,文档进入下一个状态。
在SharePoint中,审批流程通常是顺序执行的,但有时需要实现并行审批。例如,一个文档需要多个部门负责人审批,只有当所有负责人都同意后,文档才能进入下一个审批阶段。
要实现这样的并行审批流程,可以通过修改状态机工作流来达到目的。以下是实现步骤的详细说明:
首先,在工作流中添加一个新的状态。这个状态将用于表示文档正在等待所有用户的审批。
在新状态的初始化过程中,需要创建两个任务,每个任务对应一个审批用户。为了区分这两个任务,需要为它们设置不同的相关令牌(Correlation token)、任务ID和任务属性。
接下来,需要添加两个事件驱动活动。这些活动将在任务状态发生变化时触发。
为了跟踪每个并行任务的完成情况,可以设置一个标志。当任务状态发生变化时,相应的标志会被设置为true。
在事件驱动活动的Invoked事件中,需要检查所有并行任务的标志是否都为true。如果是,那么可以设置工作流进入下一个状态。
虽然手动编写代码可以完成上述任务,但更推荐使用并行活动来实现。以下是代码示例:
// 示例代码,仅供参考
public void OnTaskChanged(object sender, WorkflowEventArgs e)
{
bool flag1 = CheckFlag1();
bool flag2 = CheckFlag2();
if (flag1 && flag2)
{
SetNextState();
}
}
可以从以下链接下载完整的代码示例:
通过上述步骤,可以在SharePoint中实现一个多用户并行审批流程。虽然这个过程涉及到一些代码编写,但通过合理设计和使用事件驱动活动,可以有效地实现这一需求。
在实现过程中,需要注意以下几点: