• 机器人过程自动化(RPA)入门 9. 管理和维护代码


    仅仅创建一个自动化项目是不够的。无论是决定使用哪种布局,还是正确命名步骤,以正确的方式组织项目都很重要。项目也可以在新的项目中重用,这对用户来说非常方便。本章解释了我们可以重用项目的方法。我们还将学习配置技术并看到一个示例。最后,我们将学习如何集成TFS服务器。

    列出了本章将涵盖的主题:

    • 项目组织
    • 嵌套工作流
    • 工作流的可重用性
    • 注释技巧
    • 状态机
    • 何时使用流程图、状态机或序列
    • 使用配置文件和配置文件示例
    • 集成TFS服务器

    项目组织

    在处理任何自动化项目时,使用一套适当的规则非常重要,这样项目才能以高效的方式组织起来。在UiPath中,以下是在处理项目时考虑的一些最佳实践:

    • 为每个工作流选择适当的布局
    • 将整个过程分解为更小的部分
    • 使用异常处理
    • 使您的工作流程可读
    • 保持清洁

    我们现在将详细阐述每一种最佳做法。

    为每个工作流选择合适的布局

    创建新项目时可以使用各种布局。在这些布局中,我们必须根据我们正在进行的自动化过程的类型选择最佳选项。所有布局如以下屏幕截图所示:

    Blank

    空白项目只是一个空白页面,您可以在上面创建所需的布局类型。也就是说,如果工作流处于单一顺序/序列中,则可以简单地从序列活动开始,或者如果要设计更大或更复杂的工作流,则可以使用流程图活动。这取决于用户的需求或要进行的自动化类型。以下屏幕截图显示了一个Blank项目, 新版使用流程项目,默认空白流程:

    Simple process

    简单流程是一种布局,用于将流程建模为流程图,其中有用户输入的空间。在这里面,我们可以使用一个序列,在进一步的事务处理中处理所需的输入。如果交易没有新的输入,它将结束该过程;在事务处理过程中,我们必须制定一个可用于自动化事务处理的工作流。默认情况下,这是一个生成的过程,如果需要,可以删除或更改。下面的屏幕截图显示了一个简单流程的示例:

    Agent process improvement

    这会触发自动化以响应鼠标或键盘用户事件。它基本上是在用户自动化涉及键入或单击操作的过程时使用的。此过程中出现的一个简单布局如以下屏幕截图所示:

    Transactional business process

    如果我们想将业务流程建模为状态机图,我们将使用这种布局。它基本上是事务业务流程自动化如何工作的演示。如果我们想建造一个更好的机器人来自动化这些过程,最好使用这种布局。

    此布局分为不同的状态:

    • Init:在Init状态下,我们必须配置我们的设置、凭据(如果有的话),并初始化将在该事务中使用的所有变量。机器人读取并考虑应用程序的所有配置文件(在该事务中使用)。Init状态还会调用事务中使用的所有应用程序。
    • 获取事务数据:在这种状态下,所有事务数据都是从Init状态获取的。如果没有事务数据,则它将控制转移到“结束进程”状态。
    • 处理事务:在此状态下,所有事务数据都被处理。
    • 结束进程:此状态确保所有进程都已完成,并且没有可用的事务数据。它还关闭事务中使用的所有应用程序:

    将流程分解为更小的部分

    要构建任何项目,我们都必须使用各种活动。但是使用过多的活动会使项目变得笨拙,并且不可读。我们必须以这样一种方式设计我们的项目,即每个独立的部分都单独存在。我们可以通过使用工作流来实现这一点。
    我们应该把项目的每个独立部分放在一个单独的工作流程中。我们可以在适当的位置调用项目中的所有工作流。将项目划分为多个工作流可以使项目更干净、更易于维护。现在,如果任何开发人员想要调试您的代码,他们可以检查不同的工作流,并轻松地确定特定错误发生在哪个工作流中。如果项目不分为工作流,那么对于开发人员来说,修复任何错误都将是一场噩梦。

    因此,将自动化分解为更小的部分可以轻松调试,以及跨项目的工作流:

    使用异常处理

    在处理项目时,最好使用异常处理,因为它可以降低出错的风险。例如,使用Try-catch块可以为您提供正确的错误消息,这有助于我们处理异常。前面已经解释了各种异常处理技术,这些技术在处理项目时非常有用。图中显示了一个使用Try-catch活动来处理异常的示例。在这里,我们使用Write-line活动来显示catch块或Finally块检测到任何错误时的消息(如屏幕截图中突出显示的):

    使您的工作流程可读

    根据活动执行的操作命名活动是一种很好的做法,以确保当我们返回到工作流时,我们可以轻松地识别其中使用的每一个步骤。这在查找和解决错误时非常有用,因为它指定了在调试期间显示错误的过程。如果活动的名称正确,我们就可以确切地知道工作流的哪一部分不起作用。例如,我们将创建一个工作流,要求用户猜测一个数字,在此基础上进行加法运算,并最终显示答案。以下屏幕截图显示了流程中所涉及步骤的正确命名:

    保持干净

    正如以干净易懂的方式写作是一个好的程序员的素质一样,RPA开发人员也是如此。干净的代码可以帮助我们非常容易地理解整个过程——无论是你还是阅读它的人。

    嵌套工作流

    在UiPath中工作时,最好将整个流程划分为较小的部分,然后将这些工作流嵌套到较大的工作流或主工作流中。这可以使用“活动”面板中提供的“调用工作流文件”活动来完成。将一个或多个工作流嵌套到一个工作流中需要几个步骤。

    如何将工作流嵌套在单个工作流中

    假设我们有两个工作流程。在本例中,我们将调用一个工作流到另一个工作流中:

    1. 将“调用”工作流文件活动添加到第一个工作流:
    2. 单击可用的编辑参数选项。
    3. 定义一个参数并在出现的Invoke工作流参数中键入:
    4. 在第二个工作流的“参数”面板中,创建一个与第一个工作流同名的参数。您现在可以将该参数用作任何其他变量。

    工作流的可重用性

    重用工作流使自动化过程变得更容易、更好,因为我们可以在项目中使用早期创建的工作流,我们正试图将其用于自动化。有两种方法:

    • 调用工作流文件
    • 模版

    如果我们有一个复杂的自动化项目,调用工作流文件是一个很好的过程。我们可以把它分成更小的部分。通过使用Invoke工作流文件活动,我们可以调用项目中的所有文件,并在单个工作流中收集所有这些较小的部分。然而,如果我们想在项目中调用以前创建的工作流并对后者进行更改,前者也会受到影响。因此,建议仅当我们有复杂的工作流时才使用“调用工作流文件”活动:

    如前面的屏幕截图所示,Invoke工作流文件活动需要其关联XAML文件的路径。

    调用工作流文件

    如果我们有一个复杂的自动化项目,调用工作流文件是一个很好的过程。我们可以将其划分为较小的部分,然后通过使用Invoke工作流文件活动,我们可以将所有这些较小的部分收集到一个工作流文件中。但是,如果我们想在新工作流中调用以前创建的工作流并对新工作流进行更改,则以前的工作流也会受到影响。因此,建议仅当我们有一个复杂的工作流,并且我们希望将流程划分为更小的部分,然后将它们一起使用时,才使用Invoke工作流文件活动。还有另一种特性,我们在这里需要的;如下所示:

    如前面的屏幕截图所示,Invoke工作流活动需要一个变量表达式。我们可以创建一个变量并设置Invoke工作流文件活动所需的超时。

    模版

    将工作流保存为模板有助于保留原始工作流文件。因此,无论您在模板中做了什么修改,都不会对原始工作流进行任何更改。我们在创建可重复使用并适用于多个工作流的通用自动化小部件时经常使用模板。因此,如果工作流不会随时间变化,则可以使用模板。最常见的例子是使用数据、数据表和xml文件创建自己的可重用代码段。

    将工作流添加为模板

    按照给定的步骤添加工作流作为模板,其解释如下:

    完成设计后,可以导出

    注释技巧

    在工作流中使用注释被认为是一种很好的做法,因为它可以更好地逐步通知工作流中所做的事情。因此,在调试时,在复杂的工作流中进行注释被认为是很好的:

    • 您需要在工作流中使用注释的软件包需要从“活动”面板(管理软件包图标)中提供的软件包管理器功能中安装。您可以从软件包中安装UiPat.Core.Activities;在里面,您将在Activities面板中找到Comment活动,如箭头所示(在本例中,它已安装):
    • 安装软件包后,只需从“活动”面板中拖放“注释”活动,并在工作流之间的任意位置添加注释:

    状态机

    状态机在执行过程中使用有限数量的集合。当它被一个活动触发时,它可以进入一种状态;当触发另一个活动时,它退出该状态。状态机的另一个重要方面是事务。它们使您能够根据事务从一个状态跳到另一个状态来添加条件。这些由状态之间的箭头或分支表示。

    有两个特定于状态机的活动。它们是状态和最终状态,如以下屏幕截图所示:

    State活动由Entry、Exit和Transitions三个部分组成,而FinalState仅包含Entry。我们可以双击这些活动以查看更多信息并对其进行编辑,从而展开这些活动:

    • FinalState活动:此活动包含进入状态时需要处理的所有活动:
    • 状态活动:转换包含触发器、条件和操作三个部分,使您能够为下一个状态或执行活动的条件添加触发器:

    何时使用流程图、状态机或序列

    只有当我们选择了一组关于如何创建工作流的简单说明时,才会使用序列。也就是说,我们不必做出决定。当我们以顺序的方式记录一些步骤,并且我们正在创建一个简单的工作流程时,这是优选的。
    以下屏幕截图显示了一个这样的序列:

    现在,当涉及到状态机和流程图时,它们都用于复杂的过程,并且都能很好地工作。它们以相同的方式工作,但状态机比流程图有一些优势,如下所示:

    • 使用状态机,复杂的转换更加清晰,因为它们具有内置的工作流布局。
    • 流程图本身并没有等待事情发生的概念。状态机会这样做(在触发器完成并且条件评估为true之前,不会发生转换)。
    • 状态机自然地封装了操作组:

    使用配置文件和配置文件示例

    在配置方面,UiPath没有任何预构建的配置文件,如Visual Studio,但我们可以创建一个。将环境设置保存在配置文件中被认为是最佳做法之一,这样用户就可以在需要时轻松更改环境设置。因此,当我们创建项目时,会自动创建包含所有活动的Project.json文件。Project.json可以在保存项目的文件夹中找到。要访问文件夹,我们只需打开Project,然后复制路径(如以下屏幕截图所示),并将其粘贴到文件资源管理器中:

    然后,您可以在文件资源管理器中看到一个Project.json文件,如以下屏幕截图所示:

    当您在记事本中打开Project.json文件时,以下屏幕截图显示该文件内的代码:

    您还可以在电子表格或凭据的帮助下存储您的设置。有Project.json文件中包含的各种参数。它们是:

    • 名称:这是在“创建新项目”窗口中创建项目时提供的项目标题:
    • 说明:创建项目时,还需要说明。您可以在创建新项目窗口中添加描述,如前面的屏幕截图所示。
    • Main:这是项目的切入点。默认情况下,它保存为main.xml,但您可以从“项目”面板更改其名称。此外,如果一个项目有多个工作流,则有必要使用“调用工作流文件”活动将所有这些文件附加到主文件。否则,这些文件将不会执行:
    • 依赖项:这些是项目中使用的活动包及其版本。
    • 排除的数据:包含可以添加到活动名称中的关键字,以防止在详细级别记录变量和参数值。
    • 工具版本:用于创建项目的Studio版本。
    • 添加凭据:我们可以添加可以进一步使用的特定设置。例如,我们可以保存用户名和密码以供进一步使用,因此可以在“活动”面板中的“添加凭据”活动的帮助下完成此操作,如以下屏幕截图所示:

      添加凭据后,在“属性”面板中键入所需的值,如以下屏幕截图所示:

      因此,当设置凭据时,我们可以删除、保护或请求凭据,如以下步骤所示:
    1. 删除凭据:如果我们想删除凭据,那么我们可以拖放“删除凭据”活动,然后定义凭据的目标:
    2. 获取安全凭据:用于获取在添加凭据期间设置的值,即用户名和密码。我们必须像以前一样设定目标;输出将是用户名和密码:
    3. 请求凭据:这是一个属性,机器人在其中显示一个消息对话框,询问用户用户名和密码,并将此信息存储为字符串。然后可以将其用于进一步的处理中。用户可以选择“确定”来提供凭据,如果不想提供凭据,则可以取消。

    集成TFS服务器

    UiPath集成了一系列行动,使我们能够在项目上进行更好的合作。在“项目”面板中,右键单击文件,我们可以看到其中包含的属性列表:

    • 通过单击“获取最新版本”选项,我们可以从TFS服务器获取所选文件的最新版本
    • 您也可以重命名或删除现有文件
    • 要编辑只读工作流,可以选择;签出进行编辑
    • 要签入更改,请从菜单中选择“签入”

    总结

    本章介绍了项目的组织、模块化技术、工作流嵌套以及使用TFS服务器维护源代码版本。在最后一章中,您将深入了解如何使用Orchestrator部署和管理机器人程序。

  • 相关阅读:
    java 位运算 表示状态小记
    Ionic header content footer toolbar UI实例
    使用Python计算平面多边形间最短距离,数据需要从excel表格中导入
    install YAPI & MongoDB & 备份mongo & 安装yapi插件cross-request 笔记
    OTP语音芯片 NV080D在智能空气检测仪的应用
    【知识网络分析】作者合作网络(Co-authorship)
    Mac Typora + PicGo + Github配置图床
    JavaScript 运算符【‘算术运算符’,‘赋值运算符’,‘一元运算符’,‘比较运算符’,‘逻辑运算符’,‘运算符优先级’】 详解和配案例 开发当中很重要
    数独游戏底层算法
    【Linux】进程概念万字详解(上篇)
  • 原文地址:https://blog.csdn.net/mwjcxl/article/details/133434733