2010-01-24 6 views
1

Je vais avoir du mal à trouver toute la documentation utile sur la nouvelle version de WorkflowServiceHost livré avec .NET 4/VS 2010 Beta 2.WorkflowServiceHost dans Windows Workflow - .NET 4 Version

La nouvelle version du WorkflowServiceHost maintenant vit dans System.ServiceModel.Activities et a différents contructeurs que l'ancienne version .NET 3.x qui vivait dans System.ServiceModel.

Je veux être en mesure de charger mon flux de travail en passant dans le type comme ce constructeur précédent dans la version 3.x .NET ... permis

public WorkflowServiceHost(Type workflowType, params Uri[] baseAddress) 

Mon problème est que je n'ai pas les informations dont tous les autres développeurs ont besoin au moment de la compilation (j'avais prévu de déduire le type de mon flux de travail via Type.GetType (string) car je n'aurai accès qu'aux activités réelles du Workflow lors de l'exécution).

Existe-t-il un autre moyen d'héberger un flux de travail qui a été chargé lors de l'exécution?

Merci pour votre aide à l'avance :)

Répondre

1

Dans WF4 vous passez la définition de flux de travail réel comme arbre d'activité au lieu d'un type que vous avez fait avant. Si vous avez le type créer un objet devrait être simple en utilisant quelque chose comme Activator.CreateInstance(). L'utilisation d'un arbre d'activités à la place d'un type présente certains avantages car vous pouvez créer les objets à la volée en utilisant ActivityXamlServices.Load() pour lire un fichier XAML.

La partie WCF de WorkflowServiceHost peut être complétée complètement dans le fichier de configuration si vous le souhaitez. Pas besoin de passer une baseAddress avec le constructeur.

Une alternative à WorkflowServiceHost utilise une application WorkflowApplication. Cela nécessite quand même d'ajouter un arbre d'activité dans le constructeur.

+0

Maurice - Je ne semble pas avoir de chance avec la route Activator.CreateInstance() non plus - Je reçois des exceptions d'exécution quand je l'essaie et la passe dans le WorkflowServiceHost (objet serviceObject, params Uri [] baseAddresses) comme ceci 'WorkflowServiceHost requiert que le serviceObject fourni soit une activité ou un WorkflowService. Nom du paramètre: serviceObject '. Je ne peux pas descendre la route ActivityXamlServices.Load(), car mon service de workflow est fourni en tant que binaire dll et non en xaml/xmalx. D'autres idées? Merci encore une fois – Lygpt

+0

Le type pointe vers une activité droite? Si tel est le cas, transformez-le en Activity avant de le passer dans le constructeur WorkflowServiceHost. Maintenant vous utilisez la mauvaise surcharge comme Activator.CreateInstance() le retourne comme type Object. – Maurice

+0

Cela a bien fonctionné grâce à Maurice - J'ai dû faire quelques manipulations mais (Activity) Activator.CreateInstance (Type.GetType ("Namespace.ClassName, Assembly")). Merci encore une fois – Lygpt

Questions connexes