MS Flow的批准流程在批准的时候会重定向到一个批准的界面,这会让用户感到困惑,页面也不友好。为了可以灵活定制化提交/批准页面,并且让用户一直停留在SharePoint中提高用户体验,我放弃了MS Flow的批准流程模板,仅让MS Flow发送邮件,然后使用SPFx web part来实现页面。所以这篇博客介绍在SharePoint Online环境中,如何结合SPFx,列表和MS Flow来实现一个最简单的审批流程。
一, 配置列表
列表的作用是保存审批的状态,在状态更改的时候触发工作流向用户发送通知邮件。
在列表中添加一个状态栏如下:
然后添加审批人栏(Approver),列表结构如下:
二, SPFx webpart处理逻辑
创建一个SharePoint Framework webpart,并且将webpart添加到一个页面上。然后在webpart上添加一个标题和一个提交按钮:
用户填写标题,然后提交,SPFx会根据标题在列表中创建一条记录,同时指定一个批准人,并将Status设置为“待审批”。
三, 配置MS Flow发送邮件
用户提交审批之后会在列表中创建一条记录,因此可以触发MS Flow。
列表的MS Flow配置如下,只是简单地发送一封邮件给审批人,在邮件体中添加一个link,其url是SPFx webpart所在页面的URL,并在URL的参数中添加ID以及do这俩个参数,其中ID的值是当前item的ID,do的值是将要进行的操作,例如approve:
每当用户点击提交按钮,在列表中新建item的时候,审批人就会收到如下邮件:
当审批人收到邮件点击link的时候,会打开SPFx webpart页面,此时根据参数,我们发现这是审批人打开的页面,因此需要将提交按钮改为审批按钮。
当审批人点击审批按钮,SPFx webpart会将记录的状态改为“审批通过”。
然后我们修改Flow如下,现在需要根据状态来发送不同的邮件:
这里添加了一个condition来判断状态,即当状态为“待审批”的时候,向审批人发送通知邮件,否则通知提交人和审批人审批成功。
以上就是使用SPFx + List + MS Flow搭建的一个简单的审批流程。这样做实际上是将Flow承担的业务逻辑,转移到SPFx页面中,同时通过List来维护审批的状态。
这里需要注意的一个问题是,MS Flow并不是实时触发的。MS Flow的触发时间与购买的Plan有关系,最慢的是5分钟触发一次。
除此之外,SPFx也可以直接调用Flow,具体操作请参见:
http://toddbaginski.com/blog/how-to-run-a-microsoft-flow-from-a-sharepoint-framework-spfx-web-part/