Working with multiple queues in REF

Hi, looking for input/best practice for:

  1. Say I have 1 Performer robot with REF design. In the Process part, we split into 3 modules, sequentially. eg:
    i. Merging PDF files & do some business matching
    ii. Data extraction & IDP
    iii. Sending out email

Is it possible/best practice to use 1 queue each to sent data from module i to ii & ii to iii?

This is because if there’s any error in any of the module, we would want to retry that item STARTING only from that specific module. Retry scope is added, but say if we want to ‘reprocess’ again regardless (business requirement).

If this is possible, I’m puzzled on how we can set each queue items status as we are setting the transaction status usually at end of Process. Should we do Nested REFs?

Please advice.

I usually keep one queue but have the dispatcher create three queue items for each case.

E.g. for case 001, the dispatcher will create three queue items with the references Case001_Step1, Case001_Step2, Case001_Step3.

Then in the performer, I have a flow chart that select the processing depending on the queue item’s reference.

E.g. if the reference ends with “_Step1”, invoke workflow “Process_MergePDFs”. If it ends with “_Step2”, invoke workflow “Process_DataExtraction”, etc.

@syezids

We need not have any nested REF.

We can have one queue with different reference and each reference is used to pickup items for that particular bot…

cheers

Hi, understood on that.

However I’m curious if working with 4 or 5 queues is normal with REF? Is it recommended or we should simplify the process as possible?

Please advice.

@syezids

If all the queues are having minor changes we can use one ref…else its better to simplify so that maintenance will be easy

cheers

Hi @syezids,

I side with @ptrobot and @Anil_G. Keep it simple and short.

Dispatcher specifies to the Performer what cases to use and the performer switches its logic. The queue item data has all the necessary information regarding the case and the both dispatcher/performer use only one queue. As @Anil_G said, maintainability is important.

If in the processing the performer fails at one step, you can use the approach mentioned here : Update Transaction Item while In Progress - #5 by jeevith

Avoid using any Nested REFs. Imagine your code being maintained by someone else and they see a nested REF! :slight_smile: