by Louis-Guillaume Morand
2. novembre 2009 22:16
Quelle ne fut pas ma surprise lorsqu'effectuant des tests sur une application ayant toujours fonctionné, mon application (ASP.Net + Workflow Foundation) me sortit ce doux message d'erreur : The workflow failed validation
en creusant un peu plus en DEBUG, je trouvais alors l'origine profonde du problème: Error 1342: Activity 'IfIsACF' validation failed: Can not find the condition "IsACF".
Facile me dis-je, l'activité IfIsACF, est une activité de type IfElse qui utilise une propriété conditionnelle nommée IsACF et il ne la trouve pas. Il me suffit d'ouvrir mon workflow en mode designer pour voir où est passée ma condition... Et là, c'est le drame. Mon activité est bien là et ma condition aussi. Je la supprime, je la remets, même problème. L'application compile mais à l'exécution ca plante.
Pour revenir au contexte, tandis que chez moi, je migre doucement mes projets 2008 (dont mon site perso) vers Visual 2010, au boulot, je migre les derniers projets sous 2005 vers VS2008. Et visiblement, le problème viendrait de là. En effet, strictement rien n'a changé dans mon projet si ce n'est qu'il est utilisé par VS2008. D'où vient le problème dans ce cas? Et bien, il semblerait que cela soit tout simplement une question de nommage de fichier. En effet, la classe de mon workflow se nomme DemandHabilitation et le fichier DemandeHabilitation. Cette simple différence entraine le fait qu'à l'exécution, le fichier de rules (DemandeHabilitation.rules) n'est pas trouvé lors de l'exécution, bien qu'en ressource incorporée.
Donc pour conclure, aussi con que cela puisse paraitre, ce problème ne se produit que pour certaines activités et est un bug connu mais l'origine du problème est facilement corrigeable puisqu'il s'agit dans 99% du temps d'un simple problème de nom de fichier et de classe.