An OO worker includes In Buffer, Thread and Out Buffer.
When In Buffer gets execution messages from the Queue service, it holds them until there is available Thread for execution.
Thread gets the execution messages and runs until the flow ends, or it gets to beginning/end of split step, or the flow needs a group that the worker is not part of.
While running the worker keeps updating the queue with its progress without exiting. Thread puts the execution message into Out Buffer, Out Buffer sends the finished execution messages back to the Queue service.
When the Queue service gets the execution message it assigns the flow to one of the Workers.