Hi! I’m learning the REFramework and trying to implement in some business cases. Reframework called my attention because of its cappability to handling errors, but when i look to my process some questions appears, for example:
I have a process with 3 steps:
1- input the order in ERP
2- Alocate the order
3- Separate the order
Once one of these steps are done they can not execute again for the same order. Imagine if i had a system exception in the second step, it can not retry to process the transaction from the first step.
Should i have one robot for each step? For example: the first robot input the orders and populate a queue with the orders generated, the second get these queue itens, alocate and populate another queue, the thrid uses this last queue to separate the orders
Should i use something like a checkpoint? For example: after pass the first step some boolean variable is set to True
Each step can feed other tail. In this way, you can run the end-to-end process using the trigger method.
With status control, you can control transactions in a single process. By filling out the output field in the queue, you can continue from the step left in the records with errors.
There would always be some cases where you encounter a system exception for reasons beyond your control. In most cases they can be resolved by retrying the transaction. However, it does get tricky for cases like inputting information to generate a case or work order number. Depending your specific scenario, you can try any of these options that fit your needs:
You can look into adding a custom progress while the processing the item. You can check the progress and only execute steps that haven’t been completed yet.
Check in the system if the work has been completed before executing those steps. E.g. You can search for order in ERP and only create if it isn’t.
Lastly, you can split up the work like you suggested. Depending on the volume, you can have each robot perform a specific task, or simply use separate queues for each task. Robot will create a new queue item in Queue2 after it successfully executes a transaction in Queue1 and so on. Though this option will become more difficult to manage, troubleshoot, provide artifacts to auditors or even generate reports for business.