Gestione di errori nei processi

Quando si crea un modello per la gestione degli errori come parte del processo, è possibile rilevare gli errori utilizzando gli eventi intermedi di errore o i sottoprocessi di evento ed è possibile generare errori utilizzando gli eventi di fine errore.

Tabella 1. Utilizzo degli eventi di errore nei processi
Evento Descrizione
evento intermedio di errore icona al limite di un'attività (evento limite di errore)
  • Rileva gli errori specificati o tutti gli errori
  • Fornisce la logica di gestione degli errori per gli errori generati dall'attività a cui è collegata
processo secondario evento errore che inizia con un evento di avvio errore icona
  • Rileva gli errori specificati o tutti
  • Fornisce la logica di gestione degli errori per gli errori generati dalle attività del processo, sottoprocesso o sottoprocesso dell'evento che contiene direttamente il sottoprocesso dell'evento di errore
Errore evento di fine icona Genera un errore

Rilevamento di errori mediante eventi intermedi di errori

Per i processi, è possibile collegare un evento intermedio di errore a un'attività e collegare tale evento a un flusso di gestione errori o a un'attività. L'evento di errore collegato è noto come evento limite di errore.

Per determinare se utilizzare gli eventi immediati di errore, considerare i seguenti punti:

  • Se si verifica un errore mentre un processo sta eseguendo un'attività con un evento di errore collegato al limite, il processo scorre lungo la riga di sequenza collegata all'evento di errore. Gli errori vengono gestiti nel flusso e quindi procedono con la normale elaborazione.
  • Gli eventi intermedi di errore devono essere collegati a un'attività.
  • È possibile avere più eventi di errore per una attività, ma solo uno rileva l'errore.
  • Specificare i dati di errore per rilevare errori specifici, filtrare il codice di errore per i tipi di errore rilevati e associare una variabile dopo che gli errori sono stati rilevati. Quando vengono rilevati tutti gli errori o se viene specificato solo un codice di errore, i dati di errore vengono catturati in un XMLElement nella variabile tw.system.step.error .
  • Per gestire gli errori di convalida in un servizio di salvataggio per oggetti business condivisi, catturare l'errore BPMBOSaveFailedError disponibile nell'elenco degli errori specifici. Questo errore è disponibile solo sui nodi che salvano il contesto di esecuzione, automaticamente (ad esempio, i coach) o esplicitamente abilitando l'opzione Salva contesto di esecuzione. Per ulteriori informazioni, vedere Salvataggio di servizi per oggetti di business condivisi.

Rilevamento di errori utilizzando i processi secondari degli eventi di errore

Un sottoprocesso di eventi è un tipo specializzato di sottoprocesso che non fa parte del normale flusso di sequenza del relativo processo parent. Un processo secondario di evento di errore è un processo secondario di evento che contiene un evento di avvio di errore. Il processo secondario dell'evento non è connesso dal flusso di sequenza e viene eseguito solo se l'evento di avvio nel processo secondario dell'evento viene attivato. È possibile utilizzare i sottoprocessi degli eventi di errore per gestire gli errori nel processo.

Per determinare se utilizzare i sottoprocessi degli eventi di errore, considerare i seguenti punti:
  • Definire un processo leggibile individuando l'errore nel sottoprocesso dell'evento invece di definirlo nel processo.
  • Per riutilizzare il flusso di gestione errori per più attività nel processo, utilizzare i processi secondari degli eventi. Per riutilizzare un flusso di gestione degli errori utilizzando gli eventi collegati, è necessario collegare un evento intermedio per ciascuna attività e quindi collegare tali eventi al flusso di gestione degli errori.
  • Definire gli oggetti di dati a cui è possibile accedere solo dall'interno del sottoprocesso dell'evento. È possibile definire solo gli oggetti dati che appartengono a un sottoprocesso. Il processo parent non è ingombrato di variabili non necessarie.

Per ulteriori informazioni sui sottoprocessi evento, consultare Modeling event subprocesses.

Esempio di gestione delle eccezioni a livello di processo

È possibile utilizzare la variabile di sistema di sola lettura tw.system.step.error per accedere alle informazioni memorizzate su un'eccezione che si è verificata in un processo.

La variabile esiste nell'ambito di una fase e non in un processo. Non può essere richiamato al passo successivo. Invece, è necessario accedervi nella sezione di post - assegnazione dell'evento di eccezione intermedio del limite.

Un esempio di come modellare un'eccezione e gestirla viene mostrato nella seguente immagine:

Questa immagine mostra come creare un'eccezione in un diagramma di processo.

Per richiamare i dati dell'eccezione, completare la seguente procedura:
  1. Dichiarare una variabile privata di tipo XMLElement, ad esempio tw.local.error. Assegnargli un valore, ad esempio, nuovo tw.object.XMLElement("abc").
  2. Creare una post - assegnazione per l'evento di eccezione intermedio collegato e assegnare la variabile di sistema alla variabile creata nel passo 1, ad esempio tw.local.error = tw.system.step.error.

    È possibile utilizzare il valore nella variabile locale nei passi successivi del processo.

Generazione di errori

È possibile utilizzare un evento di fine errore nel processo per specificare un codice di errore e associarlo a un tipo di errore su errori generati dal flusso di un processo o di un servizio.

Quando si utilizzano gli eventi di errore o i sottoprocessi di evento, considerare se gli errori possono essere gestiti immediatamente e se l'elaborazione normale può continuare o se un altro errore può essere generato ad un altro livello. Quindi implementare la gestione degli errori dal basso verso l'alto. In altri casi, potrebbe essere più efficiente e leggibile se il sottoprocesso può essere riutilizzato. Creare ogni processo e servizio collegato in modo che gli errori possano essere catturati e corretti. Se una correzione non è possibile al livello più basso dell'implementazione, è possibile consentire all'errore di salire di un livello non includendo un evento di errore o includere un evento di errore per rigenerare l'errore al servizio o al processo chiamante, come mostrato nella seguente sezione.

Ad esempio, per garantire che gli errori che potrebbero verificarsi durante il runtime del processo vengano catturati, è possibile creare un processo di alto livello che include un'attività per richiamare il processo principale come un processo collegato e quindi un'attività aggiuntiva con un servizio sottostante per implementare la gestione degli errori come mostrato nella seguente immagine:

Questa schermata mostra un diagramma del processo descritto al paragrafo precedente.

Questo tipo di progettazione garantisce che gli errori generati dai processi e dai servizi sottostanti vengano propagati e gestiti in modo appropriato.