Orchestrazione ExceptionHandler
La soluzione Gestione processi aziendali usa due tipi di eccezioni: eccezioni di sistema e eccezioni dell'applicazione. Le eccezioni di sistema includono, ad esempio, errori relativi alle risorse come un errore di connessione di rete. È possibile che un problema di questo tipo si risolva da solo dopo un intervallo per consentire alla soluzione di riprovare tutte le operazioni che generano eccezioni di sistema. Le eccezioni delle applicazioni vengono prodotte da eventi che più raramente si risolvono da soli, ad esempio errori logici o un'incoerenza di qualche tipo. La soluzione usa l'orchestrazione ExceptionHandlerOrch per elaborare sia gli errori di sistema che dell'applicazione.
Le fasi di elaborazione dell'ordine (CableOrder1, CableOrder2) e le relative orchestrazioni satellite (Attiva, Analizza, Annulla, Modifica, Convalida) usano ExceptionHandlerOrch.
Nota
È possibile leggere questa sezione con l'orchestrazione ExceptionHandlerOrch aperta in Microsoft Visual Studio.
Errori delle applicazioni
Il gestore eccezioni registra prima l'errore chiamando il metodo PostError dell'oggetto ErrorHandler nell'assembly Utilities . Successivamente verifica se si tratta di un errore di sistema o delle applicazioni. Nella schermata seguente è mostrato il ramo dell'orchestrazione che elabora le eccezioni delle applicazioni:
Per un errore dell'applicazione, l'orchestrazione costruisce una stringa che descrive l'errore e chiama l'orchestrazione ErrorHandlerOrch . Questa orchestrazione invia l'errore alle operazioni in cui un operatore decide se correggere l'errore o terminare l'operazione. Se l'operatore corregge l'errore, il messaggio ripristinato torna dall'orchestrazione ErrorHandlerOrch e viene tentata nuovamente l'operazione. Il gestore eccezioni esegue questa operazione chiamando il metodo Invoke dell'oggetto Recaller nell'assembly Utilities . L'oggetto Recaller usa la reflection per chiamare il codice che ha causato l'errore.
Se la chiamata a Invoke ha esito positivo, il gestore eccezioni viene chiuso. In caso contrario, esegue il ciclo indietro e tenta di nuovo la chiamata a Invoke . Per altre informazioni sull'oggetto Recaller , vedere L'oggetto Recaller.
Errori di sistema
Il diagramma seguente mostra il ramo di errore di sistema dell'orchestrazione di ExceptionHandler :
Per un errore di sistema, il gestore eccezioni chiama prima l'orchestrazione CheckInterrupt e quindi attende un minuto. L'attesa consente l'eliminazione degli errori temporanei di breve durata, ad esempio i problemi di connessione di rete, prima del nuovo tentativo. Quando si effettuano chiamate remote, è sempre possibile che si verifichi un problema di rete.
Nota
In una struttura interrompibile, in generale eseguire un test durante o immediatamente dopo un periodo di attesa per stabilire se si è verificata un'interruzione.
Dopo l'attesa, il gestore usa il metodo Invoke dell'oggetto Recaller per eseguire il codice originale. Se la chiamata ha esito positivo, il gestore verrà chiuso. In caso contrario, il gestore tenterà altre due volte di eseguire il codice originale. Se tutti e tre i tentativi hanno esito negativo, il gestore costruisce una stringa di errore e chiama l'orchestrazione ErrorHandlerOrch .
Se l'elaborazione di un'eccezione di sistema causa un'eccezione, il blocco di eccezione la rileva:
Il gestore di eccezioni verifica il tipo di eccezione e riduce il contatore di tentativi se si tratta di un'eccezione di sistema oppure imposta un flag per indicare un'eccezione dell'applicazione.
Orchestrazione ErrorHandlerOrch
Il diagramma seguente mostra la prima parte dell'orchestrazione ErrorHandlerOrch :
L'orchestrazione errorHandlerOrch verifica prima il parametro IsBadOrder per verificare se l'errore è un ordine non valido (IsBadOrder è true) o un altro errore. Se l'errore è un ordine errato, assegna la destinazione del messaggio dall'indirizzo mittente dell'ordine originale e rispedisce il messaggio al sistema di assistenza clienti. Se l'errore non è un ordine errato, l'orchestrazione crea un messaggio di errore ordine e lo invia al sistema di operazioni.
Dopo uno dei due errori, l'orchestrazione resta in attesa di un messaggio di risposta o di interruzione:
Se l'orchestrazione riceve una risposta, la restituisce al chiamante. Se l'orchestrazione riceve un messaggio di interruzione, passa il messaggio a una porta di interruzione e genera un interruptException personalizzato.
Per altre informazioni sul modo in cui la soluzione usa e gestisce gli interruzioni, vedere Gestione degli interruzioni nella soluzione di gestione dei processi aziendali.
Vedere anche
Gestione delle eccezioni nella soluzione di gestione dei processi di business
Eccezioni personalizzate
Gestione degli interrupt nella soluzione di gestione dei processi di business
Oggetto Recaller