在RPA平台中为什么会有工作负载管理(WLM)?
WLM=Work Load Management。通常当用户启动一个自动化任务时,会交给某一个机器人Bot Runner执行,或者由Bot Runner按照时间计划,自启动执行某个任务流程。但如果遇到任务处理量很大,而且需要满足较高的SLA要求,即需要机器人即时处理大批量的工作任务。这就涉及到机器人的并发处理,也就是WLM的本质作用。
配置WLM,其中涉及很多全新的概念和处理方式,内容比较多且难以理解,请耐心读完,或在实际操作中加以参考。
在WLM中会涉及到一些概念名词:设备池(Device Pools),队列(Queues),工作项(Work Item),工作项结构(Work Item Structure),服务水平协议计算器(SLA Calculator)。
设备池(Device Pools):设备池是一组用于自动化运行的设备(Device)组合。队列中的任务会运行在对应的设备池中。当具有Bot Runner的License的客户端连接到控制中心以后,就可以在设备列表中查看到这台设备的机器名称。
队列(Queues):队列会对应到设备池。在队列中可以分配工作项(Work Items),每个工作项中有自动化任务中所使用的指定数据字段。
工作项(Work Item):指的是队列中所要处理的数据,其数据结构必须符合工作项结构(Work Item Structure)的要求。
服务水平协议计算器(SLA Calculator):用于计算需要分配给设备池的设备数量,以满足处理队列的 SLA 要求。
在管理权限方面,也会涉及到Owner(所有者),Participants(参与者),Consumer(消费者)等AA中的常规用法,可以参考这篇文章。
一、设备池
设备池的工作原理:
1. 不能在计划或手动状态下从设备池中运行自动化任务,只有在运行队列的时候才可以。
2. 一个设备只能加载到一个设备池中,在添加到设备池以后,从设备列表中就看不见该设备了。
3. 只有已经连接到控制室的设备才能添加到设备池。
建立设备池的过程:
1. 创建设备池的用户,应具有AAE_Pool Admin的角色权限。
2. 在设备(Devices)菜单中新建一个设备池。注:A2019和AAE 11.x界面略有不同。
3. 为新的设备池命名和填写描述
4. 添加一个或多个已连接的设备
5. 建立该设备池的所有者Owner,默认的所有者是该用户,也可以新增其他所有者。设备池的所有者都可以编辑和删除设备池中的设备。
6. 建立该设备池的消费者Consumer,消费者是一个可选填项,是按照角色添加的,即具有该角色的用户,在运行某个队列时,可以查看到和选择到此设备池。
7. 完成后,可以看到一个设备池处于连接状态。
二、队列
建立队列的过程
1. 创建队列的用户,应具有AAE_Queue Admin的角色权限。
2. 在工作负载(Workload)菜单中选择建立新的队列Queue
3. 填写新队列的基本设置,包括名称,描述,重新激活阈值(即当队列中有几个工作项时,该队列才开始启动运行。1就表示队列中有1个工作项时,队列就会运行),人员完成 1 个工作项所需的时间(该可选项,是为了后续衡量队列所产生的收益,即人工处理工作项需要多少时间)。
4. 建立该队列的所有者Owner,默认的所有者是该用户,也可以新增其他所有者。队列所有者都可以编辑和增加队列中的工作项。
5. 设置队列的参与者(可选填项),是按照角色添加的,即具有该角色的用户,可以在队列中新增工作项和查看队列的情况。
6. 设置队列的消费者(可选填项),是按照角色添加的,即具有该角色的用户,可以查看队列情况以及使用该队列来运行自动化任务。
7. 创建工作项Work Item结构。工作项结构是由一系列字段所组成的。接下来,添加工作项的数据时,或者在自动化任务中增加数据时,都需要对应到这个工作项结构中的字段。有三种方式来定义工作项结构,一是导入Excel或CSV,二是在现有的队列中选择1个结构,三是通过手工方式定义。
以导入Excel或CSV文件为例。导入文件以后,第1步设置队列类别(Queue category)的名称,工作项中的各个列也按照Excel中的表头信息自动填入;第2步可自定义是否使用该字段(勾选),字段类型(在AAE11.x中包括文本,数字,日期三种类型),以及是否显示在控制中心(勾选);第3步设置数据的排序,这是个可选项,如果不选择,就是数据表中的默认顺序,最多可以按照三个字段来选择排序。
另外两种方式,也是类似的。手工处理繁琐一些,需要一项一项的添加到结构中。
8. 添加工作项数据。通过Excel或CSV导入的数据表的列需要和之前定义的工作项结构相一致。也可以选择在创建队列时,先不导入工作项,待队列运行之后再来导入。
9. 队列创建以后,可以在列表中查看到该队列。状态是“未使用”(Not in use)状态。
三、可按照队列方式执行的自动化任务
开发自动化任务的过程:
当设置好设备池和队列之后,就可以按照队列来启动自动化任务了。当然,也可以先定义好任务,再来定义设备池。
在Bot Creator里开发该自动化任务时,首先,需要在右侧的变量菜单中设置Queue Category(队列分类),选择某个之前已经在队列中设置好的队列分类。
设置好队列分类后,在代码中选择使用Variable Operation命令,在系统变量里选择Work Item,再选择某个具体属性赋值给某个任务中所使用的变量。接下来,自动化任务就使用这个变量了,也就相当于从队列的工作项中取到了输入数据。
四、使用队列方式运行自动化任务
运行队列的配置方式:
1. 在Bots中选择所要执行的任务,使用队列方式运行
2. 下一步,选择所需要使用的队列和设备池,如果前面已经建立好,而此时在列表里找不到队列或设备池,主要是由于权限问题所导致的,能够找到列表信息的必须是所有者或是消费者。
3. 最后,可以自定义队列的名称和描述,也可以使用默认设置,点击运行。
4. 如果在队列中已经添加了工作项数据,那么,设备池中的设备会分别从队列中取出工作项数据,自动调用自动化任务运行。某个设备的任务执行完之后,再去队列中领取新的工作项数据,直到队列中的工作项数据都执行完成。这样,就实现了任务处理的并发以及任务的动态负载分配。
另外,还可以通过其他自动化任务,来为队列中添加工作项数据。
采用自动化的方式为队列添加工作项数据
1. 例如将CSV中的数据循环加入到工作项中,在loop命令中使用Insert Work Item命令,来添加工作项数据。
2. 完成设置之后,可以通过手工或自动方式来运行这个任务,实现对队列中工作项数据的插入。
3. 运行之后,可以在队列中查看到已经插入的这些数据。
通过这种实现方式,就可以实现前台机器人(自动化插入工作项数据)对后台机器人的任务(接到队列中的数据后,自动执行)调用。
五、SLA计算器
SLA代表了Service Level Agreement(服务水平协议),使用服务水平协议计算器可以根据队列大小估算所需的设备池大小或处理时间。
1. 具有AAE_Queue_Admin角色用户,或者属于是队列所有者,参与者或消费者权限的用户登录控制中心。
2. 在Workload菜单中选择SLA calculator,选择正在执行的队列。
3. 在计算器设置界面中,可以需要处理工作项数据量大小,每个工作项的平均处理时间,以及计划需要多少个设备来执行这些数据。计算出预计的处理时间。
也可以根据需要处理工作项数据量大小,每个工作项的平均处理时间,以及计划需要多长时间完成任务,来计算所需要的设备数量。
六、WLM涉及到的参数配置
在C:\Program Files\Automation Anywhere\Enterprise\config\wlm.properties文件总定义了WLM所使用的各种参数。修改参数后,需要重启AA的服务才能生效。其中各参数的说明可参考 https://docs.automationanywhere.com/bundle/enterprise-v11.3/page/enterprise/topics/control-room/workload/wlm-properties-config-description.html
本文中的所有内容,可参考Automation Anywhere的官方文档。https://docs.automationanywhere.com/bundle/enterprise-v11.3/page/enterprise/topics/control-room/workload/workload-an-overview.html