System for optimizing the processing distribution of an automated process

BR102018002638B1Active Publication Date: 2026-09-01BLUE PRISM LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
BR102018002638
Authority / Receiving Office
BR · BR
Patent Type
Patents
Current Assignee / Owner
Publication Date
2026-09-01

Smart Images

  • Figure 00000028_0000
    Figure 00000028_0000
  • Figure 00000029_0000
    Figure 00000029_0000
  • Figure 00000030_0000
    Figure 00000030_0000
Patent Text Reader

Abstract

The present invention relates to a system for automating processes, and in particular, to a system for optimizing the distribution of work items among available processing resources within such a system. The system includes an active queue controller, operated on an application server, which manages the creation and deletion of virtual machines on available resources while querying a data store for work items and instructions to execute such automated processes.
Need to check novelty before this filing date? Find Prior Art

Description

SYSTEM FOR OPTIMIZING THE PROCESSING DISTRIBUTION OF AN AUTOMATED PROCESS FIELD OF THE INVENTION

[0001] The present invention relates to systems and methods for automating processes. More specifically, it relates to systems and methods for managing the execution of automated processes through one or more virtual workers. BACKGROUND OF THE INVENTION

[0002] It often happens that an expected or unexpected change necessitates a change in how a business operates. For example, launching a new product may require existing systems to be integrated, a new regulation may require the recording of process steps, or an acquisition may require the merging of two product lines and processes. The planning and implementation of a traditional enterprise system can incorporate these issues; however, these planning cycles are designed for large projects and do not support everyday operational change. As a result, changes are implemented at high cost and sometimes over many years, and thus new systems replacing the functionality of the original systems and providing the necessary new functionality have to be developed, thus requiring exhaustive testing and quality assurance before they can be reliably implemented.These systems also have to be designed and configured by people with the necessary special skills in computer programming and application development. This adds more time to the development process, since there are relatively few people with the necessary skills, if any, within an organization, and once such systems are implemented, the time it takes for users to adapt to them is considerable. Petition 870250018203, dated 07 / 03 / 2025, page 7 / 67 2 / 21 Getting familiar with new systems can be a lengthy process, often characterized by inefficiency and imprecision.

[0003] The problem arises because logistics business processes can often involve multiple independent and incompatible software applications. Some of these software applications may have APIs that facilitate the transfer of information into and out of an application by providing a predefined interface through which another software application can interact; however, this is not always the case. For example, many software applications used in these logistics business processes are legacy applications designed without the necessary features to allow easy access by other software applications. Others are custom-built internal software solutions created to serve a very specific purpose where there is a need to provide an interface through which other applications could interact.Traditionally, this is overcome by using operational personnel to bridge the gap between these software applications. Using operational personnel is a costly solution, as a large number of personnel may need to be employed to provide the necessary capacity. Once the gap between these incompatible software applications or systems is bridged by a human, the process is typically slow, since operational personnel work only part of the day, are limited by the speed at which they can input information or commands using a keyboard and mouse or any other interface, and are also limited by the speed at which they can read information from a screen or other output. Furthermore, humans are prone to errors in entering data or commands into one system and reading information from another, which a computer is not. Petition 870250018203, dated 07 / 03 / 2025, page 8 / 67 3 / 21 There is also the possibility of malicious interference with processes, systems, and data during the actions of operational personnel.

[0004] For example, a telecommunications provider might launch a new mobile phone device that requires the use of existing software applications and new systems that may be incompatible. This deficiency is usually filled by operational staff, but it is often not possible to predict the demand for such newly launched products, and thus too many or too few staff are trained to use the software systems. Therefore, it is desirable to bridge this gap between incompatible software systems with a solution that allows for rapid scaling to handle demand, without requiring detailed prior knowledge of the demand.

[0005] In such systems, large volumes of information are generally handled, which may be sensitive personal information. It is also desirable to handle this information consistently, which reduces the number of errors that can be associated with a human simply copying information from one system to another, and it is also desirable to handle the information securely and privately, which is only accessible when absolutely necessary.

[0006] These problems, where operational personnel are needed when pre-existing software applications fall short of the functionality required for a new process to be implemented, are not unique to business logistics. For example, the reception area of ​​a hospital or doctor's office is often a crowded environment with many patients arriving for their appointments. Receptionists waste a lot of time performing routine tasks, such as obtaining details from arriving patients. Petition 870250018203, dated 07 / 03 / 2025, page 9 / 67 4 / 21 game for their appointments and entering them into a software application that registers the patient for their appointment. This process is often slow, can be inaccurate due to patient details being missed, and takes time away from receptionists to perform other duties.

[0007] It may be desirable to provide self-service check-in terminals at the reception desk of a hospital or doctor's office that allow arriving patients to enter their own details into the system so that inaccuracies are minimized, receptionists are freed up to attend to other tasks, and waiting times are reduced. However, it may not be appropriate to provide a patient with the same interface as that provided to the receptionist, since the software applications used by the receptionist likely have more advanced features that unnecessarily confuse the patient, or the application may have administrative controls or access to information that would not be appropriate to provide to patients using a self-service check-in terminal.Unless the receptionist's existing application provides the capability for a new application running on self-service terminals to access certain functions and features, the same lengthy planning cycles, expenses, inefficiency, and imprecision associated with changing logistics business processes will apply when developing new software systems and applications that provide the necessary functionality to implement these systems. This often results in such projects never being realized. Many other examples will become apparent to the reader.

[0008] Existing solutions involve the use of virtual machines as virtual workers that are configured to automate these processes through interfacing with legacy software. Such a system Petition 870250018203, dated 07 / 03 / 2025, page 10 / 67 5 / 21 is described in PCT Application Publication WO 2015 / 001360 A1; however, these systems require a user to determine how work items should be distributed among virtual workers, and this is often an inefficient way to determine such things. Therefore, there is a need for an appropriate system and method to optimize the distribution of work items among virtual workers. SUMMARY OF THE INVENTION

[0009] The present invention relates to a system for executing automated processes. The system comprises a data store configured to store instructions for executing the automated processes, one or more work queues, and associations between each work queue and one of the automated processes; one or more virtual machines configured to execute one or more automated processes, where the automated processes are defined by instructions stored in the database; and an application server configured to assign one or more work queues to one or more virtual machines. Each virtual machine, when assigned a work queue by the application server, is configured to retrieve the instructions for executing the automated process associated with the assigned work queue from the database, and to execute the automated process according to the instructions retrieved from the database.

[0010] Each work queue typically comprises one or more work items, and each virtual machine is configured to execute one or more automated processes by processing the work items from the assigned work queue according to instructions stored in the database. Each work item may comprise one or more information data objects, and each work queue is typically a logical group of work items. Petition 870250018203, dated 07 / 03 / 2025, page 11 / 67 6 / 21

[0011] The instructions stored in the database can define a workflow to execute the automated process on each work item.

[0012] Preferably, the data storage is additionally configured to store link data that defines links between one or more virtual machines and one or more work queues.

[0013] Each virtual machine can be further configured to communicate with one or more of the other virtual machines. Virtual machines can be configured to communicate with one or more of the other virtual machines directly. Alternatively, virtual machines can be configured to communicate by transmitting a message to the application server or datastore, the application server or datastore being configured to store the received message in a message repository, and each virtual machine can be configured to query the application server or datastore for messages in the message repository.Alternatively, virtual machines can be configured to communicate by transmitting a message to the application server or datastore, and the application server or datastore can then be configured to transmit the received messages to one or more virtual machines.

[0014] The application server can be configured to assign a single work queue to a plurality of virtual machines. The datastore can therefore be configured to prevent simultaneous access to a given data object in the datastore by the plurality of virtual machines by locking the given data object when a virtual machine accesses the given data object. Preferably, the locking of the given data object persists throughout a failure event. Petition 870250018203, dated 07 / 03 / 2025, page 12 / 67 7 / 21 and the data store is configured to release the lock confirming that none of the virtual machines in the virtual machine plurality can process the data object.

[0015] The application server can be configured to calculate a required time duration to process a work item before the work item is processed, based on localized environmental or performance issues, network connectivity, and the responsiveness of the target virtual machine. The application server can be configured to provide an estimated time to process a work queue based on the calculated time duration to process a work item and the numerous virtual machines to which the work queue is assigned.

[0016] The application server can also be configured to monitor the progress of work queue processing by virtual machines. The application server can communicate with one or more virtual machines using a messaging protocol, and each virtual machine can respond to the application server with status information during process execution.

[0017] The application server can be configured to provide recommendations on assigning work queues to additional virtual machines and / or on performance and productivity improvements.

[0018] Preferably, the application server is configured to assign work queues to virtual machines based on the resources available to each virtual machine.

[0019] The application server can be further configured to analyze the execution of automated processes to identify an optimal distribution mode based on the speed, success, and / or responsiveness of each virtual machine, and to assign work queues to virtual machines based on the optimum. Petition 870250018203, dated 07 / 03 / 2025, page 13 / 67 8 / 21 identified distribution model. The application server can also instruct at least one of the virtual machines to stop processing the current work queue and start processing a new work queue based on the optimal distribution model.

[0020] The application server can be configured to analyze the execution of automated processes using machine learning algorithms to improve the distribution of work queues for virtual machines.

[0021] The application server can be configured to assign work queues to virtual machines based on attributes of the work items and / or the work queues. One or more work items may have a maximum queue time attribute that defines a maximum period of time that the work item can be part of the work queue before being processed. One or more work queues may have a maximum queue length attribute that defines a maximum number of work items that can be part of the work queue. At least one of one or more work queues may have a queue completion time attribute that defines a maximum time by which all work items in the work queue must be processed.

[0022] The application server can be configured to instruct at least one of one or more virtual machines to stop processing the current work queue and start processing a new work queue based on the attributes of the work items and / or work queues.

[0023] The system may additionally comprise an output device that is configured to output information relating to the current state and / or configuration of the system. BRIEF DESCRIPTION OF THE DRAWINGS Petition 870250018203, dated 07 / 03 / 2025, page 14 / 67 9 / 21

[0024] Figure 1 is a schematic of an implementation of a system according to the present invention.

[0025] Figure 2 shows an exemplary work queue and work items according to the present invention.

[0026] Figure 3 is a logic diagram of the system of the present invention. DETAILED DESCRIPTION OF THE INVENTION

[0027] The systems and methods described here operate within the context of a system for automating processes using virtual machines as a digital workforce that can interact with software applications and with each other in order to execute processes efficiently. Such a system is described in greater detail in WO 2015 / 001360 A1, the description of which is incorporated herein by reference.

[0028] Figure 1 represents a typical system 100 according to the present invention. The system 100 includes a data storage 101, an application server 102, and one or more virtual machines 103. The data storage 101 stores data relevant to the automated processes, such as work items to be processed and the instructions that define the automated processes. The application server 102 mediates communication between the virtual machines 103 and the data storage 101, and manages the creation, destruction, and operation of the virtual machines 103. The virtual machines 103 are configured to execute the automated processes according to the instructions received from the application server 102.

[0029] Virtual machines 103 can be organized into one or more resource groups 104a-c. A resource group 104a-c can be a logical grouping of virtual machines that is implemented through one or more hardware devices, such as servers, Petition 870250018203, dated 07 / 03 / 2025, page 15 / 67 10 / 21 represents the available computing capacity that is available to a given process or work queue to operate virtual machines and, therefore, automated processes. A specific automated process could have access to a single resource group, or it could have multiple resource groups made available to it. Data storage 101 and application server 102 are typically provided on dedicated hardware resources, such as dedicated servers; however, it will be appreciated that it is possible to operate data storage 101, application server 102, and virtual machines 103 on the same physical hardware.

[0030] Virtual machines 103 are persistent virtualized examples of standard end-user operating systems, preferably Microsoft Windows®, although any suitable operating system, such as macOS® or a Linux distribution, could be used. Preferably, virtual machines 103 are provided on one or more secure servers that cannot be accessed, physically or remotely, without appropriate security enablement or authentication. The servers, or resources, on which the virtual machines are provided preferably run Type 1 hypervisors, such as VMware ESX®; however, it will be appreciated that any suitable hardware and software arrangement that allows the creation and operation of virtual machines may be used. Virtual machines 103 are typically headless, that is, they do not have a monitor or similar connected output device that displays graphical output.With the operation of multiple virtual machines 103, multiple automated processes can be executed simultaneously to improve productivity or serve multiple external users simultaneously.

[0031] The automated processes that are executed by virtual machines 103 generally involve interaction with applications Petition 870250018203, dated 07 / 03 / 2025, page 16 / 67 11 / 21 legacy software vos, either through the user interface, using methods such as screen scraping, or using any available APIs or accessibility interfaces. The workflows that define the automated processes are designed by a user, typically on a separate computer terminal, saved and stored on the application server 102 or in the data store 101.

[0032] In the embodiment shown in Figure 1, data storage 101 is in bidirectional communication with application server 102, and application server 102 is in bidirectional communication with virtual machines 103. In this way, the application server acts as an intermediary device that manages the connections from virtual machines 103 to data storage 101. Application server 102 retains the security credentials of the data storage, such as for Windows Authentication or SQL Authentication, and behaves as a secure connection proxy for data storage 101 such that all virtual machines 103 communicate with application server 102 and application server 102 securely communicates with data storage 101 from some of the virtual machines 103.This arrangement allows application server 102 to be the only entity within system 100 that needs to store the data store security credentials with the correct authentication to access and modify the data stored in data store 101. Since the database server security credentials are only stored in one location within system 200, security is also improved with respect to storing security credentials on each virtual machine 103 and also provides greater security over multi-user and multi-password systems. Naturally, it will be appreciated that... Petition 870250018203, dated 07 / 03 / 2025, page 17 / 67 12 / 21 systems and the methods described herein may alternatively involve direct communication between virtual machines 103 and data storage 101, or indirect communication via means other than application server 102. Furthermore, system 100 may include more than one application server 102. For example, system 100 may include a dedicated application server for one or more resource groups 104a-c.

[0033] Datastore 101 is preferably an SQL database. Datastore 101 holds one or more SQL databases that hold a repository of processes and objects related to automated processes, user credentials, audit information, process logs, and workflow configuration and scheduling information for the automated processes. Multiple SQL schemas may be present in datastore 101, allowing different virtual machines 103 to run different automated processes that refer to different sets of information stored within the datastore 101 database.

[0034] Datastore 101 can be configured to prevent simultaneous access to a given data object in the datastore by virtual machines 103 by locking a data object when accessed by a virtual machine. When a virtual machine 103 accesses a data object in datastore 101, virtual machine 103 will also send a lock request. Alternatively, datastore 101 can automatically lock the data object when accessed by the data object. The register locks present in datastore 101 persist throughout a failure event, for example, a power failure. Datastore 101 releases the register locks by confirming that none of the machines will be able to access the data object. Petition 870250018203, dated 07 / 03 / 2025, page 18 / 67 13 / 21 The plurality of virtual machines 103 can process data in the database without a new lock request. Virtual machines 103 can send a notification to datastore 101 that the lock is no longer needed on the data object, and datastore 101 subsequently removes the lock from the data object, allowing it to be accessed again by other virtual machines 103.

[0035] System 100 optimizes the execution of automated processes through virtual machines 103 using work queues. In existing systems, virtual machines 103 consult a work queue regarding which work items to process. In the system of the present invention, work queues are assigned to virtual machines 103 by the application server 102, which uses the target parameters and queue configuration information to determine how to reach the target. This is described in greater detail with respect to Figure 2.

[0036] Figure 2 shows a typical work queue 201, which is an ordered list of one or more work items 202a-c that are provided to virtual machines 103 for processing. Each work item 202a-c comprises one or more information data objects, such as a unique identifier for the work item, a case ID, and other contextual information. The specific types of information data objects for each work item 202a-c depend on the context and the automated process to which they refer. For example, in a process to activate SIM cards for use with a mobile phone network, the work items 202a-c might comprise a customer name, a phone number, an ICCID, an IMSI, and an authentication key.

[0037] The work queue is typically stored in data storage 101, but it would be appreciated if work queue 201 Petition 870250018203, dated 07 / 03 / 2025, page 19 / 67 14 / 21 can be stored in any suitable location in communication with application server 102. The information data objects retained by each work item 202a-c can be stored in plain text in data storage 101, or the work queue 201 can be configured to automatically encrypt the information data objects when they are saved to the queue, and to automatically decrypt them when they are retrieved from the queue.

[0038] The work queue 201 can be populated with work items 202a-c manually, or through feed processes 205. Feed processes 205 can obtain data from any suitable source, such as email 206, or a form 207, output work items 202a in the appropriate format, and add the work items 202a to the work queue 201. The work queue 201 can operate on a first-in, first-out (FIFO) basis, with work items 202c being distributed to virtual machines 208 for processing.

[0039] Work items 202a-c may have metadata that is used to manage automated processes (described in greater detail with respect to Figure 3), in addition to the information data objects that are used as part of the automated process. For example, work items 202a-c may have a maximum queue time attribute that defines a maximum period of time that work item 202a-c can be part of work queue 201 before being processed. Work queues 201 themselves may have a maximum queue length attribute that defines a maximum number of work items 202a-c that can be part of work queue 201.

[0040] The manner in which the system of the present invention processes work queues is described in greater detail with respect to Petition 870250018203, dated 07 / 03 / 2025, page 20 / 67 15 / 21 Figure 3. System 300 includes work queue 301, which is typically located in data storage 101, and includes work items 302. System 300 also includes an active queue controller 303, which is located on and operated by application server 102. Active queue controller 303 is associated with work queue 301. Active queue controller 303 manages resources 308, for example, in a resource group 306, creating and destroying virtual machines 307 on resources 308 and assigning resources 308 and virtual machines 307 to their associated work queue 301. Active queue controller 303 also monitors resources 308 and virtual machines 307 and queries database storage 101 for statistics regarding work queue 301.

[0041] The work queue 301 can be associated with additional parameters 304 that determine how the active queue controller 303 manages the resource of the resource group 306. In the example shown in Figure 3, the TARGET RESOURCES parameter 304 defines a target number of resources 308 that the active queue controller should assign to the work queue 301. This parameter 304 can be changed by a system user to add or remove resources that are in operation in the queue, that is, to create or remove virtual machines 307 on resources 308, for example, in order to speed up the process, or to make the use of resources more efficient for processes that are not time-sensitive.

[0042] The active queue controller 303 can provide feedback 305 to the system user. For example, the term ACTIVE RESOURCES indicates the numerous virtual machines 307 that are currently processing the work queue 301. The term AVAILABLE RESOURCES indicates the numerous resources 308 that are available to operate additional virtual machines. The term TIME REMAINING gives an estimate of the total amount of time remaining for all Petition 870250018203, dated 07 / 03 / 2025, page 21 / 67 16 / 21 of the 302 work items are in the 301 work queue. The estimated time required to process a single work item can be calculated based on localized environmental or performance issues, network connectivity, and the responsiveness of the target virtual machine. The estimated total remaining time can be calculated by taking an average work time for a 302 work item in the 301 queue and multiplying it by the number of 302 items remaining in the 302 queue. The term COMPLETION TIME indicates the projected time at which the 301 work queue will be complete, i.e., the current time plus the REMAINING TIME. Other indications of the status and progress of the 301 work queue may be additionally or alternatively provided, such as whether the 301 queue is running or paused, the elapsed time, the number of completed 302 work items, the number of pending 302 work items, and / or the total number of cases in the 301 work queue.

[0043] Active queue controller 303 is also responsible for creating and destroying virtual machines within resource group 306. For a given automated process to run, active queue controller 306 finds available resources 308 within resource group 306 and creates a virtual machine on the required resources 308.

[0044] When the active queue controller 303 determines that a new virtual machine needs to be created, for example, to reach new 'TARGET RESOURCES', it will create and start a new virtual machine on the available resources 308 in the resource group 306 assigned to its queue 301. The active queue controller 303 will create virtual machines on the least occupied resource 308 first; for example, if the group 306 has four available resources 308 and two of them already have virtual machines running, the active queue controller 303 will create a virtual machine on one of the resources that is not occupied. Petition 870250018203, dated 07 / 03 / 2025, page 22 / 67 17 / 21 is not currently running any virtual machines. If any virtual machine fails to be created or started for any reason, it will try again using other resources.

[0045] If active queue controller 303 needs to destroy a virtual machine that is currently processing work queue 301, active queue controller 303 can send a stop request to virtual machine 307, which causes virtual machine 307 to stop processing items in the work queue once it has finished processing the current work item.

[0046] Virtual machines 307 retrieve work items 302 from work queue 101 stored in datastore 101 via application server 102. As virtual machines 307 finish processing each work item 302, virtual machines 307 retrieve new work items 302 from work queue 301 stored in datastore 101 via application server 102 until work queue 101 is full or until the active queue controller 303 instructs virtual machines 307 to stop processing work queue 301. Once instructed to stop processing a queue 301, virtual machines 307 can be instructed to start processing another work queue, and virtual machines 307 themselves pull work items from the new work queue through communication via application server 102 with datastore 101.

[0047] Resources 308 and virtual machines 307 that are in operation are configured to communicate with other resources 308 and virtual machines 307. Virtual machines 307 can communicate with each other directly by transmitting and receiving direct messages between themselves. Alternatively, virtual machines and resources can transmit and receive messages between themselves via application server 102. Application server 102 can simply Petition 870250018203, dated 07 / 03 / 2025, page 23 / 67 18 / 21 redirect the messages it receives to the appropriate destination virtual machine 307, or the application server 102 can store the received messages in a repository that can be queried by virtual machines 307.

[0048] Communication between virtual machines is particularly useful in two scenarios. First, one of the virtual machines 307 can function as a management console such that a control terminal can display the status and availability of resources 308. The control terminal can be accessed by a system user to manually control the allocation of work queues to resources, to accept recommendations provided by the active queue controller 303, as described in more detail below, and / or to view the current state of virtual machines 307, resources 308, and work queues 301.

[0049] Secondly, as an alternative to resource groups that are directly managed by application server 102, as described above, one of the virtual machines 307 can function as the head of resource group 306, and communicate with the other virtual machines 307 and resources 308 in the resource group to determine which virtual machines 307 and resources 308 are available for processing and to pass instructions to other members of the resource group to start and stop processing received from application server 102.

[0050] The active queue controller 303 is configured to communicate asynchronously, or otherwise, with the virtual machines 307, that is, during the processing of a work item 302, in order to monitor the progress of the automated process. In this way, in addition to the statistics 305 that are provided to the user, the active queue controller 303 can provide recommendations to the user in allocating the work queue 301 to additional resources, that is, creating new Petition 870250018203, dated 07 / 03 / 2025, page 24 / 67 19 / 21 virtual machines 307 on resources 308, and other performance improvements.

[0051] In order to provide these recommendations, the Active Queue Controller 303 can analyze completion times and performance metrics on virtual machines 307 in the infrastructure using completed work items that store the resource ID of the virtual machine 307, an ID of the process that is executed, the date and time of execution, and the time it takes to execute the process. Different virtual machines 307 may operate at different speeds due to the capacity of the underlying hardware, the applications installed on the machine, including other virtual machines, and the distance of these applications and the machine itself from their respective application servers. The Active Queue Controller 303 uses this data to calculate, for a given process, the time of day and the entire composition of the work queue processing to be done, and which resources 308 or virtual machines 307 are best placed to execute the work in an optimal time.

[0052] As part of monitoring virtual machines 307 and resources 308, the active queue controller 303 analyzes the execution of the automated process to identify an optimal distribution model based on the speed, success, and / or responsiveness of each virtual machine 307 and resource 308.

[0053] Each work queue 301 maintains historical data that provides a high-level view of how work items 302 were processed. Each work item 302 that is worked on also maintains a comprehensive activity log in data storage 101 that details the process steps taken to process the work item, which may vary from case to case. The active queue controller 303 can use machine learning techniques to have the composition of the traPetition 870250018203, 07 / 03 / 2025, p. 25 / 67 20 / 21 work item 301 and the resource information gathered by the active queue controller 303, as described above, and combine the data for that work item 302 and the detailed log files to build a model that correlates the work queue data and the logging stages to determine what types of work items take specific periods of time to process. For example, a work item relating to a checking account with three holders might take twice as long to process as a savings account with one holder. The optimal distribution model is iteratively modified based on data produced by the system as it processes work queues according to the current optimal distribution model in order to refine the recommendations provided by the model.This information can only be gathered over time by using the details of the accumulated data within data store 101 to learn the data and process patterns that are reflected in completion times, in addition to process and resource information. The results of this analysis can subsequently be used to generate an optimal distribution model that describes the most effective way in which work items 302 within work queue 301 should be distributed among available resources 308 and virtual machines 307.

[0054] The active queue controller 303 can then provide one or more recommendations to the user on how the work items 302 should be distributed, or it can automatically assign the work queue 301 and the work items 302 to the optimal resource 308 based on the optimal distribution model. The active queue controller may consider the maximum queue time of individual work items 302 and maximum queue length attributes of the work queues 301 when distributing the work items 302 to the virtual machines 307. Petition 870250018203, dated 07 / 03 / 2025, page 26 / 67 21 / 21

[0055] It will be appreciated that this description is given by way of example only; alterations and modifications may be made to the described embodiment without departing from the scope of the invention as defined in the claims.

Claims

1. System for executing automated processes characterized in that it comprises: - a data store (101) configured to store instructions for executing one or more automated processes, one or more work queues (201, 301) each comprising a plurality of work items (202a-c, 302), and associations between each work queue and one of the automated processes; - one or more virtual machines (103, 307) configured to execute one or more automated processes, wherein the one or more automated processes are defined by instructions stored in the data store (101);and - an application server (102) configured to assign one or more of the work queues (201, 301) to one or more of the virtual machines (103, 307), wherein each virtual machine, when assigned to a work queue by the application server (102), is configured to: - retrieve the instructions to execute the automated process associated with the assigned work queue from the data store (101), and - execute the automated process by processing the work items (202a-c, 302) of the assigned work queue according to the instructions retrieved from the data store (101).

2. A system according to claim 1, characterized in that each work item comprises one or more information data objects.

3. System, according to any of the preceding claims, characterized in that each work queue is a logical group of work items (202a-c, 302). Petition 870250018203, dated 07 / 03 / 2025, p. 28 / 67 2 / 6 4. System, according to any of the preceding claims, characterized in that the instructions stored in the data storage (101) define a workflow to execute the automated process on each work item.

5. System, according to any of the preceding claims, characterized in that the data storage (101) is further configured to store link data that define links between one or more virtual machines (103, 307) and one or more work queues (201, 301).

6. System, according to any of the preceding claims, characterized in that each virtual machine is further configured to communicate with one or more of the other virtual machines (103, 307).

7. System according to claim 6, characterized in that the virtual machines (103, 307) are configured to communicate with one or more other virtual machines (103, 307) directly.

8. System according to claim 6, characterized in that the virtual machines (103, 307) are configured to communicate by transmitting a message to either the application server (102) or the data store (101), wherein the application server (102) or the data store (101) is configured to store the received message in a message repository, and wherein each virtual machine is configured to query the application server (102) or the data store (101) for messages in the message repository.

9. System, according to claim 6, characterized in that the virtual machines (103, 307) are configured to communicate by transmitting a message to one of the application server (102) or the data storage (101), and wherein the application server (102) or the data storage (101) is configured to transmit the received messages to one or more of the virtual machines (103, 307).

10. System, according to any of the preceding claims, characterized in that the application server (102) is configured to assign a single work queue to a plurality of virtual machines (103, 307).

11. System according to claim 9, characterized in that the data storage (101) is configured to prevent simultaneous access to a given data object in the data storage (101) by the plurality of virtual machines (103, 307) blocking the given data object when a virtual machine accesses the given data object.

12. System according to claim 11, characterized in that the lock on the specified data object persists throughout a failure event.

13. System according to claim 12, characterized in that the data storage (101) is configured to release the lock confirming that none of the virtual machines (103, 307) of the plurality of virtual machines (103, 307) is capable of processing the data object.

14. System, according to any of the preceding claims, characterized in that the application server (102) is configured to calculate a duration of time required to process a work item before the work item is processed.

15. System according to claim 14, characterized in that the application server (102) is configured to calculate the time duration based on localized environmental or performance issues, network connectivity, and responsiveness of the target virtual machine.

16. System according to claim 14 or 15, characterized in that the application server (102) is configured to provide an estimated time to process a work queue based on the calculated duration of time to process a work item and the number of virtual machines (103, 307) to which the work queue is assigned.

17. System according to any one of claims 14 to 16, characterized in that the application server (102) is configured to monitor the progress of processing the work queue by the virtual machines (103, 307).

18. System according to claim 17, characterized in that the application server (102) is configured to communicate with one or more virtual machines (103, 307) using a message protocol, and in that each virtual machine is configured to respond to the application server (102) with status information during process execution.

19. System according to any one of claims 14 to 18, characterized in that the application server (102) is configured to provide recommendations on the allocation of work queues (201, 301) to additional virtual machines (103, 307) and / or on performance and productivity improvements.

20. System, according to any of the preceding claims, characterized in that the application server (102) is configured to assign work queues (201, 301) to virtual machines (103, 307) based on the resources available to each virtual machine.

21. System, according to any of the preceding claims Petition 870250018203, dated 07 / 03 / 2025, page 31 / 67 5 / 6, characterized in that the application server (102) is configured to analyze the execution of automated processes to identify an optimal distribution model based on the speed, success and / or responsiveness of each virtual machine.

22. System according to claim 21, characterized in that the application server (102) is configured to assign work queues (201, 301) to virtual machines (103, 307) based on the identified optimal distribution model.

23. System according to claim 21 or 22, characterized in that the application server (102) is configured to instruct at least one of the virtual machines (103, 307) to stop processing the current work queue and start processing a new work queue based on the optimal distribution model.

24. System according to claim 21, characterized in that the application server (102) is configured to analyze the execution of automated processes using machine learning algorithms to improve the distribution of work queues (201, 301) to virtual machines (103, 307).

25. System according to claim 1, characterized in that the application server (102) is configured to assign work queues to virtual machines (103, 307) based on attributes of the work items (202a-c, 302) and / or work queues (201, 301).

26. System according to claim 25, characterized in that at least one of the one or more work items (202a-c, 302) has a maximum queue time attribute that defines a maximum period of time that the work item can be part of the work queue before being processed. Petition 870250018203, dated 07 / 03 / 2025, p. 32 / 67 6 / 6 27. System, according to claim 25 or 26, characterized in that at least one of the one or more work queues (201, 301) has a maximum queue length attribute that defines a maximum number of work items (202a-c, 302) that can be part of the work queue.

28. System, according to any one of claims 25 to 27, characterized in that at least one of one or more work queues (201, 301) has a queue completion time attribute that defines a maximum time by which all work items (202a-c, 302) in the work queue must be processed.

29. System, according to any one of claims 25 to 28, characterized in that the application server (102) is configured to instruct at least one of one or more virtual machines (103, 307) to stop processing the current work queue and start processing a new work queue based on the attributes of the work items (202a-c, 302) and / or work queues (201, 301).

30. A system, according to any of the preceding claims, characterized in that the system further comprises an output device that is configured to output information regarding the current state and / or configuration of the system.