User Interface (UI) Descriptors, UI Object Library, UI Object Repository, and UI Object Browser for Robotic Process Automation

The described solution addresses inefficiencies in RPA by automating UI descriptor generation and management, enhancing reusability and reducing development time, particularly for RPA workflows across different applications.

JP7737442B2Active Publication Date: 2025-09-10UIPATH INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023501012
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-07-07
Filing Date
2020-09-24
Publication Date
2025-09-10
Estimated Expiration
2040-09-24

AI Technical Summary

Technical Problem

Current RPA technologies face inefficiencies in building reliable UI descriptors, which require time-consuming troubleshooting and lack reusability, and upgrading processes are not straightforward when systems or applications change.

Method used

A computer program and RPA developer application that detect UI elements, generate descriptors, and add them to a UI object library and repository, supporting selector-based, CV-based, and OCR-based identification activities, with a UI object browser for managing and reusing UI descriptors across applications.

Benefits of technology

Facilitates efficient and reusable UI descriptor management, reducing development time and enabling non-technical users to create reliable automation workflows, even with application upgrades.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007737442000001
    Figure 0007737442000001
  • Figure 0007737442000002
    Figure 0007737442000002
  • Figure 0007737442000003
    Figure 0007737442000003
Patent Text Reader

Abstract

A user interface (UI) object descriptor, UI object library, UI object repository, and UI object browser for robotic process automation (RPA) are disclosed. The UI object browser can be used to manage, reuse, and improve reliability of UI descriptors within a project. UI descriptors can be added to the UI object library and published or republished as UI object libraries for global reuse in the UI object repository. The UI object browser, UI object library, and UI object repository can facilitate reuse of UI element specification frameworks and their derivatives.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] (CROSS-REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of U.S. Non-Provisional Patent Application No. 16 / 922,289, filed July 7, 2020. The subject matter of this previously filed application is incorporated herein by reference in its entirety.

[0002] The present invention relates generally to robotic process automation (RPA), and more particularly to user interface (UI) object descriptors, UI object libraries, UI object repositories, and / or UI object browsers for RPA. [Background technology]

[0003] For RPA automation in a user interface (UI), developers typically build descriptors (e.g., selectors) for each UI action. Typically, default descriptors are generated. However, building reliable descriptors can require developers' time for troubleshooting and trial-and-error development, which can be inefficient. It also lacks descriptor reusability when the same descriptor is needed. Furthermore, when systems and applications are changed or upgraded, the process upgrade path may not be straightforward. Therefore, an improved approach can be beneficial. Summary of the Invention

[0004] Certain embodiments of the present invention may provide solutions to problems and needs in the field that have not yet been fully identified, appreciated, or solved by current RPA technology. For example, some embodiments of the present invention relate to UI descriptors, UI object libraries, UI object repositories, and / or UI object browsers for RPA.

[0005] In an embodiment, a computer program for creating a user interface (UI) object library for RPA is stored on a non-transitory computer-readable medium. The program is configured such that at least one processor detects an application associated with a screen of the UI and detects UI elements on the screen. The program is also configured such that the at least one processor receives a selection of a target UI element, generates a UI descriptor for the selected UI element, and adds the generated UI descriptor for the selected UI element to a respective RPA workflow activity. The program is further configured such that the at least one processor creates and publishes the UI object library including the UI descriptor in a UI object repository.

[0006] In another embodiment, a computer program is stored on a non-transitory computer-readable medium. The program is configured to: receive, by at least one processor, a selection of a target UI element on a screen of an application; and generate a UI descriptor for the selected UI element. The program is also configured to add, by the at least one processor, the generated UI descriptor for the selected UI element to a respective RPA workflow activity. The RPA workflow activity is or includes a CV-based identification activity or an integrated target identification activity.

[0007] In yet another embodiment, an RPA developer application is stored on a non-transitory computer-readable medium. The RPA developer application is configured such that at least one processor detects an application associated with a screen of a UI and detects UI elements on the screen. The RPA developer application is also configured such that at least one processor receives a selection of a target UI element and generates a UI descriptor for the selected UI element. The RPA developer application is further configured such that at least one processor adds the generated UI descriptor for the selected UI element to a respective RPA workflow activity. The RPA workflow activity is or includes a selector-based identification activity, a CV-based identification activity, an integrated target identification activity, an image-matching identification activity, or a selector and OCR-based identification activity. The RPA application includes a UI object browser that displays UI descriptors in one or more UI object libraries of a UI object repository, the one or more UI object libraries organized by application and version. [Brief explanation of the drawings]

[0008] So that the advantages of particular embodiments of this invention may be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments which are illustrated in the accompanying drawings. It is to be understood that these drawings depict only typical embodiments of the invention and are therefore not to be considered limiting of its scope, but the invention will be described and explained with additional specificity and detail through the use of the following accompanying drawings, in which:

[0009] [Figure 1] FIG. 1 is an architectural diagram illustrating a robotic process automation (RPA) system, according to an embodiment of the present invention.

[0010] [Figure 2] FIG. 1 is an architectural diagram illustrating a deployed RPA system according to an embodiment of the present invention.

[0011] [Figure 3] FIG. 2 is an architecture diagram illustrating the relationships between designers, activities, and drivers according to an embodiment of the present invention.

[0012] [Figure 4] FIG. 1 is an architectural diagram illustrating an RPA system according to an embodiment of the present invention.

[0013] [Figure 5] FIG. 1 is an architectural diagram illustrating a computing system configured to provide a UI descriptor, an object library, a UI object repository, and / or an object browser for RPA, according to an embodiment of the present invention.

[0014] [Figure 6A] 1 is a screenshot illustrating an RPA designer application, according to an embodiment of the present invention.

[0015] [Figure 6B] 1 is a screenshot showing the Windows 7 calculator standard view screen and view selector tabs.

[0016] [Figure 6C] 6B is an enlarged screenshot view showing a sequence in the outline pane of the RPA development application shown in FIG. 6A according to an embodiment of the present invention.

[0017] [Figure 6D] 6B is an enlarged screenshot view showing the snippets pane of the RPA development application shown in FIG. 6A in accordance with an embodiment of the present invention.

[0018] [Figure 6E]10A-10C are screenshots showing activities of an RPA workflow with screenshots of the respective UI elements for each activity, according to an embodiment of the present invention. [Figure 6F] 10A-10C are screenshots showing activities of an RPA workflow with screenshots of the respective UI elements for each activity, according to an embodiment of the present invention.

[0019] [Figure 6G] 10 is a screenshot illustrating a menu of options for a workflow activity, according to an embodiment of the present invention.

[0020] [Figure 6H] 1 is a screenshot illustrating an RPA designer application with properties for a click activity shown in the properties pane, according to an embodiment of the present invention.

[0021] [Figure 6I] 6H is an enlarged screenshot showing the properties pane of the RPA development application shown in FIG. 6H in accordance with an embodiment of the present invention.

[0022] [Figure 6J] 1 is a screenshot illustrating an RPA designer application with a UI object browser pane, according to an embodiment of the present invention.

[0023] [Figure 6K] 6J is an enlarged screenshot showing a UI descriptor view of the UI object browser pane of the RPA development application shown in FIG. 6J in accordance with an embodiment of the present invention.

[0024] [Figure 6L] 6J is an enlarged screenshot showing a UI descriptor view of the UI object browser pane of the RPA development application shown in FIG. 6J in accordance with an embodiment of the present invention.

[0025] [Figure 6M] 10 is a screenshot showing a UI activity view of a UI object browser pane, according to an embodiment of the present invention.

[0026] [Figure 6N] 10 is a screenshot illustrating a drag-and-drop feature for dropping a selector onto a desired activity in an RPA workflow, according to an embodiment of the present invention.

[0027] [Figure 6O] 1 is a screenshot showing a Windows 10 calculator.

[0028] [Figure 6P] 10 is a screenshot illustrating a UI activity view of a UI object browser pane with a Windows 10 calculator selector, according to an embodiment of the present invention.

[0029] [Figure 6Q] 10A-10C are screenshots showing some of the activities of an RPA workflow, including updated screenshots of the respective UI elements of each activity for a Windows 10 computer, in accordance with an embodiment of the present invention.

[0030] [Figure 6R] 10 is a screenshot illustrating a public UI object library window, according to an embodiment of the present invention.

[0031] [Figure 6S] 10 is a screenshot illustrating a managed packages window, according to an embodiment of the present invention.

[0032] [Figure 6T]10 is a screenshot illustrating the UI Activity view of the UI object browser pane with a Windows 10 calculator selector added to the UI object library, in accordance with an embodiment of the present invention.

[0033] [Figure 7A] 1 is a screenshot illustrating an RPA designer application, according to an embodiment of the present invention.

[0034] [Figure 7B] 1 is a screenshot illustrating an RPA workflow that can be configured to use three different UI element detection techniques, according to an embodiment of the present invention.

[0035] [Figure 7C] 1 is a screenshot showing a Windows 10 calculator modified by UiPath Studio™ after a developer selects "indicate on screen," according to an embodiment of the present invention.

[0036] [Figure 7D] 7C is a screenshot illustrating the RPA workflow of FIG. 7B including a screenshot of a selected UI element from a Windows 10 computer, according to an embodiment of the present invention.

[0037] [Figure 7E] 10 is a screenshot illustrating an activity options menu, according to an embodiment of the present invention.

[0038] [Figure 7F] 10 is a screenshot showing a selector editor according to an embodiment of the present invention.

[0039] [Figure 7G] 10 is a screenshot illustrating additions to a UI object library function according to an embodiment of the present invention.

[0040] [Figure 7H] 10 is a screenshot showing a UI descriptor pane, according to an embodiment of the present invention.

[0041] [Figure 7I] 10 is a screenshot illustrating an RPA workflow including detecting screen elements and label messages according to an embodiment of the present invention.

[0042] [Figure 7J] 1 is a screenshot illustrating a search interface according to an embodiment of the present invention.

[0043] [Figure 7K] 10 is a screenshot illustrating a CV-based specific activity according to an embodiment of the present invention.

[0044] [Figure 7L] 1 is a screenshot showing a Windows 10 calculator modified by UiPath Studio™ after a developer selects "indicate on scope" in the CV click interface, according to an embodiment of the present invention.

[0045] [Figure 7M] 1 is a screenshot showing a Windows 10 calculator modified by UiPath Studio™ and the CV click interface after a developer selects a target, according to an embodiment of the present invention.

[0046] [Figure 7N] 1 is a screenshot showing a Windows 10 calculator modified by UiPath Studio™ and the CV click interface after a developer has made a target selection and an anchor selection, in accordance with an embodiment of the present invention.

[0047] [Figure 7O] 10 is a screenshot illustrating a CV-based specific activity in a workflow after the CV-based specific activity has been configured with a target and anchor, according to an embodiment of the present invention.

[0048] [Figure 7P] 10 is a screenshot showing the properties tab with a CV click with descriptor properties according to an embodiment of the present invention.

[0049] [Figure 7Q] 10 is a screenshot illustrating integrated target-based specific activity according to an embodiment of the present invention.

[0050] [Figure 7R] 1 is a screenshot illustrating a search interface with integrated target click activity highlighted, in accordance with an embodiment of the present invention.

[0051] [Figure 7S] 10 is a screenshot illustrating integrated target-based specific activity with nested click activity according to an embodiment of the present invention.

[0052] [Figure 7T] 1 is a screenshot showing a Windows 10 calculator and integrated target selection options window modified by UiPath Studio™, in accordance with an embodiment of the present invention.

[0053] [Figure 7U] 1 is a screenshot showing a Windows 10 calculator modified by UiPath Studio™ with a selected target and an integrated target selection options window, according to an embodiment of the present invention.

[0054] [Figure 7V] 1 is a screenshot showing a Windows 10 calculator modified by UiPath Studio™ with a selected target and a selected anchor and an integrated target selection options window, according to an embodiment of the present invention.

[0055] [Figure 7W] 1 is a screenshot showing a Windows 10 calculator modified by UiPath Studio™ with a selected target and a selected anchor verified via the integrated target selection options window, in accordance with an embodiment of the present invention.

[0056] [Figure 7X] 10 is a screenshot showing an integrated target-based specific activity with screenshots of targets and anchors in nested click activities according to an embodiment of the present invention.

[0057] [Figure 7Y] 10 is a screenshot showing a click image activity added to a workflow in accordance with an embodiment of the present invention.

[0058] [Figure 7Z] 1 shows a screenshot of a Windows 10 calculator modified by UiPath Studio™ with a box drawn around the image being clicked and a screenshot of the image from the selection box in a click image activity, according to an embodiment of the present invention.

[0059] [Figure 7a] 10 is a screenshot illustrating a properties tab with click image activity properties, according to an embodiment of the present invention.

[0060] [Figure 7b] 10 is a screenshot showing a selector editor for a selector for a clicked image, according to an embodiment of the present invention.

[0061] [Figure 7c] 10 is a screenshot illustrating a click OCR text activity in a workflow according to an embodiment of the present invention.

[0062] [Figure 7d] 10 is a screenshot showing a click OCR text activity, including a screenshot of a button being clicked, according to an embodiment of the present invention.

[0063] [Figure 8] 10 is a flowchart illustrating a process for generating a selector-based activity according to an embodiment of the present invention.

[0064] [Figure 9] 1 is a flowchart illustrating a process for generating a CV descriptor-based activity in accordance with an embodiment of the present invention.

[0065] [Figure 10] 1 is a flowchart illustrating a process for generating integrated target-based activities according to an embodiment of the present invention.

[0066] [Figure 11] 1 is a flowchart illustrating a process for generating an image matching activity according to an embodiment of the present invention.

[0067] [Figure 12] 1 is a flowchart illustrating a process for generating a selector and an OCR-based activity according to an embodiment of the present invention.

[0068] [Figure 13]1 is a flowchart illustrating a process for generating an RPA workflow using multiple identification techniques, according to an embodiment of the present invention.

[0069] [Figure 14] 10 is a flowchart illustrating a process for creating a UI object library and configuring a project to work with a new version of an application, according to an embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION

[0070] Unless otherwise noted, like reference characters denote corresponding features consistently throughout the accompanying drawings.

[0071] Detailed Description of the Embodiments Some embodiments relate to UI descriptors, UI object libraries, UI object repositories, and / or UI object browsers for RPA. UI elements on a screen (e.g., text fields, buttons, labels, menus, checkboxes, etc.) may be grouped by application, application version, application screen, and collection of UI elements, with each screen having multiple UI elements. As used herein, a “screen” is an image of an application UI or a portion of an application UI at a point in time. An “application” or a version of a given application may be a combination of screens in this context. Each UI element, in some embodiments, may be described by one or more UI descriptors. UI elements, UI descriptors, applications, and application screens are UI objects. In some embodiments, UI elements and screens may be further distinguished into specific types of UI elements (e.g., buttons, checkboxes, text fields, etc.) and screens (e.g., top windows, modal windows, pop-up windows, etc.).

[0072] The UI object browser may access a library of UI objects, which may be grouped by application, application version, application screen, collection of UI elements, combinations thereof, etc. In some embodiments, the UI object library may be stored in a UI object repository. As used herein, a UI object repository is a collection of UI object libraries. In some embodiments, the UI object repository may be a NuGet™ feed, a web service, etc.

[0073] The object browser, in some embodiments, may be used to navigate, manage, and edit UI object libraries in a UI object repository. The UI object repository of a UI object library, in some embodiments, may facilitate management, reuse, and improved reliability of UI descriptors in a project. In some embodiments, UI descriptors may be added to a UI library and published or republished for global reuse in the UI object repository. The UI object browser may facilitate reuse of UI element specification frameworks and their derivatives by providing access to the UI object repository and its UI object libraries.

[0074] To make the UI objects reusable, they can be extracted into a UI object library that can be referenced by RPA processes. For example, if a selector or other UI descriptor changes due to a new version of an application, the library can be recreated (or republished) to include the changed UI descriptor. RPA processes that use the UI object library can then invoke the changed UI descriptor version. References to new application programming interfaces (APIs) associated with the new library can be changed manually by a developer for the RPA process, through a software tool (e.g., a tool that updates UI descriptor references when selectors or other components change through the RPA process), or automatically in some embodiments.

[0075] In some embodiments, a package of UI objects may be attached as a dependency (e.g., a NuGet™ package). However, in certain embodiments, the UI objects may be obtained via one or more API calls to a web service, allowing the UI objects to be stored remotely and retrieved and used during automation.

[0076] Previously, the initial construction of UI descriptors required developers with technical knowledge of what was happening behind the UI descriptors. However, many RPA processes are no longer constructed by software developers. These individuals may create RPA workflows using, for example, UiPath StudioX™, which does not require in-depth programming knowledge. Some embodiments allow individuals creating RPA workflows to reuse descriptors, which saves time because software developers do not need to build new UI descriptors from scratch if an appropriate UI descriptor is available to the individual creating the RPA workflow.

[0077] UI elements added to the UI object library may represent selectors to use in the RPA workflow. To automate specific actions in the UI, the RPA robot may interact with various windows, buttons, drop-down lists, and / or other graphical elements. Typically, this is done using the expected screen positions of the UI elements. However, this is unreliable.

[0078] Some embodiments use selectors that store attributes of UI elements and their parents in an XML fragment, overcoming problems associated with specifying fixed coordinates. In some embodiments where the UI is static, selectors may be generated automatically, but in some software programs, such as some web applications, layouts change and attribute nodes exist that have volatile values. These changes may not be easily predicted, which previously required some selectors to be generated manually. However, the object browser of some embodiments may overcome this problem.

[0079] A selector is a type of UI descriptor that can be used to find UI elements in some embodiments. A selector, in some embodiments, has the following structure: <node_1 / ><node_2 / > ...<node_N / >

[0080] The final node represents the target GUI element, and all previous nodes represent the parents of that element.<node_1> is usually called the root node and represents the top window of the application.

[0081] Each node may have one or more attributes that assist in correctly identifying the particular level of the selected application. Each node, in some embodiments, has the following format: <ui_system attr_name_1=’attr_value_1’...attr_name_N=’attr_value_N’ / >

[0082] All attributes may have values ​​assigned, and attributes with constant values ​​may be chosen because changing the value of an attribute every time the application launches may prevent the selector from correctly identifying the associated element.

[0083] UI object library descriptors can be added directly to RPA workflow activities, saving developers time that would otherwise be required to create custom selectors for activities. An object browser can provide a database that stores created selectors in an object library, enabling reuse of UI descriptors. An object library is defined herein as a collection of UI descriptors corresponding to one or more screens from a particular version of an application. A UI descriptor is a set of instructions for locating UI elements. In some embodiments, a UI descriptor is an encapsulated data / structure format that includes UI element selector(s), anchor selector(s), computer vision (CV) descriptor(s), integrated target descriptor(s), screen image capture (context), element image capture, other metadata (e.g., application and application version), or a combination thereof. The encapsulated data / structure format may be extensible with future updates to the platform and is not limited to the above definition. Any suitable UI descriptor for identifying UI elements on a screen may be used without departing from the scope of the present invention. An integrated target descriptor concatenates multiple types of UI descriptors. The integrated target descriptor may function like a finite state machine (FSM), where in a first context a first UI descriptor mechanism is applied, in a second context a second UI descriptor is applied, and so on.

[0084] In some embodiments, the RPA designer application may ask the user for the type(s) of application they plan to automate. For example, the user may specify Excel®, Workday®, SAP®, etc. The RPA application already includes screen descriptors in its UI object library for these applications so that the application can be programmed with logic on how to automate these applications. Ready-to-use selectors for different versions of these applications may be available, allowing the user to specify the version(s) to automate.

[0085] As used herein, the terms “user” and “developer” are used interchangeably. A user / developer may or may not have programming and / or technical knowledge. For example, in some embodiments, a user / developer may create an RPA workflow by configuring activities within the RPA workflow without manual coding. In certain embodiments, this may be done, for example, by clicking, dragging, and dropping various functions.

[0086] Traditionally, making selectors reliable requires testing, understanding specific selector details, etc. This makes creating / improving selectors difficult or impossible for non-technical individuals. By providing a library of working selectors for common UI elements and tasks, some embodiments enable non-technical individuals to develop automation that works in production. A user can specify a screen of the version of an application to automate, and the RPA development application can fetch that screen. The user can then interact with the screen to define what he or she wants to do.

[0087] In some embodiments, as new UI descriptors are created and / or existing UI descriptors are modified, a global database of UI object libraries that is shareable, collaborative, and potentially open source may be built. In certain embodiments, taxonomies and ontologies may be used. Applications, versions, screens, UI elements, descriptors, etc. may be defined as a taxonomy, which is a hierarchical structure of subcategories.

[0088] However, many real-world concepts do not easily lend themselves to taxonomic organization. Rather, they may be closer to concepts in mathematical ontologies. In an ontology, relationships between categories are not necessarily hierarchical. For example, if clicking a button on a screen takes the user to another screen, the next screen is not in the hierarchy and therefore cannot be easily captured in that screen's taxonomy. When creating a graph to represent such cases, an application's object browser might be modeled as an ontology that allows for the creation of interactions between UI elements on the same or different screens and provides more detailed information about how the UI elements relate to each other.

[0089] Consider the example where clicking an OK button brings up the Employees screen. With an ontology structure, the designer application may suggest that the user filter the employees on the next screen. The ontology information of the relationships between these screens via the OK button allows the designer application to do this. By defining a graphical structure that is not necessarily a tree, but rather related to what the application is actually doing, more complex and richer relationships can be captured.

[0090] Some embodiments relate to or include a recorder that allows for faster fetching of screens and UI elements from an application. For example, if a particular screen has 250 different UI elements, fetching them one by one can take a long time. Using a screen pointer, one can then fetch all editable UI elements. This can be useful for creating the first version of a tree or ontology.

[0091] In some embodiments, the object browser may be exposed as a web service. When a user updates a selector or other UI descriptor at runtime, if properly configured, the RPA robot may invoke the latest version of the service. This ensures that the RPA robot always uses the latest version of the UI descriptor.

[0092] UI descriptors may be extracted from activities in an RPA workflow and added to a structured schema that groups the UI descriptors by UI application, screen, and UI element. In some embodiments, the UI descriptors may be part of a single project for widespread reuse, part of a global repository for testing purposes, or part of a UI object library for global cross-project sharing. In some embodiments, the object library is an encapsulation of UI descriptors grouped by application, application version, and screen. UI descriptors may be defined and added to the object library, which, in some embodiments, may be installed as a dependency in other projects after publication. This allows the object library of UI descriptors to be reused. In some embodiments, the UI application is a target application with multiple versions, each with multiple screens.

[0093] The reuse of UI object repositories and UI descriptors can be beneficial for a variety of reasons. For example, if the position, appearance, and / or functionality of a UI element in an application changes, the UI descriptor can be modified, and the change can then be propagated to activities that use the UI descriptor. In this way, reusability can be provided at the specific level of graphical elements in the UI.

[0094] This can be particularly beneficial for accommodating new versions of an application. For a new version, software developers only need to update the UI descriptor and / or develop a few new selectors from scratch, significantly reducing development time. For example, for a web page, the hypertext markup language (HTML) may be inspected to obtain paths to UI elements for corresponding selectors. The selectors for corresponding UI elements may differ between different web browsers and / or different versions of the same web browser. This concept may also apply to visual desktop, server, smartphone, and tablet applications. A UI object library may include the actual selectors for an application, which, as described above, is just one type of UI descriptor. A UI object library may have multiple UI descriptors of different types for one or more applications. UI descriptors may refer to different technologies on which the application is built. For example, different UI descriptors may be created and used for standalone desktop, web, and mobile applications. For one technology, you may want to use selectors, while for another, you may want to use CV descriptors.

[0095] The UI descriptor, in some embodiments, may work with a unified target that encompasses all UI detection mechanisms by which image detection and definition are performed. The unified target may merge multiple techniques for identifying and automating UI elements into a single, cohesive approach. The unified target may prioritize selector-based and driver-based UI detection mechanisms and fall back to CV to find images if the first two mechanisms are unsuccessful. In some embodiments, the selector editor and UI explorer may be configured to support the unified target.

[0096] In some embodiments, the designer application includes a section or panel as an "object browser" that loads object libraries from one or more sources. Using this object browser, users can visualize the entire set of UI objects and use any UI descriptor through drag-and-drop, wizards, or contextual actions. This may allow users to select actions to be performed in RPA workflow activities, such as clicking, grabbing text, or typing.

[0097] An example of the structure of an object library is shown below. SAP Version 1 Screen 1 Object 1 Object 2 ·… Screen 2… ·… Version 2… ·… Salesforce… ·…

[0098] Note that the above hierarchy is provided by way of example only. Any desired number of levels in the hierarchy and elements associated with each level may be used without departing from the scope of the present invention. In particular embodiments, a user may define the application map as he or she desires. Furthermore, some nodes in the tree may, in some embodiments, serve only an administrative role and not a functional role. For example, UI elements may be grouped together in a container that does not have a UI descriptor. The container, in some embodiments, may exist solely for grouping purposes.

[0099] A scope, in some embodiments, may be defined in a designer application by a user through selection from a set of screens available in an object library. When a scope is tied one-to-one to a particular screen, the user can add UI actions (e.g., click, grab text, etc.) and then map those actions to UI objects using intelligent sensing of potential candidate options. The set of objects, in some embodiments, may be limited to a list defined for the screen within a UI object repository (e.g., a database of UI object libraries).

[0100] For example, once the structure of application screens, UI elements, etc. has been determined, a list of identified applications may be provided. In certain embodiments, the user may then select the application to automate, drag the selected application onto the canvas, write "SAP," and press ".", which may list all SAP® screens. Upon selecting a screen, additional candidate elements, functions, etc. may be displayed, allowing the user to select predicted UI elements, functions, applications, and screens.

[0101] In some embodiments, when an OLDB is configured in UiPath Studio™, for example, "indicate on screen" may look at the OLDB and pick up UI descriptors if available. If UI descriptors are not available, they may be defined by the user by indicating the missing UI elements. UI descriptors may then be generated and published in the UI object library.

[0102] The use of UI descriptors and UI object repositories in some embodiments creates relationships and data that can be further expanded. In some embodiments, UI steps from an automated process can be mapped to a single screen. For example, a screen containing a form where a user adds and captures some data and then hits submit can be documented with a single screenshot that includes a screen capture and each UI step performed on that screen. For example: (1) amount copied; (2) number copied; (3) name added; (4) "OK" clicked.

[0103] For upgrade processes affected by system and application upgrades, a "reference lookup" service may be implemented. The reference lookup service may provide the ability to scan a set of projects from a repository and detect processes that are using UI descriptors that belong to a particular application version. In some embodiments, the application version may be determined based on the corresponding screens in the UI descriptors. Additionally, a service may be implemented to detect differences between UI descriptors with matching elements from two different versions of an application. The detected process and UI descriptor differences provide information about processes that may break during an application or system upgrade. These processes may be automatically updated to use UI descriptors from the new application version.

[0104] In some embodiments, OLDB analysis may be used to enhance the OLDB UI object repository. A mechanism for extracting UI descriptors may be implemented. The extracted UI descriptor data may be sent via OLDB analysis before or after creation / definition time. Additionally, in some embodiments, using artificial intelligence (AI) and machine learning (ML) techniques, the extracted UI descriptor data may provide a new set of data that can be used to improve the strength of the UI descriptors for each UI element from any screen of any version of any application.

[0105] Certain embodiments may be employed in robotic process automation (RPA). FIG. 1 is an architectural diagram illustrating an RPA system 100 according to an embodiment of the present invention. The RPA system 100 includes a designer 110 that enables developers to design and implement workflows. The designer 110 provides solutions for application integration and automates third-party applications, management information technology (IT) tasks, and business IT processes. The designer 110 can facilitate the development of automation projects, which are graphical representations of business processes. Simply put, the designer 110 facilitates the development and deployment of workflows and robots.

[0106] Automation projects enable rule-based process automation by giving developers control over the order of execution and relationships between custom sets of steps developed in workflows, defined herein as "activities." One commercial example of an embodiment of the designer 110 is UiPath Studio™. Each activity may include an action such as clicking a button, reading a file, or writing to a log panel. In some embodiments, workflows may be nested or embedded.

[0107] Workflow types may include, but are not limited to, sequences, flowcharts, FSMs, and / or global exception handlers. Sequences may be particularly well-suited for linear processes, allowing the flow of one activity from another without cluttering the workflow. Flowcharts may be particularly well-suited for more complex business logic, allowing for the integration of decisions and the connection of activities in more diverse ways through multiple branching logic operators. FSMs may be particularly well-suited for large workflows. FSMs may use a finite number of states during their execution that are triggered by conditions (i.e., transitions) or activities. Global exception handlers may be particularly well-suited for determining workflow behavior when an execution error is encountered or for debugging the process.

[0108] Once a workflow is developed in Designer 110, the execution of the business process is orchestrated by Conductor 120, which coordinates one or more Robots 130 that execute the workflow developed in Designer 110. One commercial example of an embodiment of Conductor 120 is UiPath Orchestrator™. Conductor 120 facilitates the management of the creation, monitoring, and deployment of resources in an environment. Conductor 120 may act as, or one of, an integration point with third-party solutions and applications.

[0109] The conductor 120 may manage all robots 130, connecting and executing them from a centralized point. Types of robots 130 that may be managed include, but are not limited to, attended robots 132, unattended robots 134, development robots (similar to unattended robots 134 but used for development and testing purposes), and non-production robots (similar to attended robots 132 but used for development and testing purposes). Attended robots 132 may be triggered by user events or scheduled to occur automatically, and may operate side by side with humans on the same computing system. Attended robots 132 may be used with the conductor 120 for centralized process deployment and logging media. Attended robots 132 may assist human users in accomplishing various tasks and may be triggered by user events. In some embodiments, processes cannot be initiated from the conductor 120 on this type of robot, and / or they cannot be run under a locked screen. In certain embodiments, the attended robot 132 can only be launched from the robot tray or from a command prompt. The attended robot 132 preferably operates under human supervision in some embodiments.

[0110] Unattended robots 134 operate unattended in virtual environments or on physical machines and can automate many processes. Unattended robots 134 may be responsible for providing remote execution, monitoring, scheduling, and work queue support. Debugging for all robot types may be performed from Designer 110 in some embodiments. Both attended and unattended robots can automate a variety of systems and applications, including, but not limited to, mainframes, web applications, VMs, enterprise applications (e.g., those produced by SAP®, Salesforce®, Oracle®, etc.), and computing system applications (e.g., desktop and laptop applications, mobile device applications, wearable computer applications, etc.).

[0111] The conductor 120 may have various capabilities, including, but not limited to, provisioning, deployment, versioning, configuration, queuing, monitoring, logging, and / or providing interconnectivity. Provisioning may include creating and maintaining connections between robots 130 and the conductor 120 (e.g., web applications). Deployment may include ensuring the correct delivery of package versions to robots 130 assigned to perform. Versioning, in some embodiments, may include managing unique instances of some processes or configurations. Configuration may include maintaining and delivering robot environments and process configurations. Queuing may include providing management of queues and queue items. Monitoring may include tracking robot-specific data and maintaining user permissions. Logging may include storing and indexing logs in a database (e.g., an SQL database) and / or another storage mechanism (e.g., ElasticSearch®, which stores large data sets and provides the ability to quickly query them). The conductor 120 may provide interconnectivity by operating as a centralized point of communication for third-party solutions and / or applications.

[0112] Robots 130 are execution agents that execute workflows built by designer 110. One commercial example of some embodiments of robot(s) 130 is UiPath Robots™. In some embodiments, robots 130 install the Microsoft Windows Service Control Manager (SCM) management service by default. As a result, such robots 130 can open interactive Windows sessions under the local system account and may have Windows service rights.

[0113] In some embodiments, a robot 130 can be installed in user mode, meaning that for such a robot 130, the robot has the same rights as the user to whom it is installed. This feature can also be used for high-density (HD) robots, ensuring maximum utilization of each machine. In some embodiments, either type of robot 130 can be configured in an HD environment.

[0114] In some embodiments, the robot 130 is divided into multiple components, each specialized for a specific automation task. In some embodiments, the robot components include, but are not limited to, an SCM-managed robot service, a user-mode robot service, an executor, an agent, and a command line. The SCM-managed robot service manages and monitors Windows sessions and acts as a proxy between the conductor 120 and the execution host (i.e., the computing system on which the robot 130 executes). These services are responsible for managing credentials for the robot 130. A console application is launched by the SCM under Local System.

[0115] The user-mode robot service in some embodiments manages and monitors Windows sessions and acts as a proxy between the conductor 120 and the execution host. The user-mode robot service may be delegated and manage credentials for the robot 130. If the SCM management robot service is not installed, a Windows application may be launched automatically.

[0116] An Executor may execute a given job under a Windows session (i.e., execute a workflow). An Executor may be aware of dots per inch (DPI) settings per monitor. An Agent may be a Windows Presentation Foundation (WPF) application that displays available jobs in a system tray window. An Agent may be a client of a service. An Agent may ask to start or stop a job or change settings. A Command Line is a client of a service. A Command Line is a console application that can request the start of a job and wait for its output.

[0117] As described above, the separation of the robot 130 components helps developers, support users, and computing systems more easily implement, identify, and track what each component is doing. In this way, special behaviors can be configured for each component, such as setting different firewall rules for executors and services. Executors may always be aware of per-monitor DPI settings in some embodiments. As a result, workflows may execute at any DPI regardless of the configuration of the computing system on which the workflow was created. Also, in some embodiments, projects from the designer 110 may be made independent of the browser zoom level. For applications that are not DPI-aware or are intentionally marked as not-aware, DPI may be disabled in some embodiments.

[0118] FIG. 2 is an architecture diagram illustrating a deployed RPA system 200 according to an embodiment of the present invention. In some embodiments, the RPA system 200 may be or be part of the RPA system 100 of FIG. 1. It should be noted that the client side, the server side, or both may include any desired number of computing systems without departing from the scope of the present invention. On the client side, the robot application 210 includes an executor 212, an agent 214, and a designer 216. However, in some embodiments, the designer 216 may not be running on the computing system 210. The executor 212 executes processes. As shown in FIG. 2, multiple business projects may be running simultaneously. The agent 214 (e.g., a Windows service) is the single connection point for all executors 212 in this embodiment. All messages in this embodiment are logged to the conductor 230, which further processes them via the database server 240, the indexer server 250, or both. As described above with respect to FIG. 1, the executor 212 may be a robotic component.

[0119] In some embodiments, a Robot represents an association between a machine name and a username. A Robot may manage multiple executors simultaneously. In computing systems that support multiple interactive sessions running simultaneously (such as Windows Server 2012), multiple Robots may run simultaneously, each running in a separate Windows session using a unique username. This is referred to as an HD Robot above.

[0120] The agent 214 is also responsible for transmitting the robot's status (e.g., periodically sending "heartbeat" messages to indicate that the robot is still functioning) and downloading required versions of packages to be fulfilled. Communication between the agent 214 and the conductor 230 is, in some embodiments, always initiated by the agent 214. In notification scenarios, the agent 214 may open a WebSocket channel that is later used by the conductor 230 to send commands (e.g., start, stop, etc.) to the robot.

[0121] The server side includes a presentation layer (web application 232, Open Data Protocol (OData) Representational State Transfer (REST) ​​Application Programming Interface (API) endpoint 234, notification and monitoring 236), a service layer (API implementation / business logic 238), and a persistence layer (database server 240, indexer server 250). Conductor 230 includes web application 232, OData REST API endpoint 234, notification and monitoring 236, and API implementation / business logic 238. In some embodiments, most actions a user performs in the conductor 230 interface (e.g., via browser 220) are performed by calling various APIs. Such actions may include, but are not limited to, launching jobs on a robot, adding / removing data from a queue, scheduling jobs to run unattended, etc., without departing from the scope of the present invention. Web application 232 is the visual layer of the server platform. In this embodiment, web application 232 uses Hypertext Markup Language (HTML) and JavaScript (JS). However, any desired markup language, scripting language, or any other format may be used without departing from the scope of the present invention. A user interacts with web pages from web application 232, in this embodiment via browser 220, to perform various operations to control conductor 230. For example, a user may create robot groups, assign packages to robots, analyze per-robot and / or per-process logs, start and stop robots, etc.

[0122] In addition to the web application 232, the conductor 230 also includes a services layer that exposes an OData REST API endpoint 234. However, other endpoints may be included without departing from the scope of the present invention. The REST API is consumed by both the web application 232 and the agent 214, which in this embodiment is a supervisor of one or more robots on a client computer.

[0123] The REST API of this embodiment covers configuration, logging, monitoring, and queuing functionality. The configuration endpoint, in some embodiments, may be used to define and configure users, permissions, robots, assets, releases, and environments for an application. The logging REST endpoint may be used to log various information, such as errors, explicit messages sent by robots, and other environment-specific information. The deployment REST endpoint may be used by robots to query the version of the package that should be executed when a start job command is used in conductor 230. The queuing REST endpoint may be responsible for managing queues and queue items, such as adding data to a queue, retrieving transactions from a queue, and setting the status of transactions.

[0124] Monitoring REST endpoints may monitor the web application 232 and the agents 214. The notification and monitoring API 236 may be a REST endpoint used to register the agents 214, deliver configuration settings to the agents 214, and send and receive notifications from the server and the agents 214. The notification and monitoring API 236 may use WebSocket communication in some embodiments.

[0125] The persistence layer, in this embodiment, includes a pair of servers—a database server 240 (e.g., SQL Server) and an indexer server 250. The database server 240 in this embodiment stores configurations for robots, robot groups, associated processes, users, roles, schedules, etc. This information is managed, in some embodiments, via a web application 232. The database server 240 may also manage queues and queue items. In some embodiments, the database server 240 may also store messages logged by robots (in addition to or instead of the indexer server 250).

[0126] Optionally in some embodiments, indexer server 250 stores and indexes information logged by the robots. In particular embodiments, indexer server 250 may be disabled via a configuration setting. In some embodiments, indexer server 250 uses ElasticSearch®, a full-text search engine from an open source project. Messages logged by the robots (e.g., using activities such as log messages or line writes) may be sent via logging REST endpoint(s) to indexer server 250, where they are indexed for future use.

[0127] FIG. 3 is an architecture diagram illustrating the relationship 300 between a designer 310, activities 320, 330, and a driver 340, according to an embodiment of the present invention. As can be seen, a developer uses the designer 310 to develop a workflow to be performed by a robot. The workflow may include user-defined activities 320 and UI automation activities 330. In some embodiments, non-text visual components in an image can be identified, which is referred to herein as computer vision (CV). Some CV activities associated with such components may include, but are not limited to, click, type, get text, hover, detect element presence, update scope, highlight, and the like. In some embodiments, click may identify an element and click on it, for example, using CV, optical character recognition (OCR), fuzzy text matching, and multi-anchors. Type may identify an element using the above and types within elements. Get text may locate specific text and scan it using OCR. Hover may identify an element and hover over it. Detect element presence may check for the presence or absence of an element on the screen using the techniques described above. In some embodiments, there may be hundreds or even thousands of activities that may be implemented in designer 310. However, any number and / or type of activities may be utilized without departing from the scope of the present invention.

[0128] UI automation activities 330 are a subset of specialized low-level activities written in low-level code (e.g., CV activities) that facilitate interaction with applications through the UI layer. In particular embodiments, UI automation activities 330 may simulate user input, for example, via window messages. UI automation activities 330 facilitate these interactions through drivers 340 that enable the robot to interact with desired software. For example, drivers 340 may include OS drivers 342, browser drivers 344, VM ​​drivers 346, enterprise application drivers 348, etc.

[0129] Drivers 340 may interact with the OS at a low level, such as by looking for hooks, monitoring keys, etc. They may facilitate integration with Chrome®, IE®, Citrix®, SAP®, etc. For example, a "click" activity plays the same role in these different applications via drivers 340.

[0130] FIG. 4 is an architecture diagram illustrating an RPA system 400, according to an embodiment of the present invention. In some embodiments, the RPA system 400 may be or include the RPA systems 100 and / or 200 of FIGS. 1 and / or 2. The RPA system 400 includes multiple client computing systems 410 that execute robots. The computing systems 410 can communicate with a conductor computing system 420 via web applications running thereon. The conductor computing system 420 can, in turn, communicate with a database server 430 and an optional indexer server 440.

[0131] 1 and 3, it should be noted that while web applications are used in these embodiments, any suitable client and / or server software may be used without departing from the scope of the present invention. For example, a conductor may run a server-side application on a client computing system that communicates with a non-web-based client software application.

[0132] FIG. 5 is an architectural diagram illustrating a computing system 500 configured to provide a UI descriptor, object library, UI object repository, and / or object browser for RPA, according to embodiments of the present invention. In some embodiments, computing system 500 may be one or more of the computing systems depicted and / or described herein. Computing system 500 includes a bus 505 or other communication mechanism for communicating information and processor(s) 510 coupled to bus 505 for processing information. Processor(s) 510 may be any type of general or application-specific processor, including a central processing unit (CPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a graphics processing unit (GPU), multiple instances thereof, and / or any combination thereof. Processor(s) 510 may also have multiple processing cores, at least some of which may be configured to perform specific functions. In some embodiments, multiple parallel processing may be used. In certain embodiments, at least one processor(s) 510 may be a neuromorphic circuit including processing elements that mimic biological neurons. In some embodiments, neuromorphic circuits may not require typical components of a von Neumann computing architecture.

[0133] The computing system 500 further includes memory 515 for storing information and instructions executed by the processor(s) 510. The memory 515 may be comprised of random access memory (RAM), read-only memory (ROM), flash memory, cache, static storage such as a magnetic or optical disk, or other types of non-transitory computer-readable media, or any combination thereof. The non-transitory computer-readable media may be any available media that can be accessed by the processor(s) 510 and may include volatile media, non-volatile media, or both. Also, the media may be removable, non-removable, or both.

[0134] Additionally, the computing system 500 includes a communication device 520, such as a transceiver, to provide access to a communication network via wireless and / or wired connections. In some embodiments, the communications device 520 may support any of the following radio technologies: Frequency Division Multiple Access (FDMA), Single Carrier FDMA (SC-FDMA), Time Division Multiple Access (TDMA), Code Division Multiple Access (CDMA), Orthogonal Frequency Division Multiplexing (OFDM), Orthogonal Frequency Division Multiple Access (OFDMA), Global System for Mobile (GSM) communications, General Packet Radio Service (GPRS), Universal Mobile Telecommunications System (UMTS), cdma2000, Wideband CDMA (W-CDMA), High-Speed ​​Downlink Packet Access (HSDPA), High-Speed ​​Uplink Packet Access (HSUPA), High-Speed ​​Packet Access (HSPA), Long Term Evolution (LTE), LTE Advanced (LTE-A), LTE-Advanced (LTE-B), LTE-Advanced (LTE-C), LTE-Advanced (LTE-B), LTE-Advanced (LTE-C), LTE-Advanced (LTE-C), LTE-Advanced (LTE-C), LTE-Advanced (LTE-C), LTE-Advanced (LTE-C), LTE-Advanced (LTE-C), LTE-Advanced (LTE-C), LTE-Advanced (LTE-C), LTE-Advanced (LTE-A), LTE-Advanced (LTE-C ... Advanced), 802.11x, Wi-Fi, Zigbee, Ultra-Wideband (UWB), 802.16x, 802.15, Home Node-B (HnB), Bluetooth, Radio Frequency Identification (RFID), Infrared Data Association (IrDA), Near-Field Communications (NFC), 5th Generation (5G), New Radio (NR), any combination thereof, and / or any other currently existing or future-implemented communication standard and / or protocol without departing from the scope of the present invention.In some embodiments, the communications device 520 may include one or more antennas that are a single antenna, an array of antennas, a phased antenna, a switched antenna, a beamforming antenna, a beamsteering antenna, a combination thereof, and / or any other antenna configuration without departing from the scope of the present invention.

[0135] The processor(s) 510 are further coupled via bus 505 to a display 525, such as a plasma display, a liquid crystal display (LCD), a light-emitting diode (LED) display, a field emission display (FED), an organic light-emitting diode (OLED) display, a flexible OLED display, a flexible substrate display, a projection display, a 4K display, a high-definition display, a Retina® display, an in-plane switching (IPS) display, or any other suitable display for displaying information to a user. The display 525 may be configured as a touch (haptic) display, a three-dimensional (3D) touch display, a multi-input touch display, a multi-touch display, or the like, using resistive, capacitive, surface acoustic wave (SAW) capacitive, infrared, optical imaging, dispersive signaling, acoustic pulse recognition, frustrated total internal reflection, or the like. Any suitable display device and haptic I / O may be used without departing from the scope of the invention.

[0136] A keyboard 530 and cursor control device 535, such as a computer mouse, touchpad, etc., are further coupled to bus 505 to allow a user to interface with computing system 500. However, in certain embodiments, a physical keyboard and mouse may not be present, and the user may interact with the device solely through display 525 and / or a touchpad (not shown). Any type and combination of input devices may be used as a matter of design choice. In certain embodiments, no physical input devices and / or displays are present. For example, a user may interact with computing system 500 remotely through another computing system in communication with it, or computing system 500 may operate autonomously.

[0137] The memory 515 stores software modules that, when executed by the processor(s) 510, provide functionality. The modules include an operating system 540 for the computing system 500. The modules further include a UI object operations module 545 configured to perform all or a portion of the processes described herein, or derivatives thereof. The computing system 500 may include one or more additional functionality modules 550 that include additional functionality.

[0138] Those skilled in the art will appreciate that a "system" may be embodied as a server, embedded computing system, personal computer, console, personal digital assistant (PDA), mobile phone, tablet computing device, quantum computing system, or any other suitable computing device or combination of devices without departing from the scope of the present invention. Presenting the above-described functions as being performed by a "system" is not intended to limit the scope of the present invention in any way, but rather to provide an example of many embodiments of the present invention. Indeed, the methods, systems, and apparatus disclosed herein may be implemented in localized and distributed forms consistent with computing techniques, including cloud computing systems.

[0139] It should be noted that some of the system features described herein are presented as modules to further emphasize implementation independence. For example, a module may be implemented as a hardware circuit comprising custom very large scale integrated (VLSI) circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, graphics processing units, etc.

[0140] Modules may also be implemented at least partially in software for execution by various types of processors. For example, an identified unit of executable code may include one or more physical or logical blocks of computer instructions, which may be organized, for example, as an object, a procedure, or a function. Nevertheless, executable identified modules need not be physically located together; they may include separate instructions stored in different locations that, when logically combined, comprise a module to achieve the purpose stated for the module. Furthermore, modules may be stored on computer-readable media, such as, for example, a hard disk drive, a flash device, RAM, tape, and / or any other non-transitory computer-readable medium used to store data without departing from the scope of the present invention.

[0141] Indeed, a module of executable code may be a single instruction, many instructions, or even distributed across several different code segments, different programs, and multiple memory devices. Similarly, operational data may be identified and depicted herein within a module, and may be embodied and organized in any suitable form within any suitable type of data structure. Operational data may be collected as a single data set, or may be distributed in different locations across different storage devices, or may exist, at least in part, simply as electronic signals on a system or network.

[0142] Some embodiments store an object library in a database, a collection of UI descriptors corresponding to screens from a particular version of an application. The object library may be created by an RPA designer application (such as UiPath Studio™) when a user is developing an RPA UI automation. This may help create a more scalable and adaptable collection of UI objects that can be used to accommodate post-design changes, such as new versions of the application.

[0143] Consider a scenario in which an employee uses one or more RPA robots to perform tasks in a software application running on his or her computer. The information technology (IT) department then upgrades the software application with which the RPA robots interact. If the company's RPA team had not previously made changes to the revised UI descriptors, called RPA robot workflows, some RPA processes might break because the RPA robots can no longer find certain UI elements in the application due to changes in the new version (e.g., changing the functionality and / or appearance of UI elements, removing UI elements entirely, or moving them to new screens). If UI descriptors for UI elements already exist for both versions, the UI descriptors for the new version can be swapped with the UI descriptors for the previous version in the appropriate activities of the RPA workflow, and the RPA robots should then work with the new version.

[0144] 6A is a screenshot illustrating an RPA designer application 600, according to an embodiment of the present invention. The RPA designer application 600 includes a main RPA development pane 610 that contains an RPA workflow 612 (a sequence in this example). A "snippets" pane 620 contains reusable components or common automation items that can be reused and applied to multiple workflows. A properties pane 640 shows the properties of a selected activity 614 in the RPA workflow 612.

[0145] In this embodiment, the RPA workflow 612 executes a sequence of actions on a standard screen (or window) 670 of a Windows 7 calculator. See FIG. 6B. A user can use the view tab 672 to select different calculator settings from different screens. The sequence of actions in the RPA workflow 612 is to click button 2, click the plus button, click button 3, click the equals button, get the result text, click the clear button, and write the result with a "write line" action. A zoomed-in view of the sequence in the outline pane 630 is shown in FIG. 6C.

[0146] An expanded view of the snippets pane 620 is shown in FIG. 6D . The snippets pane 620 contains workflow snippets, which may be ready-made workflows that a developer can call / include in his or her own workflow (e.g., RPA workflow 612) in the RPA designer application 600. In some embodiments, the snippets pane 620 may provide a sandbox where a team, an enterprise, all developers in question, or other groups of developers may store UI descriptors for elements to be automated. The snippets pane 620 includes UI descriptors 621 arranged by application. Under a calculator application 622, the Windows 10 selector is organized under a Windows 10 version 623, a standard window 624, a target UI element 625, and a respective UI element selector 626. The Windows 7 selector is organized under a Windows 7 version 623A, a standard window 624A, a target UI element 625A, and a respective UI element selector 626A. In this embodiment, a selector is used, however, in some embodiments, a CV descriptor, an integrated target descriptor, or both may be included in addition to or instead of the UI element selector.

[0147] Figures 6E and 6F show the activities of a sequence of RPA workflows 612. A screen capture of the portion of a standard Windows 7® calculator screen corresponding to each activity is shown and highlighted for that activity, if applicable. Each UI element for an activity can be selected, for example, using the "Show" feature in UiPath Studio™, as described in more detail later in this specification with respect to using multiple UI descriptor types for activities. In this way, the user can visually confirm that the RPA workflow needs to interact with the desired UI element. Clicking button 615 for an activity that interacts with a UI element causes menu 616 to appear. See Figure 6G. The user can add each UI object to the object browser by selecting the Add to UI Object option 618.

[0148] Figure 6H is a diagram illustrating the RPA designer application 600 with properties for a click activity shown in a properties pane 640. Figure 61 is an expanded view of the properties pane 640. At the bottom of the properties pane 640, a user can select a UI object browser via a UI object browser tab 652.

[0149] Figure 6J shows the RPA designer application 600 with a UI descriptor view of the UI object browser pane 650, and Figure 6K shows an expanded view of the UI object browser pane 650 with the UI descriptor view. The UI descriptor view includes a project UI descriptor 654A and a UI object library 656A. In Figure 6K, no UI descriptor has yet been selected for the project.

[0150] To add UI descriptors, a developer can add them using snippets pane 620. For example, if a developer right-clicks Windows 7 version 623A in snippets pane 620, menu 627 can appear. The developer can choose to add these UI descriptors to the project, which causes them to appear under project UI descriptor 654A in UI object browser pane 650, denoting them as UI descriptor 658A. See FIG. 6L. The UI activity view of UI object browser pane 650, shown in FIG. 6M, displays project 654B and UI activity 656B. An RPA workflow can include various activities of different types, and the UI activity view lists UI activities 656B so that a developer can easily visualize them. UI activity 656B can be extracted and have a structure similar to that shown in snippets pane 620. In certain embodiments, all UI descriptors developed and shared in a library may be displayed in the snippets pane 620, but only UI descriptors used by a UI activity are displayed in the UI activity view of the UI object browser pane 650.

[0151] Once the selector is in the object browser pane 650, the user can drag and drop the given selector onto a desired activity, as shown in FIG. 6N. This provides reuse at the project level. In some embodiments, other UI descriptors, such as CV descriptors, integrated target descriptors, etc., can be dragged and dropped onto a desired activity in addition to or instead of the selector. Once the selector is dropped onto the respective activity, the RPA workflow 612 is ready to be executed by the RPA robot to interact with the respective UI elements.

[0152] Consider a case where a developer wants to run the same RPA process on a Windows 10 calculator (see Windows 10 calculator 680 in FIG. 6O). Because UI elements on a Windows 10 calculator are significantly different from those on a Windows 7 calculator, running an RPA process designed for a Windows 7 calculator can result in failures in activities that interact with various UI elements. See FIG. 6B. If selectors have already been developed for a Windows 10 calculator and are available in the public library of UI descriptors in snippets pane 620, as in this example, the user can remove the selectors for the Windows 7 calculator and add selectors for the Windows 10 calculator, which then appear in the UI activity view of UI object browser pane 650. Referring to the figure, in accordance with an embodiment of the present invention, the Windows 10 calculator selectors are used.

[0153] If the target application is set to a Windows 10 computer, the screenshot portion for each activity and its respective selector are updated in the RPA workflow 612. See Figure 6Q. The RPA workflow 612 would not execute correctly on a Windows 10 computer. This provides for reuse at the project level. However, the selectors are specifically within this project and are not yet available globally as a UI object library.

[0154] To "update" the calculator application, the UI descriptors for the UI elements are changed to those for the new version of the application. For example, a NuGet™ package containing these UI descriptors can be created, uploaded, and then retrieved. Thus, as the dependencies of the UI elements change, the UI descriptors will be updated.

[0155] To provide reusability at a global level so that all processes can use the UI descriptors, the UI object library 656A can be used. In this embodiment, clicking the Publish button 658 (see FIG. 6P) causes the Publish UI Object Library window 660 to appear. See FIG. 6R. This allows selectors and / or other UI descriptors from the project to be published to a package (e.g., a NuGet™ package) that can be accessed and utilized by other developers for other RPA processes after publishing them via the manage packages window 662. See FIG. 6S. Installing this calculator descriptor package as a project dependency causes the selectors / UI descriptors to appear under Libraries 656A in the UI Object Browser pane 650. See FIG. 6T. The UI object library can then be used for a specific project. As a best practice, selectors and / or other UI descriptors for interacting with UI elements can be imported as dependencies from the UI object library only if reuse is desired. However, if certain selectors or other UI descriptors are specific to a particular project and unlikely to be reused, the specific selectors / UI descriptors may be created locally for the project and others may be imported from a UI object library.

[0156] 7A is a screenshot showing an RPA designer application 700, according to an embodiment of the present invention. The RPA designer application 700 includes a main RPA development pane 702 that contains an RPA workflow 710 (in this example, a sequence that includes various UI element-specific activities). The project pane 704 contains the current project's dependencies. The UI descriptor pane 706 does not currently contain a selection of project UI descriptors and UI object libraries.

[0157] Figure 7B is an expanded view showing RPA workflow 710. Activity 720 may use selector-based identification, activity 730 may use CV-based identification, and activity 740 may use integrated target-based identification. The composition of activities 720, 730, and 740 in this example is described below.

[0158] Figure 7C shows a Windows 10 calculator 750 as modifiable by UiPath Studio™. When a user selects "indicate on screen" 721 for a selector-based specific activity 720 (see Figure 7B), the recognized element of the UI over which the developer moves the mouse is highlighted. For example, in Figure 7C, the 9 button 752 is highlighted. When the user clicks the 9 button 752, a screenshot 722 containing the selected UI element is displayed in the selector-based specific activity 720. See Figure 7D.

[0159] Clicking the button 724 of the selector-based specific activity 720 causes a menu 725 to appear. See FIG. 7E. Selecting the "Edit Selector" option opens a selector editor 726. See FIG. 7F. The selector editor 726 allows a developer to edit the selector's attributes and verify that the selector finds the respective UI element in the Windows 10 calculator 750 (i.e., the 9 button 752). Selecting "Highlight" highlights the respective UI element in the Windows 10 calculator 750. After the selector is created, the developer can click the button 724 of the selector-based specific activity 720 and select the "Add to UI Objects" option in the menu 725, which displays the add to UI objects library window 728. See FIG. 7G. The developer can then add the selector created for the 9 button to the UI object library for the project. The selector is now displayed in the UI descriptor pane 706. See FIG. 7H.

[0160] To configure the CV-based specific activity 730, the user must first indicate the screen on which CV will be performed in this embodiment. When the user selects "indicate on screen" 731 (see FIG. 7B), the user clicks on the Windows 10 Calculator 750 UI, which causes UiPath Studio™ to detect elements (using CV) and labels (using the selected OCR engine 732—in this case, Microsoft OCR), and a message 733 is displayed. See FIG. 7I. Once the elements and labels of the Windows 10 Calculator 750 UI are detected, a screenshot 734 of the detected UI elements is displayed in the CV-based specific activity 730. See FIG. 7K. A CV click activity 735 can be used, which can be configured to identify the 9 button using CV. This activity can be added as a nested activity within the CV-based specific activity 730 using the search interface 708, which can be displayed when the developer clicks the specific activity's plus icon. See FIG. 7J.

[0161] When a developer clicks to indicate the scope 736 of the CV click activity 735, a Windows 10 calculator 750 is displayed with a CV click interface 754. See FIG. 7L. However, when the user clicks the 9 button 752, the button is not uniquely recognized using CV. See FIG. 7M. The CV click interface 754 displays a message to the developer that a duplicate match was found and prompts the developer to add anchors. The developer then adds anchors for the 9 button 752 (e.g., selected anchors 756, 757 and candidate anchor 758 using the anchor selection function) until the 9 button 752 is uniquely identified as the target UI element based on its relationship to other anchor UI elements in the Windows 10 calculator 750. After the CV descriptor for the 9 button 752 uniquely identifies it using the target and anchor(s), a screenshot 737 is displayed in the CV click activity 735. See FIG. 7O. In FIG. 7O, screenshot 737 shows a version in which the target and anchor are not properly selected, but this is shown for illustrative purposes only. In certain embodiments, the CV descriptor may be saved without configuring it to uniquely identify a target UI element.

[0162] A developer can view the CV click in the descriptor properties using the properties tab 760. See FIG. 7P. This provides various variables for the CV descriptor. However, unlike selectors, the underlying attributes of a CV descriptor's selector can be complex and related to the application of an AI / ML model to an image. Therefore, while a CV selector is provided, in some embodiments, it may not be easily accessible or modifiable by the developer. Instead, the developer may re-specify the target UI element to edit the CV descriptor / selector. This also means that in some embodiments, even non-technical users can indicate the target / anchor. The collection of UI elements on the screen and the UI element the developer wants to click can be saved as part of the CV-based identification activity 730.

[0163] For the integrated target-based specific activity 740, when the developer selects "Indicate Application" 741 (see FIG. 7B), the user clicks on the UI of the Windows 10 calculator 750, which causes UiPath Studio™ to capture a screenshot 743 of the UI and display the screenshot 743 in the integrated target-based specific activity 740. See FIG. 7Q. The application path 744 for the application associated with the screenshot 743 is also shown, and the developer can add application arguments 745 as needed. A do activity 742 is nested within the integrated target-based specific activity 740. When the developer clicks the plus icon, a search interface 708 is displayed. See FIG. 7R. The developer can then search for the desired click function.

[0164] The selected click option causes a nested click activity 746 to appear within the do activity 742. See Figure 7S. The click activity 746 includes an indicate on screen button 747 that allows the developer to indicate the target to be selected and clicked on the screen. The developer can also specify the type of click and the mouse button to click. In this case, a single left click is specified.

[0165] Clicking the Show On Screen button 747 brings up the Integrated Target Selection Options window 770. See Figure 7T. Integrated Target adds targets and / or anchors based on an image and uses a selector-based framework behind the scenes. Hovering the mouse over the 9 button displays the target UI element outline 772. When the user clicks the 9 button, it is selected as the target and this status is indicated in the target UI element outline 772. See Figure 7U. Various option icons are also displayed, including an anchor designation icon 774. In this embodiment, UiPath Studio™ attempted to automatically find a suitable anchor but was unable to do so.

[0166] The developer specifies the anchor 776 (in this case, the 8 button), and the combination of these elements allows the unified target logic to uniquely identify the target 9 button using the combination of the target and anchor 8 button. See FIG. 7V. The unified target selection options window 770 then confirms that the target and anchor are OK, and the designer may validate the target and anchor selectors and confirm or cancel the selection. Here, the developer selects to validate the target and anchor selectors, and the unified target selection options window 770 confirms that the validation was successful with a validation accuracy score of 100% indicated in the validation score notification 778. See FIG. 7W. After indicating that the target and anchor selectors are OK, the target and anchor screenshot 748 is displayed. See FIG. 7X. In certain embodiments, CV techniques may be used within the unified target framework.

[0167] In some embodiments, image matching may be used to locate UI elements. For example, a click image activity 780 was added in FIG. 7Y. When the developer selects "indicate image on screen" 782, the developer can define an image for the image search. In FIG. 7Z, when the developer drags box 784 around the 9 button, a screenshot 786 of the 9 button appears in the click image activity 780. The properties of the click image activity are displayed in the properties tab 760. See FIG. 7a. A selector for the image is also generated, as shown in the selector editor 726 in FIG. 7b. The selector captures the application from which the developer took a snapshot.

[0168] In certain embodiments, a combination of selector and OCR may be used. Figure 7c shows a click OCR text activity 790 that includes a field 794 where a developer can manually enter text to search for and an OCR engine 796. In this embodiment, when a user clicks "Indicate on screen" 792, the user selects a UI element in a manner similar to the selector-based approach (see Figure 7c). After selecting a UI element, a screenshot 798 of the selected UI element is displayed in the click OCR text activity 790. See Figure 7d. However, unlike the selector-based approach, the selector and OCR approach also uses OCR to identify the UI element. For example, many of the calculator buttons have the same shape, but only one button has each number.

[0169] FIG. 8 is a flowchart illustrating a process 800 for generating a selector-based activity according to an embodiment of the present invention. The process begins at 810 by generating a selector-based activity. The activity can be clicking a button, entering text, opening a menu, and selecting an option, etc. A display on screen command is received at 820, and the application is detected at 830. This may, in some embodiments, include automatic detection of the application, detection of the application version, and / or detection of a screen within the application. If the application is not automatically detected, detecting the application may include prompting the user to provide the application name and version. For example, if multiple applications are detected and / or the user can manually enter this information, a drop-down list may be provided to the user to provide the application name and application version.

[0170] A set of activities may be provided that allow developers to create the desired RPA process. Some activities may allow users to point to screens / applications they wish to use. When a user wants to perform an automation, the user may indicate the screen, on-screen UI element, etc. that the activity should interact with. Certain activities may open applications. This may include opening a desktop application, navigating using a URL, etc.

[0171] UI elements on the application screen are detected at 840. In some embodiments, the detected elements may be highlighted for the user to generate a UI model. The detected UI elements may be organized as a taxonomy or tree as a model of the screen. However, in certain embodiments, a non-taxonomic approach, such as an ontology, may be used. The ontology may define specific structural and logical relationships between screens. For example, clicking a "Send" button on one screen may cause another screen containing at least some different UI elements to be displayed. Also, certain UI elements and / or portions of a screen may be common to multiple screens. For example, in Microsoft Outlook®, the left rail navigation subscreen typically remains constant and can be reused across screens. Identifying subscreens and / or UI elements that do not change may reduce processing time.

[0172] At 850, an indication of a UI element for the activity is received from a user, which in some embodiments may include clicking the desired UI element. At 860, an out-of-the-box selector is generated for the indicated UI element using a driver (e.g., driver 340) based on the best match for the UI element, and the activity is configured accordingly.

[0173] 9 is a flowchart illustrating a process 900 for generating a CV descriptor-based activity according to an embodiment of the present invention. The process begins at 910 by generating a CV descriptor-based activity. At 920, a display command on a screen and a user selection of a screen to automate are received. For example, in some embodiments, the user may select the entire application interface. At 930, the application is detected, and at 940, UI elements on the application screen are detected using the CV.

[0174] A command specifying a UI element for interaction is received and the interface is displayed with the selectable UI elements detected by the CV at 950. A selection of a target UI element is then received from the user at 960. If the target can be uniquely identified at 970, a CV descriptor is generated and the activity is configured accordingly at 980. However, if the target cannot be uniquely identified at 970, anchor specifications are required and received from the user until the target can be uniquely identified at 990. The process then proceeds to step 980 to generate a CV descriptor and configure the activity.

[0175] 10 is a flowchart illustrating a process 1000 for generating integrated target-based activities according to an embodiment of the present invention. At 1020, an application display command and a user selection of a screen to automate are received. For example, in some embodiments, a user may select the entire application interface. For example, at 1030, an application is detected, and at 1040, a driver is used to detect UI elements on the application screen.

[0176] A command specifying a UI element for interaction is received, and an interface is displayed with the selectable UI elements detected by the driver at 1050. A selection of a target UI element is then received from the user at 1060. If the target can be uniquely identified at 1070 using selectors for only that element, an integrated target descriptor is generated (e.g., selector), and the activity is configured accordingly at 1080. However, if the target cannot be uniquely identified at 1070, anchor specifications are required and received from the user until the target can be uniquely identified at 1090. In some embodiments, this may include validating the target and anchor(s) by determining a validation score. The process then proceeds to step 1080 to generate an integrated target descriptor (e.g., selector for the target and anchor(s), and the positional / geometric relationship between them) and configure the activity.

[0177] To determine whether a UI element is uniquely identified, a strength calculation (e.g., a validation score) may be used to determine how closely the target UI element is considered to match the integrated target UI descriptor. If the strength calculation is below a threshold (e.g., below 97%, below 95%, etc.), the UI element may not be determined as accurately as desired at runtime. The acceptable accuracy may vary depending on the task(s) to be accomplished in the RPA workflow. UI element targets that fall below the threshold may require anchors for unique identification. These anchors may be automatically determined and displayed to the user, or the user may select an anchor by hovering over the UI element. In some embodiments, the strength of the integrated target descriptor with the addition of a given anchor may be indicated to the user. If the threshold is not met after adding anchors, the user may need to continue adding additional anchors until the threshold for the target UI element is met.

[0178] Anchors are other UI elements on the screen that can be used to help uniquely identify a target UI element on the screen. For example, if a screen contains multiple text fields, searching the text field alone is insufficient to uniquely identify a given text field. Therefore, in some embodiments, additional information is sought to uniquely identify a given UI element. Using the example of a text field, a text field for entering a first name may appear to the right of a label that reads "First Name." This first name label may be set as an "anchor" to help uniquely identify the text field for the "target" selector.

[0179] In some embodiments, various positions and / or geometric associations between targets and anchors may be used, potentially within a tolerance, to uniquely identify a target. For example, the centers of the anchor and target's bounding boxes may be used to define a line segment. This line segment may then be required to have a particular length within a tolerance and / or slope within a tolerance to uniquely identify the target using the target / anchor pair.

[0180] In some cases, a single anchor may be insufficient to uniquely identify a target element on the screen. For example, consider a case where two text fields for entering a first name are displayed to the right of a "First Name" label in different locations on the screen. In this case, one or more additional anchors may be useful to uniquely identify a given target. Geometric properties between the anchor and the target (e.g., length, angle, and / or relative position of a line segment with a tolerance) may be used to uniquely identify the target. The user may be required to continue adding anchors until the match strength to the target exceeds a threshold.

[0181] In some embodiments, rather than marking and displaying UI elements and anchor candidates to the user, one or more anchors may be automatically assigned until the strength calculation exceeds a threshold. For example, if the threshold is 97% and the match strength of a particular UI element is 90%, the system may continue to add anchors until the match strength is equal to or greater than the threshold. This may be achieved in some embodiments by determining the anchor that most increases the match strength of the selector, adding this anchor, and if it is still below the threshold, determining that the match strength of other elements will increase after adding the anchor, adding the anchor that causes the greatest increase in match strength, and repeating until the threshold is met.

[0182] 11 is a flowchart illustrating a process 1100 for creating an image matching activity according to an embodiment of the present invention. The process begins at 1110 by creating an image matching activity. The activity can be based on an image matching technique, such as clicking a button, entering text, opening a menu and selecting an option, etc. A display command on the screen is received at 1120, and an application is detected at 1130.

[0183] A selection of an area of ​​the application where image matching is to be performed is received at 1140. This may include a user drawing a box around the UI element of interest, using a lasso tool, drawing a freeform selection, or other selection mechanism without departing from the scope of the present invention. An image matching selector is then generated for the selected image, and at 1150 the activity is configured accordingly.

[0184] 12 is a flowchart illustrating a process 1200 for generating a selector and an OCR-based activity according to an embodiment of the present invention. The process begins at 1210 by generating a selector and an OCR-based activity. The activity can click a button, enter text, open a menu, and select an option, etc. A display command on the screen is received at 1220, and an application is detected at 1230. UI elements on the application screen are also detected at 1240.

[0185] At 1250, an indication of a UI element for an activity is received from a user, which in some embodiments may include clicking the desired UI element. At 1260, an out-of-the-box selector is generated for the indicated UI element using a driver based on the best match for the UI element, and the activity is configured accordingly. At 1270, a selection of an OCR engine is received, and the activity is configured accordingly. When performed as part of an RPA process, rather than searching for a selector alone, selector and OCR-based activities verify both that a selector for the UI element is found and that the text of the UI element matches the text specified in the activity using OCR.

[0186] 13 is a flowchart illustrating a process 1300 for generating an RPA workflow using multiple identification techniques, according to an embodiment of the present invention. The process begins with generating a UI element identification and interaction activity at 1310. The activity may be one or more selector-based identification activities, CV-based identification activities, integrated target identification activities, image matching identification activities, selector and OCR-based identification activities, any other suitable identification activities, any combination thereof, etc.

[0187] The UI element identification and interaction activities are then arranged into logical relationships at 1320. The logical relationships can be sequential, conditional (e.g., if the first activity does not uniquely detect the UI element, use the second, then the third, etc. until the UI element is uniquely identified or all activities have been tried), parallel, etc. At 1330, an RPA robot implementing the workflow including the UI element identification and interaction activities is generated, and at 1340, the RPA robot is performed to detect and interact with the UI element.

[0188] 14 is a flowchart illustrating a process 1400 for creating UI object libraries and configuring a project to work with a new version of an application, according to an embodiment of the invention. The process may begin by loading one or more UI object libraries from a UI object repository, if they were previously created, at 1410. Then, at 1420, UI descriptors are created and / or added for interacting with each UI element of an activity from the one or more UI object libraries to interact with the new version of the application having a modified UI.

[0189] Once the appropriate UI descriptors have been updated, a UI object library containing the UI descriptors is published in a UI object repository at 1430. The UI object library may also include applications, screens, and at least some UI elements from the applications with which the activities interact. However, in particular embodiments, other UI elements and / or UI descriptors not specifically used in the RPA workflow may be included. The UI object library is then published or republished in the UI object repository at 1440 for use by other RPA workflows and / or other developers.

[0190] If a UI object library is missing UI objects or if the UI descriptor for an activity no longer works in the new version of the application, the user can add them. The created UI object library, and potentially other UI object libraries in the UI object repository, can be displayed to the user in the designer application. In some embodiments, publishing of object libraries can be performed as part of a global object library database (OLDB) or a local OLDB. For example, a global OLDB UI object repository can be a globally shared database (at the Center of Excellence (CoE) level). A local OLDB UI object repository can be a locally shared database (at the local machine level). In some embodiments, UI object libraries can be pushed and published to a service such as the UiPath™ service or the Go! service. This allows a set of UI object libraries to be shared with the world, if desired. The storage format of a UI object repository (such as the OLDB) needs to be determined at the architectural / technical level.

[0191] The process steps performed in FIGS. 8-14 may be performed by a computer program encoding instructions to a processor(s) to perform at least a portion of the process(es) described in FIGS. 8-14 in accordance with embodiments of the present invention. The computer program may be stored on a non-transitory computer-readable medium. The computer-readable medium may be, but is not limited to, a hard disk drive, a flash device, RAM, tape, and / or any other such medium or combination of media used to store data. The computer program may include coded instructions for controlling a processor(s) of a computing system (e.g., processor(s) 510 of computing system 500 of FIG. 5) to implement all or a portion of the process steps described in FIGS. 8-14, which may also be stored on a computer-readable medium.

[0192] The computer program may be implemented in hardware, software, or a hybrid implementation. The computer program may be composed of modules in operable communication with each other and designed to send information or instructions to a display. The computer program may be configured to run on a general-purpose computer, an ASIC, or any other suitable device.

[0193] It will be readily understood that the components of the various embodiments of the present invention, as generally described and illustrated herein, may be arranged and designed in a wide variety of different configurations. Thus, the detailed description of the embodiments of the present invention, as represented in the accompanying figures, is not intended to limit the scope of the invention as claimed, but is merely representative of selected embodiments of the invention.

[0194] The features, structures, or characteristics of the invention described throughout this specification may be combined in any suitable manner in one or more embodiments. For example, references throughout this specification to "certain embodiments," "some embodiments," or similar language mean that a particular feature, structure, or characteristic described in connection with an embodiment is included in at least one embodiment of the invention. Thus, the appearances of "certain embodiments," "some embodiments," "other embodiments," or similar language throughout this specification do not necessarily refer to the same group of all embodiments, and the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.

[0195] It should be noted that references to features, advantages, or similar language throughout this specification do not imply that all of the features and advantages that may be realized in the present invention are to be found in any single embodiment of the present invention, or in any embodiment of the present invention. Rather, language referring to features and advantages is understood to mean that the particular feature, advantage, or characteristic described in connection with an embodiment is included in at least one embodiment of the present invention. Thus, discussions of features and advantages throughout this specification, and similar language, may, but do not necessarily, refer to the same embodiment.

[0196] Furthermore, the described features, advantages, and characteristics of the invention may be combined in any suitable manner in one or more embodiments. Those skilled in the relevant art will recognize that the invention may be practiced without a particular feature or advantage of one or more particular embodiments. In other instances, additional features and advantages may be recognized in particular embodiments, although they may not be present in all embodiments of the invention.

[0197] Those of ordinary skill in the art will readily appreciate that the invention as described above can be implemented using steps in a different order and / or with hardware elements in different configurations than those disclosed. Thus, while the invention has been described in terms of these preferred embodiments, it will be apparent to those skilled in the art that certain modifications, variations, and alternative configurations will become apparent while remaining within the spirit and scope of the invention. Accordingly, reference should be made to the appended claims to determine the scope of the invention.

Claims

1. 1. A computer program for creating a user interface (UI) object library for robotic process automation (RPA), stored on a non-transitory computer readable medium, the program comprising: Detecting an application associated with a screen of the UI; Detecting UI elements on the screen; Receive a selection of a target UI element; generating a UI descriptor for the selected UI element, wherein the generated UI descriptor includes a set of instructions for locating the target UI element on the screen, the UI descriptor including a UI element selector, an anchor selector, a computer vision (CV) descriptor, an integrated target descriptor, a screen image capture, an element image capture, or a combination thereof; Adding the generated UI descriptors for the selected UI elements to respective RPA workflow activities; A computer program configured to create and publish a UI object library including the UI descriptors in a UI object repository.

2. The computer program product of claim 1 , wherein the UI descriptor is or includes a selector generated based on a best match using a driver.

3. 2. The computer program product of claim 1, wherein the RPA workflow activity is or includes a selector-based identification activity, a computer vision (CV)-based identification activity, an integrated target identification activity, an image matching identification activity, or a selector and optical character recognition (OCR)-based identification activity.

4. Detecting the application associated with the screen of the UI includes automatically detecting the application and a version of the application; The computer program product of claim 1 , wherein the detected application and version of the application are added for the RPA workflow activity.

5. The program further comprises the at least one processor: extracting UI descriptors from activities in an RPA workflow that include the RPA workflow activity; The computer program product of claim 1 , configured to add the extracted UI descriptors to a structured schema that groups the UI descriptors by UI application, version, screen, and UI element.

6. The computer program product of claim 5 , wherein the structured schema is arranged into an ontology that includes relationships between UI elements in different screens.

7. The computer program product of claim 1 , wherein the detected application is a web application, and the UI descriptor includes a HyperText Markup Language (HTML) path to each UI element for a corresponding selector.

8. The computer program of claim 1 , wherein the program is or includes an RPA developer application.

9. The program further comprises the at least one processor: receiving one or more other object libraries from the UI object repository; The computer program product of claim 1 configured to display the created UI object library and the one or more other object libraries.

10. 2. The computer program product of claim 1, wherein the program is or includes a UI object browser that displays UI descriptors in one or more UI object libraries of a UI object repository, the one or more UI object libraries being organized by application and version.

11. The RPA workflow activity is or includes a computer vision (CV) based activity, and the program further comprises the at least one processor: Executing CV on the screen of the UI to identify UI elements on the screen; displaying the screen of the UI including the selectable components identified by the CV; receiving a selection of one or more anchor UI elements that serve to uniquely identify the target UI element; 2. The computer program product of claim 1, configured to add the one or more anchors to the RPA workflow activity to assist in identifying the target UI element.

12. The RPA workflow activity is or includes an integrated target-based activity, and if the target UI element cannot be uniquely identified, the program further comprises: receiving a selection of one or more anchor UI elements that serve to uniquely identify the target UI element; verifying that the one or more selected anchor UI elements uniquely identify the target UI element with at least a minimum verification score; if the selected one or more anchor UI elements uniquely identify the target UI element with at least the minimum verification score; 2. The computer program product of claim 1, configured to add the one or more anchors to the RPA workflow activity to assist in identifying the target UI element.

13. 10. The computer program product of claim 1, wherein the RPA workflow activity is or includes an image-matching based activity that uses image matching technology to search for an on-screen image specified by a user.

14. 2. The computer program product of claim 1, wherein the RPA workflow activity is or includes a selector and optical character recognition (OCR) based activity that identifies the target UI element using a combination of a selector generated based on a best match using a driver and OCR of text associated with the target UI element.

15. The program further comprises the at least one processor: The computer program according to claim 1 , which configures a plurality of RPA workflow activities including the RPA workflow activity in a logical relationship.

16. The program further comprises the at least one processor: The computer program product of claim 1 , configured to generate an RPA robot that implements an RPA workflow that includes the RPA workflow activity.

17. The computer program product of claim 1 , wherein the generated UI descriptor is for a newer version of the detected application.

18. 1. A computer program stored on a non-transitory computer-readable medium, the program causing at least one processor to: receiving a selection of a target user interface (UI) element on a screen of the application; generating a UI descriptor for the selected UI element, wherein the generated UI descriptor includes a set of instructions for locating the target UI element on the screen, the UI descriptor including a UI element selector, an anchor selector, a computer vision (CV) descriptor, an integrated target descriptor, a screen image capture, an element image capture, or a combination thereof; configured to add the generated UI descriptors for the selected UI elements to respective robotic process automation (RPA) workflow activities; The RPA workflow activity is or includes a computer vision (CV) based identification activity or an integrated target identification activity.

19. The program further comprises the at least one processor: extracting UI descriptors from activities in an RPA workflow that include the RPA workflow activity; 20. The computer program product of claim 18, configured to add the extracted UI descriptors to a structured schema that groups the UI descriptors by UI application, version, screen, and UI element.

20. 20. The computer program product of claim 19, wherein the structured schema is arranged into an ontology that includes relationships between UI elements in different screens.

21. The program further comprises the at least one processor:

20. The computer program of claim 18, configured to create and publish a UI object library including the UI descriptor in a UI object repository.

22. 20. The computer program product of claim 18, wherein the program is or includes a UI object browser that displays UI descriptors in one or more UI object libraries of a UI object repository, the one or more UI object libraries organized by application and version.

23. The RPA workflow activity is or includes a CV-based activity, and the program further comprises the at least one processor: Executing CV on the screen of the UI to identify UI elements on the screen; displaying the screen of the UI including the selectable components identified by the CV; receiving a selection of one or more anchor UI elements that serve to uniquely identify the target UI element; 20. The computer program product of claim 18, configured to add the one or more anchors to the RPA workflow activity to assist in identifying the target UI element.

24. The RPA workflow activity is or includes an integrated target-based activity, and if the target UI element cannot be uniquely identified, the program further comprises: receiving a selection of one or more anchor UI elements that serve to uniquely identify the target UI element; verifying that the one or more selected anchor UI elements uniquely identify the target UI element with at least a minimum verification score; if the selected one or more anchor UI elements uniquely identify the target UI element with at least the minimum verification score; 20. The computer program product of claim 18, configured to add the one or more anchors to the RPA workflow activity to assist in identifying the target UI element.

25. 1. A robotic process automation (RPA) developer application stored on a non-transitory computer-readable medium, the RPA developer application comprising: Detecting an application associated with a user interface (UI) screen; Detecting UI elements on the screen; Receive a selection of a target UI element; generating a UI descriptor for the selected UI element, wherein the generated UI descriptor includes a set of instructions for locating the target UI element on the screen, the UI descriptor including a UI element selector, an anchor selector, a computer vision (CV) descriptor, an integrated target descriptor, a screen image capture, an element image capture, or a combination thereof; configured to add the generated UI descriptors for the selected UI elements to respective RPA workflow activities; the RPA workflow activity is or includes a selector-based identification activity, a computer vision (CV)-based identification activity, an integrated target identification activity, an image matching identification activity, or a selector and optical character recognition (OCR)-based identification activity; The RPA developer application includes a UI object browser that displays UI descriptors in one or more UI object libraries of a UI object repository, the one or more UI object libraries being organized by application and version.

26. The RPA developer application further comprises: configured to create and publish a UI object library including the UI descriptors in the UI object repository; 26. The RPA developer application of claim 25, wherein the generated UI descriptor is for a newer version of the detected application.

27. The RPA developer application further comprises: extracting UI descriptors from activities in an RPA workflow that include the RPA workflow activity; configured to add the extracted UI descriptors to a structured schema that groups the UI descriptors by UI application, version, screen, and UI element; 26. The RPA developer application of claim 25, wherein the structured schema is arranged into an ontology that includes relationships between UI elements in different screens.

Citation Information

Patent Citations

  • Robotic process automation

    JP2018535459A

  • Systems and methods for capture and generation of process workflow

    US20200050983A1