Fork me on GitHub

SharePoint 2013 实现多级审批工作流

上一篇介绍了安装和配置SharePoint 2013 Workflow,这一篇将用SharePoint 2013 Designer Workflow来实现一多级审批工作流。

审批工作流介绍

这个Demo是基于多级审批工作流。以古代上传奏折为场景,共分为3个阶段。当创建者上传奏折时,首先会由对应的上级领导审批,审批通过,交付对应的下一级,审批拒绝时,则整个流程结束,具体的官阶信息如下所示:

然后,我们预先设定,以文档库来作为我们的上报奏折库,所以我们需要为其设定自定义的多级审批工作流。最后创建自定义的Task来存放待审批的任务。

创建多级审批工作流

  • 首先,我们可以创建多个审批Stage(阶段),每一阶段处理不同的流程,如下所示:

  • 接着,在Starting Stage,插入Set Workflow Status(设置工作流状态),输入"审批中",然后再插入Set Workflow Variable(设置工作流变量)来创建一个新变量,如下所示:

  • 然后,点击新建的变量(Approver)的Value链接,选择Define workflow lookup(定义工作流查阅项)Function,为了得到当前用户的上级领导,故在弹出的窗体中设置以下值:

  • 接上一点,一级审批者通过后,需要将任务分配给二级审批者,和上操作一样,不同之处是需要将查询条件换为FirstApprover,具体实现如下图所示:

  • 然后,我们需要最重要的一步,分配审批任务给待审批人,所以需要插入另一个Activity:Start a Task process(开始任务进程),点击these users(这些参与者)链接来负责启动任务,具体参数如下所示:

  • 最后,插入IF…ELSE条件,当审批为Approved时,跳转至Approved Stage,否则,跳转至Rejected Stage。如下所示:

  • 因为,我们工作流最终目的是实现多级审批,即一级审批通过,交给二级审批人,依次审批下去。当审批拒绝时,工作流结束,所示稍稍完善下上面的实现方式,具体流程如下实现:

  • 为了让分配的任务更加细化,让每人只能看到自己的任务,需要在Task中设置Filter,如下所示:

查找工作流异常

工作流发生异常很难找到, SharePoint 2013 Designer Workflow当发生异常时会抛出异常,比如500错误。排查这个异常非常麻烦,需要你的经验法则。比如在Workflow Management数据库中存在一张表DebugTraces会记录发生的错误,如下所示(Name为中文情况下,SharePoint会自动分配16进制的编码来表示Name,这样可能会发生一些意想不到的错误):

测试工作流

在文档库中上传一个奏折,将启动工作流,如下截图所示即为3级审批工作流审批流程日志:

小结

细心的朋友已经发现了,我没有去控制Task的权限,而是用了Filter来进行过滤。事实上,在Task任务库中,每个人(而非指定的Assign To对象)都可以启动(编辑、删除)任务。所以怎样用SharePoint Designer 2013去打断权限继承,只给Assign To的用户分配编辑权限,这实在让我很纠结。

 

posted @ 2014-01-26 20:01  木宛哥说编程  阅读(10106)  评论(16编辑  收藏  举报
multifunction lasers
访问人数