# Uipath REFramwork框架学习 **Repository Path**: tengvention/REF-UIdemo ## Basic Information - **Project Name**: Uipath REFramwork框架学习 - **Description**: Uipath REFramwork框架学习 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-17 - **Last Updated**: 2022-01-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目结构 ``` REF_UIDemo ├── Data ├ ├── Input // 存放机器人起始需要的信息文件 ├ ├── Output // 存放机器人处理后的产出文件 ├ ├── Temp // 存放机器人处理数据过程中的临时文件 ├ ├── Config // 存放机器人的常规配置信息 ├── Documentation // 存放开发文档、流程图、用户说明书、需求规则等与项目相关文件 ├── Exception_Screenshots // 主要存放机器人在执行过程中发生系统错误时自动截屏的图片 ├── Framework // 框架 工作流文件 ├ ├── CloseAllApplications.xaml // 存放关闭应用程序的流程模块 ├ ├── GetTransactionData.xaml // 获取单次任务数据(TransactionItem)控制框架循环的关键模块 ├ ├── InitAllApplications.xaml // 存放打开应用程序的流程模块 ├ ├── InitAllSettings.xaml // 将config Excel文件转为字典的功能模块 ├ ├── KillAllProcesses.xaml // 存放关闭进程的功能模块 ├ ├── RetryCurrentTransaction.xaml // 控制TransactionItem是否需要重试的功能 ├ ├── SetTransactionStatus.xaml // 标识TransactionItem的执行状态,控制流程走向 ├ ├── TakeScreenshot.xaml // 流程出错时实现系统截屏的功能模块 ├── Tests // 提供自动化测试时所使用的功能模块 ├ ├── WorkflowTestCaseTemplate.xaml // 用于测试工作流程的测试流 ├── Main.xaml // 企业框架的主程序入口 ├── Process.xaml // 主要存放执行单次事务的流程代码,类似循环Body中的内容 ├── project.json // 项目配置文件 ``` ## 初始化模块 ### Config字典的生成 ``` in_ConfigFile String类型 是传Config的Excel路径,告诉机器人读取哪一张Excel表 in_ConfigSheets String[]类型 是传Config的Excel中的Sheet名称,用于告诉机器人读取哪一个Sheet out_Config Dictionary类型 是传出一个字典类型的变量给Main,赋值给Main里面的Config变量 ``` 生成Config字典的三步: 1. 初始化字典out_Config变量 2. 读取Excel数据,将{"Settings","constants"} 这两个Sheet中的数据装入字典 3. 将OC端的资产装入字典 在循环处理Config数据中,赋值的语句为: ``` out_Config(Row("Name").ToString.Trim) = Row("Value") ``` **总结** ``` Initialization环节主要完成了3个任务: 1. 读取Config.xlsx并将其转为字典 2. 根据Uidemo在这个案例的要求,我们将需要录入的数据,通过读取Excel的方式上传至OC端,方便下一环节调用。 3. 在InitAllApplications.xaml 种实现了UiDemo应用程序的登录 初始化阶段通常解决了机器人需要做什么(即生成事务数据)和在什么地方做(登录完成任务的环境)的问题。 最后还通过了WorkflowTestCaseTemplate调用InitAllApplications.xaml的方式实现了小模块的测试 ``` ### 获取数据模块 | 变量名 | 说明 | | :-------------------- | :----------------------------------------------------------- | | in_TransactionNumber | 负责接收框架种的TransactionNumber整数类型的变量,负责记录Process的循环次数。该模块主要用于判断跳出的循环条件。如果TransactionItem是QueueItem类型,这个参数可以不用,其他类型基本都需要用到这个变量。 | | in_Config | 框架中的Config字典变量,备用 | | out_TransactionItem | 存储TransactionData中跳出来的单挑事务数据,并传出到Main,用于执行Process的具体事务 | | out_TransactionField1 | 用于标识OC端的Log字段。备用参数,可以不用 | | out_TransactionField2 | 用于标识OC端的Log字段。备用参数,可以不用 | | out_TransactionID | 用于标识OC端的日志信息,最好能与TransacationItem信息有一定关联,方便用户查看日志。备用参数,可以不用 | | io_TransactionData | 如果TransactionItem是QueueItem类型,因为是从OC端拿任务,此参数可以不用。除此之外绝大部分情况都需要用到 | ### 处理数据模块 先对BusinessException变量初始化,初始化为Nothing。然后执行Process程序,Process中一般就放需要重复执行的程序步骤。 最后会设置事务的状态,也就是SetTransactionStatus模块。该模块是一个flowchart,先判断是否运行成功,也就是BusinessException和SystemException都为空,则将事务状态改成成功。如有异常则判断异常类型,相应调整事务状态。其中Success和BusinessException会来到 Increment transaction index and reset retries 流程,对运行的索引递增及重置重试次数计数。如果是SystemException,先会进行截图(或者发送邮件通知出现系统异常),然后设置事务的状态,接着判断是是否进行重试。