Incluindo um Manipulador de Exceções Global em uma Orquestração

Durante o tempo de execução, se qualquer uma das atividades da orquestração lançar uma exceção, e um manipulador de exceções global tiver sido ativado, a ramificação CatchAll global será executada.

Sobre Esta Tarefa

A figura a seguir mostra um exemplo de orquestração:

Uma orquestração de exemplo

Neste exemplo, se as atividades Obter Inserções do Banco de Dados ou Inserir Linhas do Banco de Dados falharem e lançarem uma exceção, a atividade If..Then na ramificação CatchAll será executada.

Procedimento

  1. Clique com o botão direito do mouse no ícone Iniciar ícone Iniciar da orquestração e a partir do menu e selecione a opção Incluir Ramificação CatchAll. A ramificação CatchAll é incluída na orquestração e as seguintes variáveis são criadas automaticamente:
    • faultName - Durante o tempo de execução, a variável faultName contém o nome da exceção lançada por uma atividade na orquestração.
    • faultData - Durante o tempo de execução, a variável faultData contém a mensagem de erro associada à exceção. Essas informações adicionais são retornadas atualmente apenas para as atividades de Serviços da Web. Para atividades de serviços da Web, a variável faultData contém a falha.
    • faultInfo - Durante o tempo de execução, a variável faultInfo retorna os seguintes nós:
      • name - Durante o tempo de execução, o nó faultInfo/name contém o nome da exceção lançada por uma atividade na orquestração. O nó faultInfo/name é um tipo xsd:QName.
      • message - Durante o tempo de execução, o nó faultInfo/message contém a mensagem de erro associada à exceção. O nó faultInfo/message é um tipo xsd:string.
      • activityId - Durante o tempo de execução, o nó faultInfo/activityId contém o ID de atividade que identifica exclusivamente a atividade na qual a exceção ocorreu. O nó faultInfo/activityId é um tipo xsd:int.
      • activityName - Durante o tempo de execução, o nó faultInfo/activityName contém o nome da atividade no qual a exceção ocorreu. O nó faultInfo/activityName é um tipo xsd:string.
      • faultTime - Durante o tempo de execução, o nó faultInfo/faultTime contém o horário em que o erro ocorreu. O nó faultInfo/faultTime é um tipo xsd:dateTime.
      Nota: O nome da exceção retornado por uma atividade na variável faultName e no nó faultInfo/name pode alterar em um release futuro.
  2. Configure a ramificação CatchAll arrastando atividades da guia Atividades para a ramificação CatchAll, conforme mostrado na figura precedente.

Resultados

Nota: O escopo das variáveis faultName, faultData e faultInfo é limitado à ramificação CatchAll. Esta limitação de escopo significa que o valor dessas variáveis é seguramente válido apenas na ramificação CatchAll. Por exemplo, se você incluir uma atividade If...Then que testa o valor da variável faultName, a atividade If...Then deverá ser colocada na ramificação CatchAll, conforme mostrado na figura anterior.