7.创建审批流(2)

我再处理上次创建的审批流程

  1. 开始编辑上次创建的流
    pw4-1
  2. 审批后面追加动作
    pw4-2
  3. 选择Sharepoint
    pw4-3
  4. 选择更新项
    pw4-4
  5. 输入网站地址和列表
    pw4-5
  6. 选择ID
    这意思是此流程里最初的动作【When a new item is created】里面的Item 的ID的意思
    pw4-6
  7. 因为标题是必填,选择标题
    pw4-7
  8. 如果有些选项里有默认值,把它变成空白
    pw4-8
  9. 状态里输入【已提交】
    pw4-9
  10. 审批日期里面选择色UTCNow
    pw4-10
  11. 审批人里,选项审批动作的邮箱地址(虽然我们的的例子的话审批人是固定,为以后有复杂的流程我们放审批人)
    pw4-11
  12. 填好的结果是这样
    pw4-12
  13. 另外,拒绝后面也是追加同样的动作,状态为【已拒绝】
    pw4-13
  14. 然后保存流,保存后可以再试一下提交申请
  15. 审批后,确认Sharepoint 上的列表,看到状态栏已经是【已审批】
    pw4-14
  16. 同样PowerApps上也看到
    pw4-15

6.创建审批流(1)

已经创建了提交页面,接下来创建审批流程。在此用 PowerAutomate (旧 Microsoft Flow)自带的审批流程。

这次我们使用,Sharepoint项目出来的时候自动启动流的方法。(另外,PowerApps的按钮点击的手启动流也有方法)

  1. 登录PowerAutomate (flow.microsoft.com)
  2. 选择模板里面的【审批】分类里面的【添加新项后开始审批】
    虽然可以用空白流来开始做,为了简单我们这次用模板
    pw3-1

  3. 下一个请求允许页面点击继续
    pw3-2
  4. 马上从模板出来基本的流。要开始输入些必要的项
    pw3-3
  5. 开始部分
    地址:创建采购申请书的列表的网站
    列表:采购申请书
    pw3-4

  6. 输入审批者
    这次为了简单我输入固定的审批者,Office365里面提前准备好的账号(ta@851859.com
    pw3-5

  7. 按【保存】,保存后可以测试运行
    pw3-6

  8. 使用已经准备的PowerApps上,创建新的项,点击提交按钮
    pw3-7

  9. 他开TA的邮箱,看到审批依赖邮件
    pw3-8
  10. 点击邮件里的【审批】按钮,可输入留言
    pw3-9
  11. 审批后,邮件里显示已审批
    pw3-10
  12. 申请者打开邮箱,就看到审批结果的邮件
    pw3-11
  13. 如果审批者拒绝的话,申请者的通知如下
    pw3-12
    pw3-12

以上,已经完成了微软准备的基本模板的审批流程。不过这样的话审批结果只在邮件和PowerAutomate页面里,然后PowerApps 或者Sharepoint 列表等都没有审批信息。为了创建真正能用的应用,要在此流上再修改改善。

5.创建提交申请页面

先创建申请页面

左边的菜单的首层代表一个页面。默认出来的EditScreen1是新建页面和编辑页面的功能,但这次我们只准备新建页面。我利用已有的EditScreen1 来快速创建新建页面。

  1. 复制EditScreen1

    powerapps2-1
    这个操作后,里面的名称自动使用 _1 来生成,虽然有点难看但没有实际的问题。我只改了首层的页面部件改成【新建页面】了
    powerapps2-2

  2. 再改页面里面的标题,改成【新建采购申请】
    powerapps2-3
  3. 调整输入栏
    因为默认出来的页面的输入栏不是全部,所以要追加或者不要的东西删除
    选择EditForm1_1 – 属性 – 编辑栏
    powerapps2-4
  4. 这次追加了状态和附件,结果如下(按环境有不同的默认栏,都要调整)
    powerapps2-5
  5. 影藏状态栏
    因为状态栏是不要让申请人自己输入(下面用按钮来操作),影藏状态栏
    powerapps2-6

    接下来要添加提交按钮

  6. 打开左边的菜单 – 选择插入 – 选择按钮
    powerapps2-7

    选择后新的按钮出来,叠在已有的Form上了
    powerapps2-8

    因为当前的页面表头后Form全部满,而且按钮不能放在已有的Form内部,所以我们准备放按钮的空间
    为了准备按钮的空间,把已有的EditForm 的边框要拉上去
    powerapps2-9

  7. 按钮的名称也要更新
    powerapps2-10

  8. 按钮的动作
    接下来,要处理按钮的动作。按钮的处理要有2个:

    (1)状态改成【已提交】
    (2)保存按钮

    状态改成的动作,不是简单的直接输入【状态】=【已提交】(所以PowerApps 也并不是Excel 那样的那么简单)

    要准备一个变量,变量分配到栏,然后点击的动作里带入变量的值,需要这样的流程

  9. 给状态栏分配变量
    选择状态列里面的DataCardValue,在Default 里面输入 var_status.
    如果输入栏时灰色的话,点击上面的解锁按钮后可以输入
    输入后会有错误提醒,但暂时可以忽略
    powerapps2-11

    接下来定义按钮的动作

  10. 选择按钮,确认上面的【OnSelect】,删除默认的false,然后输入
    Set(var_status,”已提交”);

    输入后刚才的报错提醒会消失(因为有了Set 才变量 var_status 是能用了)

    这样的话只定义变量。为了点击按钮后保存项目,后面再加SubmitForm(EditForm1_1);

    powerapps2-12

  11. 其实刚才的SubmitForm 是默认有的右上角的勾选按钮里面有的代码。现在这个勾选按钮不要了,所以删除
    powerapps2-13
  12. 一删除勾选按钮,报错提醒出来,因为页面标题的宽度用勾选按钮的宽度来计算出来。所以从这个公式里,勾选按钮的部分也除掉
    powerapps2-14powerapps2-15
  13. 最后,以后新建的时候要用这个新的Form, 为了这个,把首页的新建按钮的代码页要改。选择BrowseScreen1, 右上角的加号,然后里面的代码默认是
    NewForm(EditForm1);Navigate(EditScreen1, ScreenTransition.None);
    这个改成
    NewForm(EditForm1_1);Navigate(新建页面,ScreenTransition.None);
    powerapps2-16

  14. 现在,创建页面已经完成了。可以点击播放确认动作
    powerapps2-17
  15. 用下面的按钮来提交的话,看到新的项目出来。Sharepoint 里面确认的话,看到状态已经是【已提交】了。

    powerapps2-18

4.PowerApps初步创建

虽然Sharepoint列表上也有创建PowerApps的菜单,它是只改造Sharepoint表单的作用,功能有限制。这次我使用功能更丰富的画布应用方式来创建。

PowerApps帮你自动创建拥有CRUD(创建,列出,更新,删除)功能的基本应用。我们尝试共享(PowerApps上,让别人用应用的发布操作,使用【共享】这个词)此应用然后确认功能。

  1. 打开PowerApps.microsoft.com, 使用Sharepoint列表创建时一样的Office365账号
  2. 选择【新应用】-【画布】
    powerapps1-1
  3. 选择 Sharepoint
    powerapps1-2
  4. 输入准备好的Sharepoint 网站地址
    powerapps1-3
  5. 选择准备好的列表,然后【连接】
  6. 已经自动创建了拥有CRUD功能的基本应用
    powerapps1-4
  7. 先为了直接确认动作,点击右上角的播放按钮
    powerapps1-5
  8. 点击右上角的加号(新建)
    powerapps1-6
  9. 输入项目内容,点击右上角的勾选号
    powerapps1-7
  10. 看到了新建项目
    powerapps1-8
  11. 另外浏览器上打开Sharepoint 列表,也看到新建了项目
    Powerapps1-9
  12. 点击右上角的x来结束播放模式
    powerapps1-10
  13. 为共享,先要保存应用,从菜单选择保存,命名应用
    powerapps1-11
  14. 下一个页面里,有共享按钮
    powerapps1-12
  15. 有共享对象选择,这次选要一起测试的同事。一般不想发邮件通知,去掉下面的发邮件通知的勾选
    powerapps1-13
  16. 【共用者】如果你要让你的同事也要改造此应用的话选择
    powerapps1-14
  17. 共享后,别人的PowerApps菜单也能看到此应用,并可以运行
    powerapps1-15
  18. 要改图像,从设计页面的菜单里的【设置】里能改图像
    powerapps16

2.环境准备

我们先准备环境

Sharepoint网站创建

先创建Sharepoint网站。我么通过Office365管理创建一个TeamSite, Url 叫 Wf。

使用Teams或者Office365 Group自带的Sharepoint 站点也完全没问题

image

Sharepoint网站权限

在刚才创建的网站上添加用户权限。这次为大家使用此应用,使用【除了外部用以外所有用户】

image

Sharepoint 列表创建

我们创建叫PurchasRequest 的列表。先继承权限,所以大家都能读写列表。后续的操作里要取消集成

添加栏

刚才的列表上添加栏,这次添加了这些列

  • 供应商(使用其他的列表的查阅项,也可以用单行)
  • 单位(因为这个公司里面有3个单位,需要付款是用个别账户)
  • 付款方式(选项:支票,银行汇款,现金,信用卡,其他)
  • 目的(多行)
  • 付款备注
  • 状态(选项:已提交,已审批,已结束)
  • 付款状态(选项:未受发票,已受发票,已付款)
  • 审批者(保存实际审批者:这次这个系统只有一个审批者所以内容一致一样)
  • 审批日期
  • 结束者(保存实际结束:这次这个系统只有一个审批者所以内容一致一样)
  • 结束日期

image

设定列表的ReadSecurity

通过列表的高级详细,把列表的
【项目级权限】设定改成为
读取权限:读取由该用户创建的项目
创建和编辑访问权限:创建项目并编辑由该用户创建的项目

ListSecurity

我们这次不采用每个项目动态权限设定,这个需要复杂的REST API 调用,而且Sharpoint 支持最多5000个独立权限,让APP的使用扩大会有限制。

申请人和财务的人添加个别权限

因为ReadSecurity 的话大家看不到别人的项目,但审批者和财务要看所有的项目,所以,列表的权限取消继承,审批者和财务添加列表的管理权限。

我们的例子:我们创建Sharepoint组叫 PurchaseRequestAdmin,申请人和财务的人都方进去,然后在列表的权限设定里,给PurchaseRequestAdmin 列表的设计权限了

image

以上,已经准备好环境了

1.PowerApps 创建采购申请应用

我们使用PowerApps和PowerAutomate(旧Microsoft Flow)创建采购申请APP。

基本流程

这次目标为使用PowerApps 和PowerAutomate 来创建采购申请APP,并公司内发布公开。为了快速实现此目标,中间的设计部分简化了。

有些审批功能,有的不适用PowerAutomate更方便,但这次确认PowerAutomate的功能,使用了它。

使用场面

使用人数20人左右,有一个固定老板的组织上,每个员工使用APP来提交采购申请。采购申请的流程包括需要银行打款的普通采购,用自己的现金采购的经费,还有其他的出差旅费等。为了广泛的使用,输入内容是少一点,然后需要详细的部分使用附件功能来上传。

当然如果详细的管理业务数据的话需要跟细的输入项和选项,但一般一开始用系统的时候做比较宽容的系统为顺利的使用开始合适。

PowerAppsFlow

具体流程

  1. 每个人通过APP创建新申请单,输入金额,说明,几个选项和备注,点击提交
  2. 审批者(这次审批者是固定1个审批者)审批。这次使用PowerAutomate 的审批模块,所以通过邮箱里面的链接来输入留言和点击审批或者拒绝按钮
  3. 审批后,通知到申请者和财务
  4. 状态变成“等待发票”,然后申请者和财务都可以输入留言,更改状态。状态为“等待发票”,“已收发票”,“已付款”等。
  5. 财务付款后,点击完成按钮,就完成此流程。

加了申请者和财务之内自由沟通留言的功能。因为,中国的特殊情况,要财务收到开票后才能付款,但发票有时候到申请者的手里,有时候直接到财务等有不同的情况。为了互相了解情况使用留言沟通供能。

架构

  • 数据都使用Sharepoint
  • 权限使用Sharepoing上的ReadSecurity(申请者和审批者都放在列表的Manage List 权限里)
  • 审批流程使用PowerAutomate