none
Alguém conhece um pattern ou uma boa prática para tratar exceções em situações com atividade Receive and SendReply usando WF 4.0 ?

    Question

  • Alguém conhece um pattern ou uma boa prática para tratar exceções em situações com atividade Receive and SendReply usando WF 4.0 ?

    Eu necessito executar uma CustomCodeActivity, contudo ela pode causar uma exceção pois está usando recursos de banco de dados ou enviando e-mail, por exemplo.

    No meu caso, minha atividade não pode lançar uma exceção e parar o workflow, pois sua instancia seria perdida e as atividades já executadas seriam impactadas. Eu não quero ter de iniciar uma nova instância do Workflow por um erro ocorrido.

    Para resolver o problema eu pensei em fazer o tratamento dentro do código da CustomCodeActivity e para isto criei uma OutArgument to retornar se uma atividade foi ou não executada. Se a atividade foi executada com sucesso, o workflow deve enviar um e-mail para o administrador relatando o problema ocorrido. Não usei a atividade Try Catch pois com ela eu tenho uma dificuldade maior para executar a atividade, pois tenho que usar uma atividade de While.

    A solução descrita acima gerou um problema, pois eu necessito desenhar este fluxo para quase todas as atividades que podem lançar uma exceção, e com isto deixo o meu workflow poluído e com pouca legibilidade.

    Minas dúvidas são:

    Esta solução descrita acima é a melhor forma de resolver o problema ?

    Como eu poderia modularizar esta solução para usa-la para cada atividade exposta como serviço (Receive Activity) sem repetir o mesmo desenho para todas as atividades ? Eu tentei criar uma atividade activity.xaml com esta implementação e passar o Receive.OperationName como argumento, contudo verifiquei que o valor da OperationName não é parametrizado e portanto eu tive que replicar este desenho para todas as minhas atividades de Receive.

    Segue abaixo o desenho de uma parte do fluxo e o codigo da CustomCodeActivity.

    Image 1: Fluxo para tratar a exception permitindo executar a atividade Receive novamente.

    Image 2: Código para tratar exception na CodeActivity

    Agradeço pela ajuda.

    Cristiano Franco

     


    • Edited by Cristiano Franco Thursday, January 05, 2012 12:43 PM O texto foi postado inicialmente em inglês.
    Wednesday, January 04, 2012 7:51 PM

Answers

All replies