学习大纲:
- 了解最佳实践的5条一般规则
- 如何使用Invoke Workflow活动
- 如果使你的项目更加简洁高效
1. 最佳实践
1) 在开始一个项目时,为每一个流程、子流程选择合适的布局(FlowChart和Sequence)。
- 主流程用Flowchart/State Machine。一是能更清晰的了解整个项目;二是便于测试主流程中的某个单独部分。
- 更高层面的决策或业务逻辑用Flowchart。
- UI交互用Sequence。一般交互都是一个活动接着一个活动的执行,没有很多变化。
- 尽量不要使用嵌套的If活动,用Flowcharts代替会更容易理解。
2) 将整个流程分解为几个更小的流程。开发者会通过将非常复杂的应用程序和算法分解成更小的可控的任务来实现它们。
- 每一小块都可以独立开发和测试。
- 一些流程可以在其他项目中重复利用,以减少开发时间。
- 在同一个项目中与多人合作开发。
3) 做好异常处理。异常处理用来捕获和处理错误,至少要记录这些错误用于之后分析。
- 把产生问题的流程放到Try Catch活动里。
- 把调用的外部流程放到Try Catch活动里。
- 将恢复操作放到Catch部分。
4) 使流程清晰可读。可读性好的流程更便于调试,而且在团队项目里,别人可能需要使用你的流程。
- 使用描述性的名称命名流程组件。
- 做好注释和说明。
- 记录实时的执行进度,这样做有助于更快地查明错误。
- 将Workflow的设置保存到单独的文件中,推荐使用JSON文件。
5) 保持运行环境的清洁。让UiPath及时关掉不用的应用程序、窗口、网页。
应用最佳实践原则的好处:
- Reliable 可靠:能处理各种外部和内部的错误异常。
- Efficient 高效:减少开发时间;使程序在生产环境中流畅运行。
- Maintainable 维护:易于修改、合并、交接。
- Extensible 扩展:易于添加新情况。
2. Invoke Workflow File活动
使用Invoke Workflow File活动可以将一个项目分解成几个小的组件,并且能将独立的Workflow连接到一起。
1). 将Workflow中的某个Sequence保存为新的Workflow并调用它。
- 在Sap Login的Sequence上右键,选择Extract as Workflow。
- 在弹出的窗口中命名新的Workflow为Sap Login。
- 在原Workflow里,Invoke Workflow File活动自动取代原先的Sequence。
这样做的好处是,你可以随意拖拽、复制Invoke Workflow File活动到Workflow的任何位置,也可以在其他项目里重复利用它。它便于维护和更新,也便于单独进行测试。
2) 传递参数
- 在Enter User Data的Sequence里,timeout变量是本地变量,其余四个变量是全局变量。
- 右键Enter User Data,选择Extract as Workflow。在提取出的Workflow中,本地变量timeout依然在Variables面板里保持不变,而其它四个全局变量出现在Arguments面板里。
-
在原本的Workflow中,会以一个Invoke Workflow File活动取代原先的Enter User Data Sequence。点击Import Arguments,可以看到新Workflow的四个参数。
- 在Value列指定参数的值。可以直接填入固定值,也可以填入一个变量。
- 在Direction列指定参数的传递方向,In表示把值从Invoke活动所在的Workflow传入被引用的Workflow(在本例中为从Flowchart传给Enter User Data);Out表示把值从被引用的Workflow传给Invoke活动所在的Workflow(从Enter User Data传给Flowchart);In/Out则表示双向传递,先传入再传出。
3) 多个Workflow组合
一般来说在执行Enter User Data(录入用户数据),首先需要Get User Data(获取用户数据)。
- 在主程序Flowchart里新建一个Sequence名为Get User Data,添加一些UI交互活动实现从网站取得用户信息。取得的信息存放在变量里。
- 把这个Sequence提取为Workflow,把原先用来存储用户信息的变量设置为Out的参数。Out的参数是把Get User Data子Workflow的值,传到主程序Flowchart里。Invoke Workflow File活动的Value一栏用来填写保存传出来的值的地方,一般是本地变量。
- 最后把Flowchart里保存用户信息的变量填入到Enter User Data子Workflow对应的In参数的Value一栏里,把信息传递过去,并填入系统中。
3. 项目组织
实例:获取x个用户信息,并填入myCRM系统里。
思路:
- 获取x个用户信息
- 打开生成用户信息的网站
- 生成并存储x个用户信息
- 关闭浏览器
- (上述活动放入一个Try-Catch里以保证程序的稳定性。)
- 把x个用户信息填入myCRM系统
- 打开CRM应用程序
- 录入x个用户信息
- 循环x次(在循环内部添加Try-Catch,保证填写某个用户信息出错时,不影响剩余的用户信息的填写。)
- Try-填入用户信息
- Catch-登记错误信息
- 循环x次(在循环内部添加Try-Catch,保证填写某个用户信息出错时,不影响剩余的用户信息的填写。)
- 关闭应用程序
过程:
本课需要我们整体的看某个项目,因此对于具体操作、活动不做详细的说明。
- 主程序:
- 创建一个主Workflow和两个子Workflow,可以按照从上到下的、从里到外的顺序编号命名,提高可读性。比如:0. Main,1. Get User,2. Insert User。
- 子程序-获取用户信息:
- 子程序1. Get User由一个Try-Catch活动构成。
- 在Try的部分,添加一个Open Browser活动打开生成用户信息的网站。
- 在Open Browser的Do里添加一个Do While循环。设置一个counter变量作为循环变量,初始值为0。假设我们要取得10个用户的信息,那么Do While活动的条件就是counter<10。10可以用参数numberOfUsers传递,方便随时修改。Do While的主体里需要添加一个Assign活动,使counter=counter+1,否则会进入死循环。
- 在Do While里添加一个Invoke Workflow File活动,引入我们之前已经做好的获取用户信息的子程序,配好参数(Out,实在搞不清直接填In/Out),该子程序可以命名为1.1 getUserData。
- 保存多个用户的信息最好使用datatable。在Do While活动之前添加一个Build Data Table活动,创建一个空的datatable变量usersDT,它包括Name列,Email列,Addr列和Status列(Status列用来记录用户信息是否正确输入CRM)。在Do While里的Invoke Workflow File活动之后,添加一个Add Data Row活动,将从1.1 getUserData里取得的name,email,address写入datatable。
- 在Do While活动之后添加一个Excel Application Scope活动,把usersDT存到excel文件users.xlsx里。添加一个Close Application活动关闭浏览器。
- 添加一个Output Data Table活动和Log Message活动用来验证结果是否正确。
- 子程序-录入用户信息:
- 由一个Workflow构成。如下图: