we are running many business process on multi-bot configurations, where one script is assigned to one bot to load items in a queue. A reframework process is used by many bots to pick up queue items which can be processed concurrently by multiple bots, that is not a problem as orchestrator & queue logic manage this for us.
Now, we want to build a business process that manages better system exceptions including system unavailability. I’m currently looking at building a process that leverages transactions. So one process would pick up a queue item, start a transaction by adding it to a seperate, transaction queue. Then another reframework process running on multiple bots would pull in a transaction item (filter: status, reference etc.) the problem is that if one bot, does a Get Transaction Items with a filter, the same process, running on a different bot would do the same Get Transaction Items with the same filter, and each running simultaneously would pick up the same list of transaction items from the transaction queue, if the script updates the status of say the first item in the list, the second bot would likely also be processing the same first item from the list. So from my understanding, both bots would be processing the same queue item at the same time until one updates the queue item status, in which then subsequent thread of the process would return a different list of queue items, how can we design and implement a transaction where a business process is executing a long running process, accessing say 2-3 applications, which may/may not be available etc.