Tratamento de erro
Durante a execução do processo podem ocorrer erros, este erros podem ser classificados em erros de ambiente ou erros de negócio.
- Os erros de ambiente, são contornados internamente assim que a causa for solucionada.
- Os erros de negócio são tratados na seguinte sequência:
- Pelo evento de borda de erro da atividade em que o erro ocorreu;
- Caso a atividade não possua um evento de borda de erro, o erro é tratado pelo sub processo de tratamento de erro do contexto;
- Caso o contexto não possua um sub processo de tratamento de erro, o erro é lançado para o contexto ao qual o subprocesso está inserido, para que seja tratado pelo sub processo de tratamento de erro deste contexto, e assim sucessivamente.
- Caso o erro chegue até o contexto inicial do processo, e este não possua um sub processo de tratamento de erro, é utilizado o tratamento padrão de erro.
Tratamento padrão de erro
O tratamento padrão de erro é uma forma pré-definida de como os erros ocorridos são tratados, que pode ser sobre-escrita quando necessário. Segue abaixo a sequência de como um erro é tratado quando capturado:
- Primeiramente, é executada a compensação de todas as atividades do escopo atual, sendo que:
- A compensação das atividades é executada na ordem inversa a que as atividades foram executadas;
- Apenas atividades que foram executadas com sucesso são compensadas;
- As atividades que não possuem compensação são ignoradas.
- Em seguida o erro é apresentado para o usuário, seguindo as regras:
- Caso o erro tenha ocorrido no escopo do processo, então a instância terminou com erro;
- Caso o erro tenha ocorrido no escopo de um subprocesso:
- É iniciado o tratamento de erro no escopo pai;
- Este procedimento é repetido até que o erro seja tratado ou a instância termine com erro.
Para sobre-escrever o tratador padrão de erros do escopo basta definir um subprocesso de evento do tipo erro nesse mesmo escopo. Esse subprocesso deverá possuir um evento inicial do tipo erro sem nome.
Na parte de baixo do processo acima há um subprocesso de evento do tipo erro. O evento inicial desse subprocesso não possui nome, então, este é responsável por capturar os eventos de erro que ocorrerem nesse processo.
Caso em uma execução, por exemplo, ocorra erro na tarefa de efetuar o pagamento, este erro será capturado e desviará a execução para o subprocesso. O subprocesso por sua vez, sendo executado, compensará as tarefas de reservar hotel e reservar passagem e na sequência concluirá o subprocesso e o processo. Então o que foi definido com esse subprocesso é que, caso ocorra algum erro nesse processo, as reservas são canceladas.

English
Español


