Im working on a project that will touch several applications, end result uploading a merged document to a Web Based application.
The way im visioning this process to flow is at each application it’ll loop through the full queue. When finished, start the next workflow, looping through the full queue again based on status of transaction items. Repeating this process until it has completed all workflows.
Does anyone have any thoughts on how to do this?
It depends on whether or not the task could be regarded as multiple processes or one process with multiple applications. If there are a large number of applications, it may be better to split the process up into separate UiPath processes on multiple queues. Otherwise, the REFramework dictates that you start all applications and run through the entire process for each transaction item.
In your case, I would recommend breaking this into multiple processes.
Question, haven’t used this activity before. If I were to add a “Start Job” activity within the “No Data” connector from “Get Transaction Data” to “End Process” of the REFramework, calling the next “Process” (aka Workflow, saved as a process), recalling the same queue, that would in theory re-loop the queue?
Start Job is used to start existing processes in Orchestrator. It would invoke the specified job on any new queue items. For the queue items already read and processed, it will not pull the transaction data. It would be more stable to have separate queues for each process.
What you are saying make sense! Great suggestion.
Still thinking out loud here…
Thoughts on Modifying the “SetTransactionStatus” workflow of the REFramework to remove the “Set transaction status” and add a “Set Transaction Progress”; Keeping the same Queue, and setting status levels based on the application they passed?
Use a “Start Job” activity to start the next process once done. In the “next” process check the status level. If met process if not then throw exception.
Each process performing its own task can run using the base REFramework, but the final process of merging all of the data will need a Dispatcher that detects when the process queues contain data and waits for the queues to have no new transaction items. At that point, it enters the transactions for the merging processes, which triggers the final merge.
All other processes would just do their jobs of processing their own queues. This way, you keep each of your individual processes simpler.
I agree with @Anthony_Humphries that it depends if your task could be regarded as multiple processes or one process with multiple applications.
If you have the scenario where you have one process with multiple applications, you could try to create a dispatcher/consumer and use the trigger functionality of orchestrator. This way you would have one process to push queue items to queue and one process that will process your queue item. With the new version of orchestrator, you could also parallelize your work making the orchestrator calls any available robot (in case you have more than one).
If you are able to have multiple process, you could create a process for each massive task that you have. The first process could retry the queue item and get all the info needed and make some process, in the end you could use Start Job to call the next process passing infos as input arguments, if needed. If you think this way you could link all the processes and avoid to overload the orchestrator as you call process via Start Job other process could get in the line in this middle time.
One thing you might consider is what you are gonna do if you transaction fail. In the fisrt way you could set the transaction status only in the end of process, this way you know either you transaction failed or not (and try to reprocess this items later on). In the second way you would have to think how you are gonna set transaction status.
Hope this helps!
Thanks @Anthony_Humphries @Schirru
I’ll be breaking this into separate processes with their own Queues.
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.