none
"OnTaskChanged" stoppe le workflow RRS feed

  • Question

  • Bonjour,

    Je rencontre une difficulté bloquante dont je n'arrive pas à me dépêtrer depuis plusieurs jours...

    Je développe un workflow d'approbation de document dans SharePoint et à l'aide de visual studio 2005. Il est pour l'instant assez simple :


    1) Parcours d'un ensemble de groupes de validateurs, groupes qui vont valider le document les uns après les autres. Ce parcours est effectué à l'aide d'un "Replicator" fonctionnant en séquence.

    2) Pour chaque groupe, parcours des validateurs qui le compose et qui vont valider
    en parallèle le document. Ce parcours est effectué à l'aide d'un autre "Replicator" fonctionnant, lui, en parallèle.

    3) Pour chaque validateur :

    a) Création d'une nouvelle tâche à l'aide d'un "CreateTaskWithContentType"

    b) Dans une boucle "While", attente que la tâche soit accomplie à l'aide d'un "OnTaskChanged"

    c) Suppression de la tâche


    Mon problème survient à l'étape 3b. Quand le workflow arrive dans le "OnTaskChanged", il s'arrête ! Je précise que :

    - J'ai bien utilisé le même jeton de corrélation pour les trois étapes a, b et c ;
    - Du fait qu'il y ait du parallélisme, j'ai pris mes précausions et utilisé, dans les méthodes appelées par le workflow, l'objet "sender" pour obtenir l'activité courante et non directement les attributs auto-générés par VS ;
    - La tâche est correctement crée ;
    - Aucune exception n'est levée, aucun log suspect n'est émit.

    Merci d'avance pour vos suggestions ! Et n'hésitez pas si vous souhaitez quelques précisions supplémentaires...

    jeudi 15 janvier 2009 11:25

Réponses

  • Problème enfin réglé !

    Le problème était en fait assez simple, mais je pense qu'il est bon de l'exposé car je ne suis certainement pas le premier à être tombé dans ce genre de piège :

    Quand Visual Studio est en mode "debug" sur un workflow, il intercepte les exceptions mais ne les fait pas toujours surgir à l'écran !!!! Du coup, l'exception n'étant pas écrite dans les logs, impossible de savoir d'où vient le problème. Dire que j'ai perdu plusieurs jours pour ça. En fait c'était tout bête, un attribut de mon workflow était d'un type dont la classe n'était pas annotée comme sérialisable. Du coup, lorsque WF essayait de le faire persister en base (à l'occasion du "OnTaskChanged", le workflow étant "mit en pause")... crach.

    Conclusion : Attention, Mode debug = pas de log
    jeudi 15 janvier 2009 14:42