The scheduler should be improved to make better use of the availability of execution machines, in particular with resource pools. Due of the current scheduler limitations, any given schedule on a resource pool needs to be updated as soon the number of machines belonging to this pool changes.
To illustrate how the current scheduler is limited, here is an example with a pool of 3 resources and 5 target sessions to run in parallel (session 1 to session 5 below).
Task 1 - Login - Login - Login
Task 2 - Robot start notification
Task 3 - Clean resource - Clean resource - Clean resource
Task 4 - Session 1 - Session 2 - Session 3
Task 5 - Session 4 - Session 5
Task 6 - Robot end notification
Task 7 - Logout - Logout - Logout
With more or less resources, all the tasks except the 2 about the robot notification start and end need to be updated. A smarter scheduler would specify this:
Task 1 - apply session to all available resources - Login
Task 2 - Robot start notification
Task 3 - apply session to all available resources - Clean execution machine
Task 4 - execute session as soon as an execution machine of the pool is available - Session 1 - Session 2 - Session 3 - Session 4 - Session 5
Task 5 - Robot end notification
Task 6 - apply session to all available resources - Logout
This means that the smart scheduler has two options for setting up a task.
First option: it is possible to indicate that the task session must apply to ALL available machines in the resource pool.
In the absence of this option, the session must be artificially duplicated in as many copies as the number of machines in the resource pool, which forces the task to be modified as soon as this number changes.
Second option: it is possible to run the sessions of a task as and when the machines in the resource pool become available. This is also valid if the task is assigned to a single machine.
In the absence of this option, two possibilities:
1) Splitting the target task into artificial tasks (like the first example), each of which includes a maximum number of sessions identical to the number of machines in the resource pool.
==> Very bad solution because if machines are not available, sessions are lost, and if all machines are available, the next artificial task will start only at the end of the session taking the longest time, in other words , machines are unoccupied when they could have been used for executions.
2) Use of a master process, which reads a dedicated queue, each item of which corresponds to a target session. The target session process is executed as a subprocess by the master process. Instead of running the target sessions, we run this master process on all the machines in the resource pool.
==> Better solution, but which requires having to modify the master process whenever you want to change the target sessions. And this solution poses a problem because the Blue Prism logs no longer make it possible to individualize the target sessions.
... View more