Partager via


Création d'activités de communication personnalisées

Windows Workflow Foundation implémente un jeu de classes de base qui permet à un fournisseur de classes de service d'exposer des communications comme des services personnalisés. Autrement dit, les méthodes et événements de classe de service peuvent être traduits directement dans un jeu développé d'activités spécifiques au domaine qui masquent tous les détails des jeux de messagerie et de corrélations. Ces détails peuvent même être masqués par l'auteur de l'activité. L'écriture de ces nouvelles activités est immédiate à partir des définitions d'interface, et l'auteur de l'activité peut directement implémenter les interfaces de la classe de service.

Exposer une classe de service comme une activité

La section suivante décrit la présentation d'une classe de service comme une palette développée des activités qui représentent des actions dans un domaine spécifique.

Les activités CallExternalMethodActivity et HandleExternalEventActivity peuvent être utilisées pour envoyer et recevoir des messages sur les interfaces des services de communication du workflow, identifiées par l'attribut ExternalDataExchangeAttribute.

Chaque méthode et événement de l'interface de la classe sont représentés dans le modèle de programmation à l'aide d'une activité personnalisée correspondant à cette méthode ou à cet événement.

Implémentation d'une activité de communication personnalisée

L'auteur de l'activité génère une nouvelle activité pour chaque méthode et une activité pour chaque événement dans l'interface de la classe de service. L'interface de communication utilisée dans cet exemple est tirée de Utilisation de services locaux dans les workflows.

    // Handle External Event Activity.
    [ToolboxItemAttribute(typeof(ActivityToolboxItem))]
    public partial class HelloWorkflow : HandleExternalEventActivity 
    {
        
        public HelloWorkflow() 
        {
            base.InterfaceType = typeof(ClassLibrary1.ICommunicationService);
            base.EventName = "HelloWorkflow";
        }
    }
    
    // Call External Method Activity.
    [ToolboxItemAttribute(typeof(ActivityToolboxItem))]
    public partial class HelloHost : CallExternalMethodActivity 
    {
        public static DependencyProperty messageProperty = DependencyProperty.Register("message", typeof(string), typeof(HelloHost));
        
        public HelloHost() 
        {
            base.InterfaceType = typeof(ClassLibrary1.ICommunicationService);
            base.MethodName = "HelloHost";
        }
        
        [ValidationOptionAttribute(ValidationOption.Required)]
        public string message 
        {
            get 
            {
                return ((string)(this.GetValue(HelloHost.messageProperty)));
            }
            set 
            {
                this.SetValue(HelloHost.messageProperty, value);
            }
        }
        
        protected override void OnMethodInvoking(System.EventArgs e) 
        {
            this.ParameterBindings["message"].Value = this.message;
        }
    }

Voir aussi

Concepts

Utilisation de la corrélation dans les workflows
Création d'activités personnalisées
Utilisation de services locaux dans les workflows
Communication avec les workflows et les applications

Autres ressources

Communications Samples
Custom Activities Samples

Footer image

Copyright ©2007 par Microsoft Corporation. Tous droits réservés.