Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
fix(engine): non-recursive execution of BPMN Activities #171
Before this commit atomic operations were executed recursively.
This commit changes that behavior. It introduces an operation loop
Before this commit atomic operations were executed recursively. This caused the problem that if a BPMN process had many activities that were executed sequentially, the stack grew very large until the execution failed with a StackOverflowException. This commit changes that behavior. It introduces an operation loop and list of queued operations in the CommandContext. Implementation Considerations: - The implementation tries to change the execution oder as little as possible: concurrency is still depth-first, operations are executed in the same order as before as much as possible. This way, users are affected by this internal change as little as possible. - This also means that not all atomic operations are executed using the loop: a majority of the operations are executed recursively but without growing the stack. Inuitively, operations "within" a given activity are executed recursively but the recursion is broken after the activity. - This fixes the problem with as little impact on user code as possible. fixes #CAM-4172