Managing Work Load due to heavy response time



We have a requirement to work with Google Calendar - fetch events associated with a user’s calendar and generate a report.
While using traditional approach of fetching event info using UI Explorer, each user related fetch is resulting in 33 sec of bot process.
Max records we have is 4000 and hence it hits almost more than 2000 min for the bot process to be complete. As per requirement, the bot is to run every 2 hours which would make it difficult to complete before another schedule starts.

How do we manage such heavy process loads?


You can use the Orchestrator Queue functionality to distribute the workload among several robots.

  1. Create a queue in Orchestrator for the work items.
  2. Create a “Dispatcher” process that will add one work item in queue for each user related fetch. This is a simple process that will populate the queue with items that needs to be processes - relevant data for the event fetch.
  3. Create a “Performer” process that will take one work item from queue and process it. Repeat as long as there are items in queue. The process part means to fetch events from calendar for the current item.
  4. Aggregate the results from all robots.

The “Dispatcher” process is executed first, it will add one work item in queue for each fetch that you need from the calendar. Then you can execute the “Performer” process on multiple robots, each one will process different items from queue - will fetch different data from calendar, until all data is fetched. If you start the “Performer” process on 10 robots, all the data should be fetched 10 times faster then when a robot is working alone.

Also, maybe you can improve the time it takes to process one work item by fine tuning the delays in the activities (DelayBefore, DelayAfter, WaitForReady, etc.)