MultiBot Architecture Approach

Hello Team,

for One of my process i have to implement multi-bot architecture with Dispatcher and performer model.
I have process as below :
For Dispatcher Bot :
I will get emails (with one or more attachments), i have to download attachments , for each of the row i have to create the data in Queue. This should go into the dispatcher, what is the approach in REF to implement this as we are not initializing any applications how to handle the different states like what can be followed in Init , get transaction and process transaction states.

For Performed Bot :
I have only one queue for which data is populated in above dispatcher, but there are different Bots that has to consume these queues, how can i design performer so that if the 2 bot starts parallelly it should have to fetch the data simultaneously and process. What should be the design approach to be followed in this case for the performer. like, how the init state , get transaction and process transaction can be configured.
Any architects or leads can help me with your ideas.

Thanks in advance,
Best
Shiva

REF isn’t good to use for a dispatcher. Dispatchers are simple, just write your own top down automation from scratch.

how can i design performer so that if the 2 bot starts parallelly it should have to fetch the data simultaneously and process

Get Transaction does this automatically. The two jobs cannot both grab the same queue item.

@shivarajvp555,

From your description, what I understood that, you want add queue items from emails and consume the queue items by multiple instances of performer.

For Dispatcher:
Customize your REFramework to read outlook or your desired email protocol.
Refer this thread for Sample REFramework with Email.

In Process workflow of dispatcher, you should be adding logic to download the attachment and extracting data and queue addition.

For Performer:
So do this, surprisingly you don’t need to do any additional or specific configuration or changes to the performer for multibot architecture. :star_struck:

You just have to schedule two or desired number of jobs with different machines but with same performer process.

How both jobs will distribute the queue items between themselves?
Basically, this happens automatically at Orchestrator level. If one bot picked any queue item, it’s status will be changed to In Progress, so other bot will not pick that one and another queue item with New status will be picked. So here there wont be any conflict between both.

Thanks,
Ashok :slight_smile:

We assume that the dowloaded attachments are meant in sense of data used for the dispatching part

When:

the downloaded attachement file is later needed for the performer Queue Item Processing

Then:

the file location needs to be available for both bots (e.g. shared drive, storage bucket)

Thanks for your response @ppr , I need to add the data from files to the queue only, there is no need of the files for
post steps, attachments is only to add the data to queue.

Thanks @ashokkarale for the insights given , i will look into the steps. If any help or understanding required i will post for clarifications or understanding.

Thanks @postwick for the ideas shared, its as always your ideas helped me at most of the places in my projects. Let me look into the approach you shared.