flowable / flowable/flowable-engine

Problem while selecting the correct error event subprocess

Aperta
#3,754 0 commenti 2 reazioni 0 assegnatari Vedi su GitHub
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.