Description
Describe the bug
I have a BPMN with a subprocess containing another subprocess.
In both subprocesses, i can throw BPMN Errors.
I added, in each subprocess, an error event subprocesses to handle the BPMNError occuring inside.
When the engine search for an appropriate error subprocess to handle a BPMNError, the selected one is not always the same.
I put a full explanation of the problem on the flowable forum :
https://forum.flowable.org/t/bpmnerror-error-handling-subprocess-possible-bug-at-least-strange-behaviour/10873
Expected behavior
If i have a BPMN containing ITEMSubprocess containing a subITEMSubproces expect that :
- A BPMNError happening in a task of ITEMSubprocess will be handled by the error event subprocess of ITEMSubprocess .
- A BPMNError happening in a task of *subITEMSubproces will be handled by the error event subprocess of *subITEMSubproces.
I think the issue is caused by the fact that :
List<Event> events = eventMap.get(refId); for (String refId : eventMap.keySet()) { //Not always in the same order ; probably due to hashing
currentContainer.getFlowElement(refActivityId) // considers that a refActivityId in subITEMsubprocess is "contained" within ITEMSubprocess.
==> I get inconsisted results depending on the order of the eventMap keySet;
The selected error handling subprocess is the one of the last checked subprocess between ITEMsubprocess and subITEMsubprocess.
I think it should search for an error handling subprocess only withing current subprocess and it's parents; not in children subprocesses.
Additional context
flowable 7.0.0