最近被安排了一个项目,博主主要负责PowerAutomate流程的开发,作为几乎是小白的我上手还是蛮吃力的,开发过程中也踩了不少坑,今天我记录下,希望能对遇到相同问题的小伙伴有一点小小帮助。
流程设计
系统限制一个PowerAutomate流程最多8层嵌套。即一个条件分支作为一层嵌套,在条件分支中又加了一层判断,则表示两层嵌套。当配置了第9层条件分支时,系统是不会显示【添加操作】按钮的,虽然可以将其他操作直接拖拽到此区域,但流程是无法保存的。因此若操作需要多个条件成立才需要执行,尽量把条件放在一个判断控件里。
环境变量
环境变量分为两种:
①当前值,导入到其他环境时,可以不调整。一些系统配置参数就可以使用当前值供流程使用。
②默认值,导入到其他环境时,必须手动更新。比如Sharepoint访问地址就可以使用默认值,因为不同环境访问的数据库地址一般是不同的。
首次开发完全没想到这点,Sharepoint操作中的站点地址没有用到环境变量,导致迁移后得把所有Sharepoint相关操作的站点地址都得改一遍,博主大概改了二十几处,再加上流程复杂和网络原因导致加载缓慢,整个真的是苦不堪言。
变量操作
1、初始化变量操作只能放在主流程中,这个大家基本都知道。
2、设置变量操作值不能引用自身,得使用追加XX变量操作,或者可以在设置变量前使用编辑操作事先将数据处理好
3、Integer类型变量
①此类变量在初始时可以不赋值,但是在设置变量时,不能赋空值(例如赋值查找字段ID值的时候,查找字段为空)。
②一些Number类型的值不能直接赋给Integer类型变量,如Number类型得环境变量,Sharepoint列表中的Number类型的列(即使设置小数点位数为0也不行)。可以通过int(值)函数手动将变量转为int型。
数据操作
如果编辑操作中生成的字符串中包含单引号,则需要在单引号前面再加个单引号。例如像这样动态添加Odata查询条件:
if(判断内容,concat('Title eq ''', 变量,''''),'')
作用域
将一些操作放在一个作用域中,这样这些操作可被视为一个操作。这么讲看起来好像没什么用,但是当使用异常捕获的时候作用很大,比如这个场景:假如我有个可能会出现异常的操作A,操作C需要在当操作A正常的情况下执行,而操作B、操作C需要在操作A异常的情况下执行。这样就体现了作用控件的用处了。因为【配置随后运行】这个功能只能针对上一步的单个操作配置。
由此博主也发现了流程配置的一个小小缺陷,咱们继续看这个例子,假如我有操作E,无论操作A是否成功都需要执行,那么就得在操作C和操作D后面都加上操作E。假如操作E包含多个操作,那么重复的工作量就比较大了,如果比较复杂,就得考虑调用子流程了。