[WF4+WCF] Attention au wizards de correlation XPath

Publié le 01 juin 2010 par Jeremy.jeanson

Windows Workflow Foundation 4 et Windows Communcation Foundation 4 sont de bons amis, on ne reviendra pas la dessus. Cependant ces deux bons amis on été à l'origine d'une belle prise de tête pour moi en ce début d'après midi.

Tout a commencé par un petit test sur un service codé ce matin même. A mon grand regrées ce test me remonte un message que tout le monde appréciera :

"Failed to invoke the service. Possible causes: The service is offline or inaccessible; the client-side configuration does not match the proxy; the existing proxy is invalid. Refer to the stack trace for more detail. You can try to recover by starting a new proxy, restoring to default configuration, or refreshing the service."

J'ai alors modifié mon fichier de configuration afin d'en savoir un peu plus :

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior>
        <serviceMetadata httpGetEnabled="true"/>
        <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> </system.serviceModel>

Ensuite via "WCF Test Client", après avoir relancé un test, je suis allé dans la partie XML pour connaitre la réponse exacte de mon service :

Le message complet est le suivant :

"A correlation query yielded an empty result set. Please ensure correlation queries for the endpoint are correctly configured."

Pourquoi pas?! Mais ce matin la corrélation de ce service fonctionnait parfaitement. Et le designer de workflow ne montre aucune erreur ni même warning. Après quelques recherches je me suis aperçu que le seul élément à avoir changé était en fait la propriété OperationName de mon activité Receive ...

Aurai je rencontré un souci de refactoring quelconque... (le designer de workflow n'aillant aucune fonctionnalité de refactoring, autant commencé par là). Et effectivement en ouvrant les wizards des propriétés CorrelationInitializers et CorrelatesOn je me suis aperçu que les queries XPath contenaient encore l'ancien OperationName.

Moralité : Du refactoring pour Workflow Foundation tu demanderas à Microsoft, et en attendant : prudent tu serras.

Pour corrigé le tire, il faut :

  • Supprimer les clés de corrélations.
  • Enregistrer le workflow.
  • Créer les nouvelles clés.

J'ai tenté de faire les modifications directement, sans supprimer les anciennes clés, cela n'a pas fonctionné. Je vous encourage donc à bien suivre cette petite procédure si d'aventure vous vous trouviez dans le même cas que moi.

@+