CN114647485A - 机器人过程自动化(rpa)机器人的动态云部署 - Google Patents

机器人过程自动化(rpa)机器人的动态云部署 Download PDF

Info

Publication number
CN114647485A
CN114647485A CN202111548992.8A CN202111548992A CN114647485A CN 114647485 A CN114647485 A CN 114647485A CN 202111548992 A CN202111548992 A CN 202111548992A CN 114647485 A CN114647485 A CN 114647485A
Authority
CN
China
Prior art keywords
rpa
robot
robots
satisfied
provisioning
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111548992.8A
Other languages
English (en)
Inventor
马涛
T·麦德克尔
R·鲁萨努
C·B·富歇尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yupas Co
Original Assignee
Yupas Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yupas Co filed Critical Yupas Co
Publication of CN114647485A publication Critical patent/CN114647485A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/50Machine tool, machine tool null till machine tool work handling
    • G05B2219/50391Robot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45566Nested virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Abstract

本公开的实施例涉及机器人过程自动化(RPA)机器人的动态云部署。在一些实施例中,自动化优化器被配置为例如根据作业队列的当前长度或根据执行多个软件机器人的所选择的RPA主机平台的当前工作负载,确定是否满足供应条件。当满足所述供应条件时,一些实施例自动将附加的虚拟机供应到相应RPA主机平台上,并且在自动化需求低时自动移除虚拟机。示例性RPA主机包括云计算平台和本地服务器等。

Description

机器人过程自动化(RPA)机器人的动态云部署
技术领域
本发明涉及机器人过程自动化(RPA),尤其涉及在云计算平台上执行RPA活动。
背景技术
RPA是新兴的信息技术领域,旨在通过对重复计算任务进行自动化来提高生产力,从而解放人类操作方用以执行更智能和/或更创造性的活动。以自动化为目标的重要任务包括:从文档中提取结构化数据、生成发票和其他业务文档、以及与用户界面交互(例如,填写表格)等等。
由云计算的快速发展激发的一个特定领域的兴趣包括在云中执行RPA活动,即在实现基础构架即服务(IaaS)和/或软件即服务(SaaS) 业务模式的远程访问计算平台上执行RPA活动。然而,这种发展面临特定的技术障碍。例如,在云中成功执行RPA通常需要同时掌握 RPA工具、云管理和虚拟化等知识,预计这将超过普通RPA开发人员的能力。因此,人们对促进设计为在云中运行的软件机器人的编程和部署有着浓厚的兴趣,最终目标是将RPA技术的范围扩展到缺乏高级编程技能或培训的用户。
发明内容
根据一个方面,一种机器人过程自动化RPA方法,包括:采用计算机系统的至少一个硬件处理器,以根据RPA作业队列并且进一步根据当前在所选择的RPA主机平台上实例化的RPA机器人池,确定供应条件是否被满足。方法还包括:作为响应,当供应条件满足时,根据虚拟机(VM)模板,在所选择的RPA主机平台上发起VM的自动供应,该VM模板根据队列中的RPA作业从模板库中被选择,其中执行VM模板使VM实例化RPA机器人,以用于执行 RPA作业进行。方法还包括:响应于虚拟机的供应,将RPA机器人连接到RPA编排器,该RPA编排器被配置为将RPA作业队列分配给RPA机器人池。方法还包括:确定机器终止条件是否被满足;以及作为响应,如果是,则发起VM的自动终止。
附图说明
通过阅读以下的详细描述并且参考附图,将更好地理解本发明的上述方面和优点,其中:
图1示出了根据本发明一些实施例的示例性RPA(机器人过程自动化)环境。
图2示出了根据本发明的一些实施例的RPA机器人和编排器的示例性组件和操作。
图3示出了根据本发明一些实施例的多种RPA主机系统。
图4A示出了根据本发明的一些实施例在RPA主机上执行的示例性RPA组件。
图4B示出了在使用硬件虚拟化的实施例中在RPA主机上执行的示例性RPA组件。
图5示出了根据本发明的一些实施例的将机器人部署到多个RPA 主机平台的示例性RPA编排器。
图6示出了根据本发明的一些实施例的示例性自动化优化器的操作。
图7A示出了根据本发明的一些实施例的、由自动化优化器执行的示例性步骤序列。
图7B示出了根据本发明的一些实施例的由自动化优化器执行的另一示例性步骤序列。
图8示出了被编程以执行本文所描述的一些方法的计算装置的示例性硬件配置。
具体实施方式
在下面的描述中,应当理解,所有描述的结构之间的连接可以是直接操作连接或通过中间结构的间接操作连接。元素集包括一个或多个元素。对元素的任何描述被理解为指代至少一个元素。多个元素包括至少两个元素。任何“或”的使用都意味着非排他性的“或”。除非另有要求,否则任何描述的方法步骤不必然以特定的图示顺序执行。从第二元素导出的第一元素(例如,数据)包含等于第二元素的第一元素,以及通过处理第二元素和可选的其他数据而生成的第一元素。根据参数做出确定或决定包括根据参数并且可选地根据其他数据做出确定或决定。除非另有说明,一些数量/数据的指标可以是数量/数据本身,也可以是与数量/数据本身不同的指标。计算机程序是执行任务的处理器指令序列。本发明的一些实施例中描述的计算机程序可以是其他计算机程序的独立软件实体或子实体(例如,子程序、库)。本文中所使用的术语“数据库”表示任何有组织的、可搜索的数据集合。计算机可读介质包括非暂态介质,诸如磁存储介质、光存储介质和半导体存储介质(例如,硬盘驱动器、光盘、闪存、DRAM),以及诸如导电电缆和光纤链路的通信链路。根据一些实施例,本发明尤其提供包括被编程以执行本文所述方法的硬件(例如,一个或多个处理器)的计算机系统,以及用于执行本文所述方法的计算机可读介质编码指令。
以下描述通过示例而非必然限制的方式说明了本发明的实施例。
图1示出了根据本发明一些实施例的示例性机器人过程自动化 (RPA)环境10。环境10包括协作以实现特定任务的自动化的各种软件组件。在示例性RPA场景中,公司的员工使用业务应用(例如,文字处理器、电子表格编辑器、浏览器、电子邮件应用)来执行重复性任务,例如向各种客户开具发票。为了实际执行相应任务,员工执行操作/动作系列,该操作/动作系列在本文中被视为过程。构成发票开具过程的部分的示例性操作可以包括打开微软
Figure BDA0003416761590000031
电子表格、查找客户的公司详细信息、将相应详细信息复制到发票模板、填写指示已购买项的发票字段、切换到电子邮件应用、对相应客户撰写电子邮件、将新创建的发票附加到相应电子邮件,然后单击“发送”按钮。RPA环境10的各种元素可以通过模仿由相应人类操作方在执行相应任务的过程中执行的操作集来使相应过程自动化。
模仿人类操作/动作在本文中被理解为涵盖再现当人类操作方在计算机上执行相应操作/动作时发生的计算事件序列,以及再现人类操作方在计算机上执行相应操作的结果。例如,模仿点击图形用户界面的按钮的动作可以包括使操作系统将鼠标指针移动到相应按钮并且生成鼠标点击事件,或者可以备选地包括将相应GUI按钮本身切换到点击状态。
针对此类自动化为目标的过程通常包括:支付处理、开具发票、与商业客户沟通(例如,时事通讯的分发和/或产品供应)、内部沟通(例如,备忘录、会议安排和/或任务安排)、审计,以及工资单处理等。在一些实施例中,专用RPA设计应用30(图2)使人类开发方能够设计软件机器人,以实现有效地对目标过程进行自动化的工作流。工作流通常包括一系列自定义自动化步骤,本文中被视为活动。每个活动可以包括由机器人执行的动作,诸如点击按钮、读取文件、写入电子表格单元格等。活动可以嵌套和/或嵌入。在一些实施例中,RPA设计应用30公开用户界面和工具集,其使开发方对执行顺序和工作流的活动之间的关系进行控制。RPA设计应用30的实施例的一个商业示例是UiPath StudioXTM
一些类型的工作流可以包括但不限于序列、流程、有限状态机 (FSM)和/或全局异常处理程序。序列可以特别适用于线性流程,可以使从一个活动能够流向另一活动,而不会使工作流混乱。流程可以特别适用于更复杂的业务逻辑,通过多个分支逻辑运算符以更多样化的方式实现决策的集成和活动的连接。FSM可以特别适用于大型工作流。FSM可以在其执行中使用有限数量的状态,这些状态由条件(即,转变)或活动触发。全局异常处理程序可以特别适合在遇到执行错误时和针对调试过程时确定工作流行为。
一旦开发出了工作流,工作流就可以以计算机可读的形式编码为 RPA脚本集40(图2)。RPA脚本40可以根据本领域已知的任何数据规范来制定,例如以可扩展标记语言(XML)、Javascript对象表示法(JSON)、或诸如C#、Visual Basic、Java等编程语言的版本来制定。备选地,RPA脚本40可以用RPA特定版本的字节码来制定,或者甚至可以用自然语言(诸如,英语、西班牙语、日语等) 表述的指令序列来制定。在一些实施例中,脚本40预编译成本地处理器指令集(例如,机器代码)。
本领域技术人员将理解,RPA设计应用30可以包括多个组件/模块,这些组件/模块可以在不同的物理机上执行。在说明本发明的云计算实施例的一个此类示例中,RPA设计应用30可以在客户端-服务器配置中执行,其中应用30的一个组件可以向客户端计算机的用户公开机器人设计界面,并且在服务器计算机上执行的应用30的另一组件可以组装机器人工作流并且制定/输出RPA脚本40。例如,开发方可以经由在客户端计算机上执行的web浏览器访问机器人设计界面,而处理在客户端计算机处所接收的用户输入的软件实际上在服务器计算机上执行。
一旦制定,脚本40可以由机器人集12a至12c(图1)执行,该机器人集12a至12c可以进一步由编排器14控制和协调。机器人12a 至12c和编排器14可以各自包括多个计算机程序,其可能会也可能不会在同一台物理机上执行。机器人12a至12c和编排器14的示例性商业实施例分别包括UiPath RobotsTM和UiPath OrchestratorTM。机器人12a至12c的类型包括但不限于有人看管机器人、无人看管机器人、开发机器人(类似于无人看管机器人,但用于开发和测试目的)和非生产机器人(类似于有人看管机器人,但用于开发和测试目的)。
有人看管机器人由用户事件和/或命令触发,并且在同一计算系统上与人类操作方一起操作。在一些实施例中,例如有人看管机器人只能从机器人托盘或命令提示符来启动,并且因此不能从编排器14 处控制和不能在锁定屏幕下运行。无人看管机器人可以在远程虚拟环境中无人看管地运行,并且可以负责远程执行、监控、调度,以及针对作业队列提供支持。
编排器14可以具有各种能力,包括但不限于供应、部署、配置、排队、监控、记录和/或针对机器人12a至12c提供互连性。供应可以包括创建和维护机器人12a至12c和编排器14之间的连接。部署可以包括确保将软件(例如RPA脚本40)正确递送给机器人12a至 12c用于执行。配置可以包括机器人环境和工作流配置的维护和递送。排队可以包括提供作业队列和队列项的管理。监控可以包括跟踪机器人状态和维护用户权限。记录可以包括将日志存储和索引到数据库和/或其他存储机制(例如,SQL、ElasticSearchTM、RedisTM)。编排器14还可以充当针对第三方解决方案和/或应用的集中通信点。
图2示出了根据本发明的一些实施例的机器人12和编排器14的示例性组件。示例性RPA机器人是使用来自微软公司的WindowsTM Workflow Foundation应用编程接口构建的。机器人12可以包括执行器集22和RPA代理24。机器人执行器22被配置为接收指示活动系列的RPA脚本40,该活动系列模拟执行业务过程的人类操作方的动作,并且(多个)机器人执行器22被配置为在相应客户端机上实际执行相应活动序列。在一些实施例中,机器人执行器22包括解释器 (例如,即时解释器或编译器),解释器被配置为将RPA脚本40 翻译成运行时包,该运行时包包括用于执行在相应脚本中所描述的操作的处理器指令。执行脚本40因此可以包括(多个)执行器22,执行器22翻译RPA脚本40并且指示相应主机的处理器将产生的运行时包加载到存储器中并且启动运行时包以执行。
RPA代理24可以管理(多个)机器人执行器22的操作。例如, RPA代理24可以根据来自人类操作方的输入和/或根据调度选择任务/脚本用于由(多个)机器人执行器22执行。代理24可以开始和停止作业,并且配置(多个)执行器22的各种操作参数。当机器人12包括多个执行器22时,代理24可以协调它们的活动和/或协调过程间通信。RPA代理24可以进一步管理RPA机器人12与编排器 14和/或其他实体之间的通信。
在WindowsTM环境中执行的一些实施例中,机器人12默认安装微软WindowsTM服务控制管理器(SCM)管理的服务。因此,此类机器人可以在本地系统账户下打开交互式WindowsTM会话,并且拥有WindowsTM服务的处理器特权。例如,控制台应用可以由SCM管理的机器人启动。在一些实施例中,可以在处理器特权的用户级别 (用户模式,ring 3)安装机器人12。这样的机器人具有与安装相应机器人的用户相同的权限。例如,这样的机器人可以启动相应用户可以启动的任何应用。在支持同时执行多个交互式会话的计算系统 (例如,WindowsTM服务器2012)上,多个机器人可以同时运行,每个机器人在单独的WindowsTM会话中使用不同的用户名。
在一些实施例中,机器人12和编排器14可以在客户端-服务器配置中执行。应当注意,在不偏离本发明的范围的情况下,客户端、服务器端或两者可以包括任何期望数量的计算系统(例如,物理机或虚拟机)。在这样的配置中,包括(多个)执行器22和RPA代理24的机器人12可以在客户端上运行。机器人12可以同时运行多个作业/工作流。RPA代理24(例如,WindowsTM服务)可以充当执行器22的单个客户端侧接触点。代理24可以进一步管理机器人12 和编排器14之间的通信。在一些实施例中,通信由代理24发起,这可以打开到编排器14的WebSocket通道。代理24随后可以使用该通道将关于每个执行器22的状态的通知,例如作为心跳信号,传输到编排器14。转而,编排器14可以使用该通道向机器人12传输确认、作业请求、以及其他数据,诸如RPA脚本40。
编排器14可以在可能分布在多个物理机和/或虚拟机上的服务器端侧执行。在一个此类实施例中,编排器14可以包括可以是web应用的编排器用户界面(UI)17,和服务模块集19。服务模块19还可以包括开放数据协议集(OData)表示状态传输(REST)应用编程接口(API)端点,以及服务API/业务逻辑集。用户可以经由编排器 UI 17(例如,通过在浏览器上打开的专用编排器界面)与编排器14 交互,以指示编排器14执行各种动作,这可以包括例如在机器人12 上开始作业、创建机器人组/池、将工作流分配给机器人、向/从队列添加/删除数据、安排作业以进行无人看管运行、分析每个机器人或工作流的日志等。编排器UI 17可以使用超文本标记语言(HTML)、 JavaScript(JS)或任何本领域已知的其他数据格式。
编排器14可以通过选择性地调用服务API/业务逻辑来执行用户请求的动作。此外,编排器14可以使用REST API端点来与机器人 12通信。REST API可以包括配置、记录、监控和排队功能。配置端点可以用于限定和配置应用程序用户、权限、机器人、资产、发布等。记录REST端点可以用于记录不同的信息,诸如例如错误、机器人发送的显式消息、以及其他特定于环境的信息等。机器人可以使用部署REST端点,以查询要被执行的RPA脚本40的版本。排队REST端点可以负责队列和队列项管理,诸如向队列添加数据、从队列中获取业务、设置业务的状态等。监控REST端点可以监控编排器14的web应用组件和RPA代理24。
在一些实施例中,RPA环境10(图1)还包括连接到RPA数据库18的数据库服务器16。在其中在云计算平台上提供服务器16的实施例中,服务器16可以被具化为数据库服务,例如具化为具有数据库连接器集的客户端。数据库服务器16被配置为选择性地在数据库18中存储与RPA环境10相关的数据和/或从数据库18中取回与 RPA环境10相关的数据。这样的数据可以包括各种机器人12a至 12c的配置参数、机器人池,以及表征由各种机器人执行的工作流的数据、和表征用户、角色、调度、队列等的数据。数据库服务器16 存储和/或取回的数据的另一示例性类型包括表征每个执行机器人的当前状态的数据。又一示例性数据类别包括由各种机器人在执行期间所记录的消息。数据库服务器16和数据库18可以采用本领域已知的任何数据存储协议和格式,诸如结构化查询语言(SQL)、ElasticSearchTM和RedisTM等。在一些实施例中,数据由编排器14收集和管理,例如经由记录REST端点。编排器14还可以向数据库服务器16发出结构化查询。
在一些实施例中,RPA环境10(图1)还包括互连环境10的各个成员的通信信道/链路15a至15e。可以根据本领域已知的任何方法将这种链路实现为例如虚拟网络链接、虚拟专用网络(VPN)或端到端隧道。一些实施例进一步加密在链路15a至15e中的一些或所有链路上流通的数据。
本领域技术人员将理解,RPA环境10的各种组件可以在不同的主机计算机系统(物理设备和/或虚拟机)上实现和/或执行。图3示出了根据本发明的一些实施例的各种此类RPA主机系统20a至20e。每个主机系统20a至20e代表至少具有硬件处理器、存储单元和网络适配器的计算系统(例如,单独的计算设置或互连的计算机集),该网络适配器使相应RPA主机能够连接到计算机网络13和/或其他计算设备。示例性RPA主机20a至20c包括个人计算机、膝上型计算机和平板计算机、移动电信设备(例如,智能电话)和公司大型计算机等。被示为主机20d至20e的其他示例性主机包括云计算平台,诸如由亚马逊TMAWS和微软TMAzureTM运营的服务器群。云计算平台包括根据平台特定协议、集中管理的多个互连服务器计算机系统。客户可以使用特定于平台的接口/软件层/库(例如,软件开发工具包SDK、插件等)和/或特定于平台的命令语法与此类云计算平台进行交互。示例性特定于平台的接口包括AzureTM SDK和AWSTM SDK 等。
又一示例性RPA主机包括本地计算机(例如,服务器)。术语“本地”在本文中用于表示使用相应RPA软件和/或拥有在相应硬件上执行的RPA作业的个人/组织拥有的硬件,而不是例如由与所述个人/组织不同的实体所拥有的云平台。
图4A至图4B示出了以各种配置在RPA主机平台20上运行的示例性软件。图示的RPA主机平台20可以代表图3中的RPA主机20a 至20e中的任何主机,例如独立的个人计算机、本地服务器、云计算平台等。在图4A所示的一个此类实施例中,平台20运行操作系统(OS)30和RPA目标应用程序32的实例,即以由机器人12进行自动化为目标的软件应用,例如微软ExcelTM或web浏览器的实例。 OS 30可以包括任何广泛可用的操作系统,诸如微软WindowsTM、 MacOSTM、LinuxTM、iOSTM或AndroidTM等,所述操作系统包括在应用32和主机平台20的硬件之间接口的软件层。RPA目标应用32一般代表人类操作方用来执行任务的任何计算机程序。示例性应用32 包括文字处理器、电子表格应用、图形应用、浏览器、社交媒体应用和电子通信应用等。
在采用诸如云计算等硬件虚拟化技术的一些实施例中,RPA环境 10的一些组件可以在虚拟机(VM)内运行,如图4B所示。虚拟机在本领域中被称为实际物理机/计算机系统的软件仿真,能够运行操作系统和其他应用。一些云计算平台采用管理程序26来公开VM集28a至28b。管理程序26包括通常以处理器特权的最高级别(即,有时称为根或ring-1的最高特权级别)执行的软件层。在本文中公开VM包括:创建或启用多个虚拟化设备,诸如虚拟处理器和虚拟控制器,并且将这些虚拟化设备呈现给软件以代替主机平台20的真实物理设备。每个虚拟化设备(例如,处理器、输入、输出、存储等)模拟主机平台20的相应物理设备的至少一些功能。例如,在虚拟化处理器上运行的软件可以经由虚拟化网络适配器来发送和/或接收网络流量。管理程序26还可以由多个VM 28a至28b实现RPA主机20的硬件资源的多路复用(共享)。在一些实施例中,这种共享被配置使得每个VM 28a至28b独立操作并且不知道在主机平台20 上并发执行的其他VM。
在一些实施例中,RPA主机平台20可以进一步执行使用计量模块29,该使用计量模块29被配置为确定相应RPA主机的当前工作负载的各种度量,例如当前在相应主机平台上实例化的VM的计数、当前正在运行和/或空闲的RPA机器人12的实例的计数、当前由相应主机平台消耗的硬件资源量(例如,处理器周期、存储器、数据流量)等。计量模块29可以构成如图所示的管理程序26的部分,但这种配置不意味着是限制性的。计量模块29可以使用硬件虚拟化领域中已知的任何方法来确定工作负载量度,例如经由内存自省或通过与插入到各个虚拟机28a至28b中的计量代理集协作。
图5图示了根据本发明的一些实施例的、跨多个RPA主机平台管理RPA活动的示例性编排器14。虽然图5仅显示了三个RPA主机平台,但本领域技术人员将理解本描述同样扩展到几乎任何数量的RPA主机。每个图示的RPA主机平台20f至20g至20h可以代表不同的计算系统,例如单独的计算机、本地服务器和/或云计算平台。每个主机平台可以代表根据不同协议操作和/或由不同实体拥有的云计算平台。例如,平台20f可以包括亚马逊AWSTM服务器,而平台 20g可以代表微软AzureTM服务器。转而,编排器14的一些或所有组件可以在另一RPA主机20h(例如,来自谷歌公司的GoogleTM云平台服务器)上执行。编排器14可以通过通信网络13与RPA主机 20f至20g通信,通信网络13可以包括互联网。
每个RPA主机平台20f至20g可以执行多个虚拟机(示例性虚拟机在图5中被示为虚拟机28c至28d至28e)。每个VM可以由唯一标识符(例如,VM ID)标识,从而可以选择性地启动、停止、检查、配置等。在一些实施例中,当前在主机上公开/实例化的VM可以被分组到池中,诸如作为图5中所示的机器池38。这样的分组可以反映共同的所有权、共同的硬件或软件配置、和/或对共同任务的分配。例如,属于一个机器池的机器可以由客户A拥有和/或操作,而属于另一机器池的机器可以由客户B拥有和/或操作。在另一示例中,属于一个机器池的VM可以保留/分配给一种类型的RPA作业,而属于另一机器池的VM可以保留/分配给另一类型的RPA作业。
每个RPA主机平台20f至20g还可以执行多个RPA机器人,该多个RPA机器人中一些RPA机器人可以在VM内运行。每个RPA 机器人可以通过唯一的机器人ID来标识,以便它可以被选择性地启动、停止、检查、配置、分配作业等。一些RPA机器人也可以分组到池中(例如,参见如图5所示的机器人池48a至48b)。这种分组可以反映共同的所有权、共同的机器人类型、对共同任务的分配等。在同一RPA主机上或在同一VM内执行的机器人不必然是同一机器人池的部分。在图5的示例中,RPA机器人12d至12e至12f属于机器人池48a,而机器人12g不属于机器人池48a。
在一些实施例中,编排器14维护当前正在执行的RPA作业与执行相应作业的RPA主机、(多个)VM和/或(多个)RPA机器人之间的映射。编排器14还可以将机器人映射到它们正在其上运行的 VM,将单个VM映射到它们相应的机器池,和/或将单个RPA机器人映射到它们相应的机器人池。这种映射可以被编码并且存储为 RPA数据库18的部分。
在一些实施例中,自动化优化器50被配置为代表多个客户动态地缩放(scale)RPA主机平台20f至20g上的RPA活动,如下文详细所示。尽管图5将优化器50示出为编排器14的部分,但是这种配置并不意味着限制。在备选实施例中,自动化优化器50可以作为与编排器14分离的实体来执行,并且甚至可以在不同的RPA主机平台上执行。在这样的实施例中,优化器50可以经由专用应用编程接口(API)与编排器14通信。
自动化优化器50可以与客户数据库52和VM模板储存库54进行接口。这样的接口可以具化为数据库服务器。在一些实施例中,客户数据库52可以包括指示表征多个不同RPA客户中的每个RPA 客户的各种参数值的客户记录集。例如,示例性客户记录可以指定相应RPA客户和自动化优化器50的操作方之间的服务水平协议 (SLA)的各个方面,诸如类型、持续时间和/或用于向相应客户提供RPA服务的时间窗口等。客户记录还可以指示相应客户用于RPA 目的RPA主机平台(例如,云计算平台,诸如亚马逊AWSTM)。例如,相应客户记录可以包括相应客户的本地服务器的位置指示符(例如,URL、网络地址)、用于RPA活动的本地服务器。客户记录还可以包括用于访问相应RPA主机平台或相应RPA主机平台的配置界面的客户凭证集(例如,用户名、密码等)。
存储在客户数据库52中的客户记录还可以包括:是否允许自动化优化器50代表相应客户来实例化和/或终止虚拟机的指示符。编码在客户记录中的其他信息可以包括虚拟机的标识符和/或当前由相应客户分配给RPA活动的VM池的标识符。在这样的实施例中,编排器14可以将RPA作业唯一地分配给相应的所指示的目标VM,或唯一地分配给从所指示的机器池中选择的VM。类似地,客户记录可以包括RPA机器人的标识符和/或机器人池的标识符。在这样的实施例中,编排器14可以将作业唯一地分配给所指示的机器人或所指示的机器人池的成员。
客户记录还可以包括各种RPA工作负载参数值,诸如最大数量和/或最小数量的VM和/或可以代表相应客户在所选择的RPA主机平台上被同时实例化的RPA机器人的所选择的类型、在所选择的 RPA主机平台上用于执行RPA活动的首选时隙等。
客户记录还可以包括存储在模板储存库54中的标识符或VM模板,相应模板用于代表相应客户实例化VM。客户记录还可以指示要针对相应客户执行的RPA作业的类型。
在一些实施例中,动态地向上和/或向下缩放RPA活动包括:优化器50在所选择的RPA主机平台上实例化新VM和/或终止现有VM 实例。备选地,动态扩展RPA活动可以包括在选择RPA主机平台时启动和/或停止VM。实例化VM可以包括公开组成相应VM的虚拟硬件设备集(例如,虚拟处理器、虚拟网络设备等),和/或创建在相应VM内执行的软件组件(例如,RPA机器人)的新实例。在 VM的虚拟处理器上执行的软件在本文中被称为在相应的VM内执行。在图4B所示的示例中,OS 30和机器人12在VM 28a内运行。相反,管理程序26在VM 28a至28b外部执行。
针对RPA目的而实例化的VM可以被赋予RPA特定软件,诸如, RPA机器人集12和/或RPA目标应用32的实例。机器人12和/或目标应用32可以根据RPA作业的类型而改变。例如,用于执行电子表格数据的机器人操作而实例化的VM可以包括微软ExcelTM的实例,而为web数据机器人抓取而实例化的另一VM可以不包括微软 ExcelTM的实例。
一些实施例使用VM模板,以表征当前可用于RPA目的实例化的每种类型的VM。示例性VM模板包括共同表征相应VM的参数值集。例如,VM模板可以包括硬件参数值集,诸如,处理器类型、针对相应VM所保留的虚拟内存量或相应VM的所保留带宽/最大通信吞吐量等。VM模板还可以包括特定软件参数的值,诸如要在相应 VM上实例化的操作系统的类型和版本。VM模板还可以包括要在相应VM上实例化的软件组件的存储器映像(例如,快照),诸如(多个)RPA机器人12和/或RPA目标应用32等。本文中软件实体的映像表示一种数据结构,当加载到计算机系统的存储器中时,它使相应计算机系统执行相应软件实体。
一些VM模板可以包括将在其中实例化相应VM的目标RPA主机平台的指示符(例如,URL或网络地址)。模板还可以包括用于将相应VM实例化到目标主机平台上的命令集和/或脚本。这样的VM 模板可以是主机特定的,即每个模板可以被制定和配置为用于在特定类型的RPA主机上实例化相应VM。例如,与在诸如微软TMAzureTM的云计算平台相比,可以存在用于在本地(场内)机上供应web抓取机器人的不同的VM模板。模板可以由工程师团队根据客户规范和/或愿望开发、测试和维护,或者由客户自己提供。模板可以被索引、存储在模板储存库54中并且从模板储存库54中选择性地取回,模板储存库54可以包括使用本领域已知的任何协议和数据格式的数据库(例如,关系数据库、RedisTM存储等)。模板储存库54还可以存储每个VM模板与RPA作业类型之间的关联的指示符,该RPA 作业类型需要相应VM模板的实例化。
图6图示了根据本发明的一些实施例的、自动化优化器50的示例性操作。优化器56接收或取回由编排器14维护的RPA作业队列56的内容。在一些实施例中,队列56包括指示当前等待执行的RPA 作业的作业指示符集。本文的术语“作业”表示执行RPA工作流的实例。相应工作流可以以计算机可读形式编码为RPA脚本(参见例如,图2中的脚本40)。作业可以例如经由编排器UI 17(图2)由用户直接添加到队列56,或者可以由编排器14作为调度等的部分自动地添加。作业可以在完成时从队列56中移除。
在一些实施例中,队列56中的每个作业由作业指示符表示,该作业指示符转而可以包括代表其执行相应作业的客户的指示符,以及必须在其上执行相应作业的目标机的标识符(例如,图5中的 VM28c)。备选地,作业指示符可以包括机器池(例如,图5中的机器池38)的标识符,该机器池包括能够执行相应作业的机器或保留用于执行相应作业的机器,和/或机器人池(例如,图5中的机器人池48b)的标识符,该机器人池包括用于执行相应作业的RPA机器人。在一些实施例中,作业指示符可以进一步指示(例如,经由指向模板储存库54的指针)代表预先配置用于执行相应RPA作业的机器的VM模板。作业指示符还以可以指示用于执行相应RPA作业的期望时间窗口、以及相应作业的优先级等。
自动化优化器50还可以接收或访问当前RPA分类账58,分类账 58表征当前正在执行的RPA作业,或者已经被分配给各种机器人/ 机器用于执行的RPA作业。示例性分类账58可以包括多个作业条目,每个作业条目指示相应作业的当前状态(例如,在执行中、完成、暂停、挂起、过期、表征在执行期间已经发生的错误类型的错误代码等)以及相应作业当前分配至其的机器和/或RPA机器人12 的实例的标识符。
在一些实施例中,优化器50可以从RPA主机平台20j(图6)接收工作负载指示符64,指示符64指示所选择的机器和/或在相应RPA 主机平台上实例化的机器人的当前状态和/或工作负载。示例性工作负载指示符64可以包括当前代表所选择的客户运行的VM的计数、代表所选择的客户执行的机器人实例的计数、当前属于所选择的机器池的VM的计数、以及当前属于所选择的机器人池(例如,图6 中的机器人池48c)的RPA机器人的计数。另一示例性工作负载指示符64可以指示代表所选择的客户在RPA活动上消耗的硬件资源 (例如,存储器、处理器周期、数据流量)的当前量。工作负载指示符64可以按需生成或自动生成,例如使用心跳模型。当RPA机器人被托管在云计算平台上时,工作负载指示符64可以由云管理接口响应于由自动化优化器50发送的查询而被生成。在一些实施例中,工作负载指示符64可以由在相应RPA主机上运行的软件模块生成,例如图4B中的使用计量模块29。
作为RPA活动的动态缩放的部分,优化器50可以经由发送到所选择的RPA主机平台(诸如,图6中的平台20j)的供应请求62来启动供应过程。请求62可以包括以编程/脚本语言制定的命令集和/ 或脚本。示例性供应请求62可以包括认证交换,随后是在RPA主机平台20j上实例化虚拟机的命令。另一示例性请求62可以包括要被实例化的虚拟机的映像和/或指示要被执行的工作流的RPA脚本 40。又一示例性供应请求62包括用于在最近所供应的RPA机器人和编排器14之间建立虚拟网络连接(例如,VPN链接)的命令集。再一示例性供应请求62包括用于终止当前在RPA主机20j上公开的所选择的VM的命令集。
响应于接收请求62,RPA主机平台20j可以将供应响应63传输回到自动化优化器50,响应63包括例如接收供应请求的确认,所接收的请求的状态,该状态指示请求是否被成功执行或者执行相应请求中所指定的操作是否已经失败,错误代码集,其指示未能执行所接收的请求中所指定的程序的原因等。供应响应63还可以包括凭证集,用于访问相应供应资源(例如,VM、机器人)和/或相应供应资源的地址(例如,网络地址、统一资源定位符URL、完全合格域名FQDN)。
在一些实施例中,例如其中RPA主机20j是云计算平台,优化器 50可以不与托管所选择的VM或机器人的实际物理机来交换项62 至项63,而是与云管理服务器/接口进行交换,云管理服务器/接口可以随后选择和配置相应物理机,以接收和/或执行相应VM/(多个)机器人。
图7A至图7B示出了根据本发明的一些实施例的由自动化优化器 50执行的示例性步骤序列。步骤序列202至204可以等待直到RPA 作业队列56包括未完成的作业。如果是,则步骤206可以从队列56 中选择作业。在步骤208中,优化器208可以标识与所选择的作业相关联的客户,并且在数据库52中查找相应客户的客户记录。在一些实施例中,针对所选择的作业的队列条目可以指示相应客户。接下来,步骤210可以根据作业指示符和/或根据客户记录,标识用于执行相应作业的RPA主机平台,并且取回用于访问相应主机平台的凭证(例如,用户名、密码)。优化器50因此可以确定相应RPA 主机平台是否是独立机器、本地服务器、云计算平台等,并且可以进一步确定相应RPA主机的位置(例如,网络地址)。在一些实施例中,客户记录和/或队列条目/所选择的作业的作业指示符还包括:用于执行相应作业的目标机/机器池或目标RPA机器人/机器人池的标识符。当指示机器或机器人池时,自动化优化器50可以从相应池中选择目标机和/或机器人,如下文进一步所示。
一些实施例接下来可以确定是将当前作业分配给现有的机器/机器人,还是针对任务供应新的机器/机器人。为了做出决定,步骤212 可以确定是否满足供应条件。在一些实施例中,步骤212包括根据存储在客户数据库52中的客户记录来确定优化器50是否被允许代表当前作业的相应客户或所有者,以实例化新机器和/或机器人。在一个用例场景中,客户可以管理云计算平台(例如亚马逊AWSTM) 上的机器池,池中的VM根据每日计划被保留给和/或被分配给RPA 活动。然而,客户自己托管、管理和维护相应机器,并且不允许优化器50实例化新的机器/机器人或终止相应池的现有机器/机器人。在这种情况下,优化器50可以仅将当前作业分配给相应机器/机器人池的现有机器/机器人,如下面进一步详述的。
在另一用例场景中,当前作业的RPA客户/所有者允许优化器50 根据需求动态地向上和向下缩放计算资源,如与相应客户相关联的客户记录中所指示的。在这种情况下,确定是否满足供应条件(图 7A中的步骤212)可以包括:确定已经在所标识的RPA主机平台上实例化的计算资源是否足以处理当前作业。该确定可以根据从相应 RPA主机平台接收的RPA分类账58和/或工作负载指示符64的内容进行。在一些实施例中,工作负载指示符64可以指示例如当前在相应RPA主机平台上运行RPA作业的VM和/或RPA机器人的计数。同时,RPA分类账58可以指示每个RPA作业的当前状态(例如,运行、挂起、完成等)。一些实施例可以进一步根据机器和/或机器人实例的最大允许计数来确定是否满足供应条件,如在与相应客户间的许可或服务水平协议(SLA)中所指示的,和/或如在存储在客户数据库52中的、与相应客户相关联的客户记录所指示的。在一个此类示例中,当所选择的池中的所有RPA机器人当前都是繁忙的时,以及当所选择的池中的RPA机器人的当前计数低最大于允许机器人计数时,优化器50可以确定提供条件被满足。
在一些实施例中,可以根据RPA作业队列56的当前内容,进一步确定是否满足供应条件。例如,一些实施例可以根据队列56的当前长度(例如,未完成作业的计数、各种类型的作业的计数),根据RPA队列56中当前作业和/或其他未完成作业的估计执行持续时间,和/或根据队列中的当前作业或其他作业的优先级,来确定是否满足供应条件。用于确定是否满足供应条件的另一标准包括作业延迟,例如,由作业队列56中的所选择的作业(或所选择的作业类型的作业)花费的平均时间量。用于确定是否满足供应条件的进一步标准可以包括:目标机池当前是否包含具有用于执行当前作业的适当硬件和/或软件配置的机器。例如,优化器50可以确定目标机池中的任何机器是否根据特定VM模板被实例化,和/或任何机器是否具有RPA目标应用32的特定类型和/或版本等。在一个这样的例子中,例如在目标池中当前没有能够和/或被配置为执行当前RPA作业的机器时,优化器50可以确定满足供应条件。
用于决定是否满足供应条件的其他标准可以包括当前时间和/或日历日期。在一个这样的示例中,可以允许优化器50仅在特定的时间窗口内(例如,在夜间),在特定的日历日期(例如,每月的第一天、每个月的最后一个工作日)和/或特定工作日(例如,周末) 等,来动态缩放RPA主机平台的计算资源。此类时间偏好和限制可用于成本控制,并且可以在与相应客户相关联的客户数据库记录中和/或与当前作业相关联的RPA队列条目中指定。
当不满足供应条件时(步骤214返回“否”),一些实施例可以前进到图7B中所示并且在下面详述的步骤序列。同时,优化器14 可以将当前作业分配给现有的VM和/或RPA机器人实例。可以根据各种标准,诸如根据相应机器的硬件和/或软件配置,根据相应机器的当前工作负载,根据在相应机上执行的机器人实例的计数等,从所选择的机器/机器人池中选择相应VM和/或机器人。例如,编排器 14可以选择当前负载最少的VM和/或机器人。可以根据机器人过程自动化领域中已知的、并且超出了本文所描述的范围的任何方法来执行启动、停止、监控相应VM/机器人以及与相应VM/机器人通信的任务。
当满足供应条件时(步骤214返回“是”),一些实施例可以在相应RPA主机平台上供应新机器,这转而包括实例化RPA机器人实例集。步骤216可以根据当前作业和/或根据诸如当前可用性、客户偏好等其他标准从模板储存库54中选择VM模板。在进一步的步骤218中,优化器50可以根据所选择的模板和附加的作业参数来发起VM供应过程。步骤218可以包括向所选择的RPA主机平台发送供应请求62和从其(或从相应RPA主机平台的云配置接口)接收响应63。供应请求62可以包括使相应RPA主机平台利用指定的参数和/或使用指定的VM模板来实例化新的VM的命令/指令集。该组命令/指令可以是特定于平台的,因为它们符合特定于平台的协议并且可以根据特定于平台的API(例如AzureTMSDK与AWSTMSDK) 来制定。
响应于接收到指示成功供应新VM的供应响应63,步骤220可以将新实例化的机器人实例连接/注册到RPA编排器14。将每个机器人连接到编排器14可以包括:针对相应RPA机器人生成唯一标识符,并且为相应机器人提供编排器14的位置指示符(例如,URL、网络地址等)。在一些实施例中,连接还可以包括:在相应机器人和编排器14之间建立虚拟网络(例如,VPN)或对等连接。这样的操作有效地使相应机器人准备好接收来自编排器14的作业分配。
步骤222可以将新实例化的VM和/或机器人实例添加到现有机器 /机器人池,例如通过更新将单个机器与机器池和/或客户相关联的数据库条目。当在相应RPA主机平台上当前没有限定这样的池时,步骤222可以初始化新池,以包括新实例化的VM和/或(多个)RPA机器人。在进一步的步骤224中,一些实施例更新RPA分类账58,以反映新VM和/或(多个)机器人实例的添加。RPA分类账58可以由编排器14进一步更新,以反映对于新实例化的RPA机器人的新RPA作业分配。
图7B示出了由自动化优化器50的一些实施例执行的、另一步骤序列,该序列图示了通过例如终止空闲VM来缩减计算资源。步骤序列232至234可以查找RPA分类账58并且确定是否满足终止条件,并且当满足时,优化器50可以终止至少一个VM并且将其从相应机器池中移除。
一些实施例根据分类账58的当前内容、代表客户执行RPA作业的机器/机器人的当前工作负载,并且可能进一步根据客户偏好来确定是否满足终止条件。在一个示例中,步骤234可以使用RPA分类账58中的信息和至少一个工作负载指示符64的内容以标识当前空闲的机器和/或机器人实例,即当前没有对其分配任何RPA作业的机器和/或机器人实例。优化器50然后可以根据相应机器/机器人或根据相应机器/机器人所属的机器/机器人池来标识客户,并且查找客户数据库52,以确定与相应客户相关联的偏好集。当所选择的机器或机器人实例已经空闲时段超出预定阈值时,示例性优化器可以确定满足终止条件。
一些实施例还可以根据所选择的VM或RPA机器人当前是否挂起或遇到技术困难,诸如故障(例如,硬件或软件异常、RPA脚本 40缺陷等)、通信失灵等来确定是否满足终止条件。当所选择的机器或机器人实例与编排器14未通信的时间段超过预定阈值时(例如,当编排器14没有从相应VM/机器人接收到预定数量的连续心跳信号时),一个这样的示例性优化器50可以确定满足终止条件。
用于确定是否满足终止条件的其他标准包括:RPA作业队列56 的当前内容、平均作业延迟、在相应RPA主机平台上实例化的VM 和/或RPA机器人的当前计数、和/或与相应客户关联的机器或机器人池中的VM和/或机器人的当前计数。当队列56包括属于同一客户或很可能被分配给来自同一池的机器或机器人的RPA作业时,一个示例性优化器50可以决定不终止当前空闲的机器或机器人实例。
用于确定针对所选择的机器是否满足终止条件的其他示例性标准包括:是否允许优化器50代表相应客户来缩放计算资源,以及当前时间和/或日历日期等。
当所选择的机器满足终止条件时,步骤238可以发起相应机器的终止,例如通过将供应请求62发送到相应RPA主机平台,请求62 标识所选择的机器,并且请求62被制定,以使相应主机平台终止相应机器。响应于接收到指示成功终止的供应响应63,步骤240可以将先前在终止的VM上执行的RPA机器人与编排器14断开连接。
步骤序列242至244然后可以将终止的VM和/或(多个)机器人从它们相应的池中移除,并且更新RPA分类账58以反映相应机器和/或机器人实例的终止。执行然后可以进行到上面关于图7A所描述的步骤202。
图8示出了被编程以执行本文所描述的一些方法的计算机系统70 的示例性硬件配置。例如,计算机系统70可以代表图3中的任何 RPA主机平台20a至20e以及执行自动化优化器50。图示的设备是个人计算机;诸如服务器、移动电话、平板计算机、可穿戴设备等其他设备可以略有不同的配置。(多个)处理器72包括被配置为利用信号和/或数据集来执行计算和/或逻辑操作的物理设备(例如,微处理器、形成在半导体衬底上的多核集成电路)。这种信号或数据可以以处理器指令的形式(例如,机器代码)被编码并且传送到(多个)处理器72。(多个)处理器72可以包括中央处理单元(CPU) 和/或图形处理单元(GPU)阵列。
存储器单元73可以包括易失性计算机可读介质(例如,动态随机存取存储器——DRAM),用于存储在执行操作的过程中由(多个)处理器72访问或生成的数据/信号/指令编码。输入设备74可以包括计算机键盘、鼠标和麦克风等,包括允许用户将数据和/或指令引入计算机系统70的相应硬件接口和/或适配器。输出设备75可以包括诸如监视器的显示设备和扬声器等,以及硬件接口/适配器(诸如,图形卡),使相应计算系统能够向用户传送数据。在一些实施例中,输入和输出设备74至75共享公共硬件(例如,触摸屏)。存储设备76包括允许软件指令和/或数据的非易失性存储、读取和写入的计算机可读介质。示例性存储设备包括磁盘和光盘和闪存设备,以及诸如CD和/或DVD盘和驱动器的可移动介质。(多个)网络适配器77使计算系统70能够连接到电子通信网络(例如,图3中的网络13)和/或其他设备/计算机系统。
控制器集线器78一般代表多个系统、外围设备和/或芯片组总线,和/或所有其他电路,使(多个)处理器72与计算机系统70的其余硬件组件之间能够进行通信。例如,控制器集线器78可以包括存储器控制器、输入/输出(I/O)控制器和中断控制器。取决于硬件制造商,一些这样的控制器可以合并到单个集成电路中,和/或可以与(多个)处理器72集成。在另一示例中,控制器集线器78可以包括将处理器72连接到存储器73的北桥,和/或将处理器72连接到设备 74、75、76和77的南桥。
上述示例性系统和方法实现了复杂RPA操作的用户友好管理,诸如代表多个RPA客户并且在多租户计算平台上(例如,在云中或在将云与本地计算相结合的混合配置)执行多项RPA作业。
在这种复杂的计算环境中成功执行RPA依赖于至少两个不同类别的活动。第一种活动类别包括将多样化的编队或软件机器人配置和部署到各种计算环境,以满足每个RPA客户的特定需求和偏好。第二种活动类别包括(尽可能根据复杂的时间表和/或节省成本的策略)有效地将RPA作业分配给机器人编队、监控并且尽可能地协调多个机器人的执行。第一类活动可能需要云计算和硬件虚拟化等方面的专业知识。同时,第二类活动可能需要扎实的知识或RPA技术和软件。由于连接这两个类别所需的专业知识非常广泛,在传统RPA中,第一类活动通常与第二类活动解耦。例如,第一类活动和第二类活动通常由团队的不同成员或不同的服务提供方/承包方执行。
与此类传统RPA实践相比,本发明的一些实施例将机器人供应和维护活动自动化,并且以强调效率和成本节约同时易于缩放的方式将它们与RPA作业管理活动无缝集成。在一些实施例中,自动化优化器被配置为响应于针对RPA作业的需求变化而自动放大和缩小机器人编队。自动化优化器可以进一步与RPA编排器接口,该编排器将RPA作业分配给相应机器人并且管理相应机器人的执行。
与其中编队或机器人是静态的(即不会自动演化以适应需求变化) 传统RPA系统相比,在一些实施例中,可用于RPA任务的机器人数量可以通过自动供应附加的虚拟机来动态调整,该附加的虚拟机能够在需求高时执行附加的机器人实例,并且在需求低时移除VM。一些实施例根据各种标准确定是否满足供应条件,诸如当前未完成作业的计数(作业队列的长度)、例如根据针对特定客户执行RPA 作业的VM的当前计数所确定的当前负载、具有队列中作业的特定客户的许可证或服务水平协议(SLA),以及一天中的当前时间等。当满足供应条件时,一些实施例自动将预加载具有机器人实例集的新VM供应到所选择的RPA主机平台上。一些实施例还自动地将新供应的机器人连接到编排器,该编排器被配置为将作业分配给机器人编队并且跨多个机器人来监控和协调RPA活动。通过选择性地部署具有来自可用预配置模板库的、具有所需特性的VM模板,所供应的VM的类型可以根据客户和/或根据当前在作业队列中的作业类型而变化。
自动化优化器的一些实施例能够将VM供应到各种RPA主机平台,诸如商业云计算平台(例如,亚马逊AWSTM、微软AzureTM等)、本地服务器、独立计算机、和混合云和本地资源的混合配置。每个客户可以指定他/她对主机平台的选择,并且向自动化优化器提供用于访问相应主机平台的凭证。一些实施例还使客户能够针对各种 RPA活动设置专用机器和/或机器人池。
所描述的系统和方法还能够以无缝并且用户友好的方式升级机器人编队。自动化优化器响应VM终止而自动地丢弃旧版本的机器人。新配置的机器可以预装升级版本的RPA机器人,从而更新编队。这种更新/升级可以按需根据调度、根据针对当前作业需求、按需等逐步或批量进行(例如,升级整个机器人池)。
一些实施例通过从RPA开发方的肩上去除机器人部署和维护的负担来促进RPA操作。自动化优化器可以接管诸如在不同计算平台上实例化VM、将机器人部署到相应平台、将机器人连接到RPA编排器、保护各种RPA组件之间的通信等高度技术性任务。因此,一些实施例可以使缺乏云计算和虚拟化方面的高级编程技能或专业知识的用户更容易使用RPA技术。
本领域技术人员将清楚,可以在不脱离本发明的范围的情况下以多种方式改变上述实施例。因此,本发明的范围应由以下权利要求及其法律上的等效物确定。

Claims (21)

1.一种机器人过程自动化RPA方法,包括采用计算机系统的至少一个硬件处理器以:
根据RPA作业队列,并且进一步根据当前在所选择的RPA主机平台上实例化的RPA机器人池,确定供应条件是否被满足;
作为响应,当所述供应条件被满足时,根据虚拟机VM模板在所选择的RPA主机平台上发起虚拟机的自动供应,所述VM模板根据所述队列中的RPA作业而从模板库中被选择,其中执行所述VM模板使所述VM实例化RPA机器人,以用于执行所述RPA作业;
响应于所述VM的所述供应,将所述RPA机器人连接到RPA编排器,所述RPA编排器被配置为将所述RPA作业队列分配给所述RPA机器人池;
确定机器终止条件是否被满足;以及
作为响应,如果是,则发起所述VM的自动终止。
2.根据权利要求1所述的方法,其中所述RPA主机平台包括:从由云计算平台和本地服务器组成的组中所选择的项。
3.根据权利要求1所述的方法,进一步包括:根据拥有所述RPA作业的客户,采用所述至少一个硬件处理器,以从多个可用RPA主机平台中选择所述RPA主机平台。
4.根据权利要求1所述的方法,包括:采用所述至少一个硬件处理器,以根据所述池内的RPA机器人的计数,确定所述供应条件是否被满足。
5.根据权利要求4所述的方法,包括:采用所述至少一个硬件处理器,以进一步根据可配置用于所述RPA主机平台的执行的RPA机器人的最大允许计数,确定所述供应条件是否被满足。
6.根据权利要求1所述的方法,包括:采用所述至少一个硬件处理器,以进一步根据从所选择的所述RPA主机平台接收的工作负载指示符,确定所述供应条件是否被满足,所述工作负载指示符指示所选择的所述RPA主机平台的当前计算负载。
7.根据权利要求1所述的方法,包括:采用所述至少一个硬件处理器,以进一步根据当前时间,确定所述供应条件是否被满足。
8.根据权利要求1所述的方法,其中所述VM模板包括:预加载有所述RPA机器人的所述VM的存储器映像和目标软件应用的实例,其中执行所述RPA作业包括:模仿人类操作方与所述目标软件应用之间的交互。
9.根据权利要求1所述的方法,包括:采用所述至少一个硬件处理器,以进一步根据所述RPA机器人池中的至少一个机器人当前是否无响应,确定所述供应条件是否被满足。
10.根据权利要求1所述的方法,包括:采用所述至少一个硬件处理器,以进一步根据所述RPA机器人池中的至少一个机器人是否已经报告了执行错误,确定所述供应条件是否被满足。
11.一种计算机系统,包括被配置为执行自动化优化器的至少一个硬件处理器,其中执行所述自动化优化器包括:
根据RPA作业队列,并且进一步根据当前在所选择的RPA主机平台上实例化的RPA机器人池,确定供应条件是否被满足;
作为响应,当所述供应条件被满足时,根据VM模板在所选择的RPA主机平台上发起VM的自动供应,所述VM模板根据所述队列中的RPA作业而从模板库中被选择,其中执行所述VM模板使所述VM实例化RPA机器人,以用于执行所述RPA作业;
响应于所述VM的所述供应,将所述RPA机器人连接到RPA编排器,所述RPA编排器被配置为将所述RPA作业队列分配给所述RPA机器人池;
确定机器终止条件是否被满足;以及
作为响应,如果是,则发起所述VM的自动终止。
12.根据权利要求11所述的计算机系统,其中所述RPA主机平台包括:从由云计算平台和本地服务器组成的组中所选择的项。
13.根据权利要求11所述的计算机系统,其中所述至少一个硬件处理器还被配置为:根据拥有所述RPA作业的客户,从多个可用RPA主机平台中选择所述RPA主机平台。
14.根据权利要求11所述的计算机系统,其中所述至少一个硬件处理器进一步被配置为:根据所述池内的RPA机器人的计数,确定所述供应条件是否被满足。
15.根据权利要求14所述的计算机系统,其中所述至少一个硬件处理器进一步根据可配置用于所述RPA主机平台的执行的RPA机器人的最大允许计数,确定所述供应条件是否被满足。
16.根据权利要求11所述的计算机系统,其中所述至少一个硬件处理器被配置为:进一步根据从所选择的所述RPA主机平台接收的工作负载指示符,确定所述供应条件是否被满足,所述工作负载指示符指示所选择的所述RPA主机平台的当前计算负载。
17.根据权利要求11所述的计算机系统,其中所述至少一个硬件处理器还被配置为:进一步根据当前时间,确定所述供应条件是否被满足。
18.根据权利要求11所述的计算机系统,其中所述VM模板包括:预加载有所述RPA机器人的所述VM的存储器映像和目标软件应用的实例,其中执行所述RPA作业包括:模仿人类操作方与所述目标软件应用之间的交互。
19.根据权利要求11所述的计算机系统,其中所述至少一个硬件处理器被配置为:进一步根据所述RPA机器人池中的至少一个机器人当前是否无响应,确定所述供应条件是否被满足。
20.根据权利要求11所述的计算机系统,其中所述至少一个硬件处理器还被配置为:进一步根据所述RPA机器人池中的至少一个机器人是否已经报告了执行错误,确定所述供应条件是否被满足。
21.一种非暂态计算机可读介质,存储有指令,所述指令在由计算机系统的至少一个硬件处理器执行时,使所述计算机系统形成自动化优化器,所述自动化优化器被配置为:
根据RPA作业队列,并且进一步根据当前在所选择的RPA主机平台上实例化的RPA机器人池,确定供应条件是否被满足;
作为响应,当所述供应条件被满足时,根据VM模板在所选择的RPA主机平台上发起VM的自动供应,所述VM模板根据所述队列中的RPA作业而从模板库中被选择,其中执行所述VM模板使所述VM实例化RPA机器人,以用于执行所述RPA作业;
响应于所述VM的所述供应,将所述RPA机器人连接到RPA编排器,所述RPA编排器被配置为将所述RPA作业队列分配给所述RPA机器人池;
确定机器终止条件是否被满足;以及
作为响应,如果是,则发起所述VM的自动终止。
CN202111548992.8A 2020-12-18 2021-12-17 机器人过程自动化(rpa)机器人的动态云部署 Pending CN114647485A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/247,669 2020-12-18
US17/247,669 US20220197249A1 (en) 2020-12-18 2020-12-18 Dynamic Cloud Deployment of Robotic Process Automation (RPA) Robots

Publications (1)

Publication Number Publication Date
CN114647485A true CN114647485A (zh) 2022-06-21

Family

ID=78918530

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111548992.8A Pending CN114647485A (zh) 2020-12-18 2021-12-17 机器人过程自动化(rpa)机器人的动态云部署

Country Status (5)

Country Link
US (1) US20220197249A1 (zh)
EP (1) EP4016294A1 (zh)
JP (1) JP2022097438A (zh)
KR (1) KR20220088333A (zh)
CN (1) CN114647485A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115580616A (zh) * 2022-12-07 2023-01-06 北财在线科技(北京)有限公司 一种多租户架构多云平台下的云rpa系统及应用方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230222044A1 (en) * 2022-01-07 2023-07-13 Jpmorgan Chase Bank, N.A. System and method for automatically monitoring performance of software robots
CN117076091B (zh) * 2023-10-12 2024-01-26 宁波银行股份有限公司 一种多引擎接口调度方法及装置、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100153482A1 (en) * 2008-12-10 2010-06-17 Full Armor Corporation Cloud-Based Automation of Resources
US10264058B1 (en) * 2011-06-30 2019-04-16 Emc Corporation Defining virtual application templates
US10042657B1 (en) * 2011-06-30 2018-08-07 Emc Corporation Provisioning virtual applciations from virtual application templates
KR102364712B1 (ko) * 2015-04-03 2022-02-18 한국전자통신연구원 분산 클라우드 환경에서 서비스 오케스트레이션 시스템 및 방법
US10860905B1 (en) * 2019-10-16 2020-12-08 UiPath, Inc. Long running workflows for document processing using robotic process automation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115580616A (zh) * 2022-12-07 2023-01-06 北财在线科技(北京)有限公司 一种多租户架构多云平台下的云rpa系统及应用方法
CN115580616B (zh) * 2022-12-07 2023-03-24 北财在线科技(北京)有限公司 一种多租户架构多云平台下的云rpa系统及应用方法

Also Published As

Publication number Publication date
KR20220088333A (ko) 2022-06-27
JP2022097438A (ja) 2022-06-30
EP4016294A1 (en) 2022-06-22
US20220197249A1 (en) 2022-06-23

Similar Documents

Publication Publication Date Title
US10733010B2 (en) Methods and systems that verify endpoints and external tasks in release-pipeline prior to execution
US11321130B2 (en) Container orchestration in decentralized network computing environments
US9967318B2 (en) Apparatus, systems, and methods for cloud agnostic multi-tier application modeling and deployment
US7519711B2 (en) Method for middleware assisted system integration in a federated environment
US9792141B1 (en) Configured generation of virtual machine images
CN112668386A (zh) 使用机器人过程自动化用于文档处理的长时间运行工作流
US11604627B2 (en) Systems and methods for on-demand provisioning of robotic process automation environments
US20220197249A1 (en) Dynamic Cloud Deployment of Robotic Process Automation (RPA) Robots
US20200136930A1 (en) Application environment provisioning
US11948005B2 (en) Managed integration of constituent services of multi-service applications
US11379290B2 (en) Prioritizing and parallelizing the capture of data for debugging computer programs
US11941413B2 (en) Managed control plane service
Patterson Learn AWS Serverless Computing: A Beginner's Guide to Using AWS Lambda, Amazon API Gateway, and Services from Amazon Web Services
US20190377596A1 (en) Flexible batch job scheduling in virtualization environments
CN114846490A (zh) 量化机器人流程自动化相关资源的使用
US20230032516A1 (en) Common platform for implementing rpa services on customer premises
US11531674B2 (en) System and method for supporting rollback of changes made to target systems via an integration platform
Xiong Cloud Computing for Scientific Research
US11971705B2 (en) Autoscaling strategies for robotic process automation
US20220191167A1 (en) Organizational modelling for routing rpa related services of an rpa cloud suite
US20230102809A1 (en) Preconfigured robots for robotic process automation
US20230101948A1 (en) Generation of rpa platform design components for configuring rpa platforms
Muñoz Exam Ref AZ-204 Developing Solutions for Microsoft Azure
BERNHAUSER Serverless platform within the Kubernetes infrastructure

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination