Open Spreadsheet behaving unexpectedly for bot tasks running in parallel

Hi!

I’ve run into an issue when deploying a business process to a server with multiple bots working in parallel.

The bot extracts a list of tasks to perform from a database, splits it using the ETL split bot task and performs the tasks in parallel. After performing said task, the bot checks if the task was succesfully performed and is supposed to summarize the success or failure of each task in an excel file. Once all tasks have been reported the report should be sent.

There have been no major issues in developing this process with a single bot. However, after moving to a server with two bots, the bot task of compiling task completion fails when multiple bots attempt to perform it in parallel.

The bot checks for the task index in column ‘A’ of the excel report. Once the correct row is found the bot will go to column E and write a completion marker.
Next, the bot should read the total number of completed tasks so far (stored at the bottom of column ‘E’) from the excel file, increase the number by 1 and write the new number of reported tasks back to the same cell.
If the number of reported tasks is equal to the total number of tasks (meaning that everythin is compiled), a flag should be set that later makes the business process send the report.

This worked well with a single “worker”/bot. With multiple bots it does not behave as expected and does not read the correct current total.
I believe that there is a problem when using the open spreadsheet action (with save after last action) for bot tasks that may be running in parallel?

After running a process with three tasks I got the following result:

All three tasks were performed succesfully but were not compiled correctly - looking at the tasks_reported column or the resulting excel report:

image

I found https://forum-2-new.workfusion.com/t/merging-business-process-after-splitting-it-with-etl-bot-task/56898/4 and believe that I can work the solution provided there to skip using a cell for a running total.
However, the parallel compilation step would still behave wierdly as I need the bots to record their successes. E.g. In the above excel image all three rows should be marked with “TK” if they were succesful.

Kind Regards,
Ludwig

Hi @Lubr you need to create a bot source with 1 thread and add it to the bot task that writes the data to Excel, so it will be executed only on 1 bot simultaneously.

Thank you for the reply.

That sounds like a good solution!
I’ll try your suggestion out later in the week and confirm.

1 Like

Hi again,

I’ve just completed a full run of the business process.
It worked perfectly!
I am now confident enough to allow the process to run on an unsupervised schedule.

Thank you

1 Like

Glad I could help!

Hello again,
I’m not sure if I should create a new post or if I may continue in this thread.

I’ve run into another oddity with the same bot task.
When the business process is started by the scheduler the compilation bot task is extremely slow and consistently takes upwards of four hours to run for all records.
When the process is started manually it is fully completed within 20 minutes.

For a scheduled start:
image

For a manual start:
image

All other tasks in the process are always fully completed within 20 minutes.
There are three other business process scheduled on the server during the 4-8PM interval. But they are all small and require 10 minutes in total to execute.

Regards

I just noticed that both botsources on our server have their availability set to
“8-17|Sun,Mon,Tue,Wed,Thu,Fri,Sat”

Is it possible that:
The previous bot source (with multiple bots) is automatically made available when the scheduler starts a business process as it is used for the first task - whereas the second bot source (with a single bot) does not “wake up” when the process starts.
The compilation bot task (that uses the second bot source) does not execute until the bot source becomes available by itself at 8:00.

It seems a bit counterintuitive that one bot source wakes up by itself while the other does not?