flowable / flowable/flowable-engine
Problem while selecting the correct error event subprocess
- Lingua principale
- Java
- Stelle
- 9.5k
- Fork
- 2.9k
- Merge medio
- 7h 8m
- PR unite (30g)
- 2
Descrizione
**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 **sub**ITEMSubproces 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 *sub**ITEMSubproces will be handled by the error event subprocess of *sub**ITEMSubproces.
**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 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
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia in modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/helper/ErrorPropagation.java intorno alle righe 155-175, poi leggi la spiegazione del forum collegata per il caso dei subprocessi annidati. Riproduci la gestione degli errori con subprocessi annidati e diversi ordini di eventMap; il lavoro è completato quando gli errori in ciascun subprocesso sono gestiti da quel subprocesso o da un parent che lo contiene, mai da un child.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java
- Ambito
- backend
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100