IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Workflow Foundation .NET Discussion :

[WF] Assembly Resolver pour les workflow


Sujet :

Windows Workflow Foundation .NET

  1. #1
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut [WF] Assembly Resolver pour les workflow
    Salut à tous,

    J'ai quelques soucis avec les workflows combiné au versioning d'assembly et à la persistance.
    Pour aller droit au but : Comment peut-on maintenir des workflows dont l'assembly d'origine a changé ?

    Imaginons que j'ai dans mon assembly Core un modèle de workflow de type State Machine. Mon projet client a un WorkflowRuntime afin de lancer des instances de mon Workflow provenant de l'assembly Core. J'ai ajouté le service de persistance afin que mes workflows soient sauvegardés dans une base de données.

    Je lance donc l'application avec mon assembly en version 1.1, je crée une instance de workflow et j'arrête l'application pour que le workflow soit sérialisé en base de données. Ensuite, je change le numéro de version de mon assembly Core (ça fonctionne aussi si je change le schéma de mon workflow) et je relance mon application avec la nouvelle version de l'assembly Core. Et là BOUM, impossible de récupérer mon workflow vu que l'assembly n'est plus la même, logique.

    Alors sur MSDN, je trouve la réponse pour gérer ce problème : http://msdn2.microsoft.com/en-us/lib...75(vs.85).aspx

    If you want to use the V1 version of the workflow for the V1 persisted instances, you can use an assembly resolver to help you handle this situation.
    Ok, je veux bien créer un assembly resolver... Donc j'imagine que c'est une classe qui pourra nous donner un objet Assembly. Exemple, je dis :
    • Je veux mon assembly Core en version 1.1
    • Maintenant, je veux mon assembly Core en version 1.2
    Est-ce que je me trompe ?

    Ensuite, j'ai mon objet Assembly, mais comment est-ce que je peux relier cet objet à la récupération d'une instance d'un workflow qui se trouve en base de données ?

    Comme vous voyez, il me manque quelques briques que je n'arrive pas à trouver sur google

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Et en effectuant une persistance binaire de ton wf, plutôt que d'utiliser la persistance de SqlWorkflowPersistanceService, ça donne quoi ?

    J'ai un problème un peu similaire, mais je l'ai résolu "bourrin" :

    - une assembly ne contient qu'un workflow.

    - tout lancement d'un workflow par un autre passe par mon "WorkflowNodesManager" qui , en gros, interroge la charge des différents noeuds disponibles et l'envoie sur celui a priori le moins chargé. (j'ai donc une activity d'enchainement spécifique).

    - si une modification est faite a un workflow elle n'est déployée que quand la dernière instance de ce type a fini son job.

  3. #3
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Et en effectuant une persistance binaire de ton wf, plutôt que d'utiliser la persistance de SqlWorkflowPersistanceService, ça donne quoi ?
    Tu parles de faire persister mes workflow sur fichier ? Tu penses que ça pourrait prouver quoi si je faisais ça ?

    - une assembly ne contient qu'un workflow.
    Pas bète.

    - si une modification est faite a un workflow elle n'est déployée que quand la dernière instance de ce type a fini son job.
    Cette solution n'est pas envisageable pour ma part car le projet contiendra des workflows qui pourront vivre pendant des semaines.


    Ce qui me pose vraiment problème, c'est la solution que propose Microsoft. Je ne vois pas comment relier tout ce que j'ai.

    Dans me base de données, deux workflows :
    • WorkflowType1 avec ID1 et créé avec l'assembly Core 1.1
    • WorkflowType1 avec ID2 et créé avec l'assembly Core 1.2
    Du côté de mon application courante (au niveau du client), j'ai un workflow runtime qui permet de récupérer un workflow en base de données. Mais comment faire pour désérialiser le workflow :
    • ID1, en prenant en compte l'assembly Core 1.1
    • ID2, en prenant en compte l'assembly Core 1.2
    Je ne sais ni quoi utiliser (fichier de config avec AssemblyBinding ou la classe Assembly ou encore la classe AppDomain avec l'utilisation d'un proxy apparement), ni comment utiliser chaque proposition.

Discussions similaires

  1. Comment appliquer un workflow pour les anciens enregistrements openerp 7?
    Par christian67ha dans le forum Odoo (ex-OpenERP)
    Réponses: 0
    Dernier message: 11/06/2015, 17h24
  2. workflow pour les annonces
    Par hermann.didier dans le forum Développement Sharepoint
    Réponses: 3
    Dernier message: 19/06/2012, 15h24
  3. Réponses: 0
    Dernier message: 21/10/2010, 16h13
  4. Réponses: 3
    Dernier message: 13/06/2006, 15h52
  5. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 22h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo