Skip to content

Problem while selecting the correct error event subprocessΒ #3754

Open
@marcberger

Description

@marcberger

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.

Code
https://github.com/flowable/flowable-engine/blob/6c5b934c0b0fa8b33a3612a11f503c06b81a369a/modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/helper/ErrorPropagation.java#L155C1-L175C18

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions