Partager via


WorkflowHostingEndpoint Classe

Définition

Implémentation abstraite de ServiceEndpoint. Dérivez de cette classe pour exposer les contrats qui prennent en charge la création de flux de travail et la reprise de signet.

public ref class WorkflowHostingEndpoint abstract : System::ServiceModel::Description::ServiceEndpoint
public abstract class WorkflowHostingEndpoint : System.ServiceModel.Description.ServiceEndpoint
type WorkflowHostingEndpoint = class
    inherit ServiceEndpoint
Public MustInherit Class WorkflowHostingEndpoint
Inherits ServiceEndpoint
Héritage
WorkflowHostingEndpoint
Dérivé

Exemples

L'exemple suivant montre comment dériver une classe à partir de la classe WorkflowHostingEndpoint.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.ServiceModel;
using System.ServiceModel.Activities;
using System.ServiceModel.Channels;

namespace Microsoft.Samples.WF.CreationEndpoint
{

    public class CreationEndpoint : WorkflowHostingEndpoint
    {
        static Uri defaultBaseUri;

        public CreationEndpoint(Binding binding, EndpointAddress address)
            : base(typeof(IWorkflowCreation), binding, address)
        {
        }

        public CreationEndpoint():this (GetDefaultBinding(),
                                        new EndpointAddress(new Uri(DefaultBaseUri, new Uri(Guid.NewGuid().ToString(), UriKind.Relative))))
        {
        }

        static Uri DefaultBaseUri
        {
            get
            {
                if (defaultBaseUri == null)
                {
                    defaultBaseUri = new Uri(string.Format(CultureInfo.InvariantCulture, "net.pipe://localhost/workflowCreationEndpoint/{0}/{1}",
                        Process.GetCurrentProcess().Id,
                        AppDomain.CurrentDomain.Id));
                }
                return defaultBaseUri;
            }
        }

        //defaults to NetNamedPipeBinding
        public static Binding GetDefaultBinding()
        {
            return new NetNamedPipeBinding(NetNamedPipeSecurityMode.None) { TransactionFlow = true };
        }

        protected override Guid OnGetInstanceId(object[] inputs, OperationContext operationContext)
        {
            //Create was called by client
            if (operationContext.IncomingMessageHeaders.Action.EndsWith("Create"))
            {
                return Guid.Empty;
            }
            //CreateWithInstanceId was called by client
            else if (operationContext.IncomingMessageHeaders.Action.EndsWith("CreateWithInstanceId"))
            {
                return (Guid)inputs[1];
            }
            else
            {
                throw new InvalidOperationException("Invalid Action: " + operationContext.IncomingMessageHeaders.Action);
            }
        }

        protected override WorkflowCreationContext OnGetCreationContext(object[] inputs, OperationContext operationContext, Guid instanceId, WorkflowHostingResponseContext responseContext)
        {
            WorkflowCreationContext creationContext = new WorkflowCreationContext();
            if (operationContext.IncomingMessageHeaders.Action.EndsWith("Create"))
            {
                Dictionary<string, object> arguments = (Dictionary<string, object>)inputs[0];
                if (arguments != null && arguments.Count > 0)
                {
                    foreach (KeyValuePair<string, object> pair in arguments)
                    {
                        //arguments to pass to the workflow
                        creationContext.WorkflowArguments.Add(pair.Key, pair.Value);
                    }
                }
                //reply to client with instanceId
                responseContext.SendResponse(instanceId, null);
            }
            else if (operationContext.IncomingMessageHeaders.Action.EndsWith("CreateWithInstanceId"))
            {
                Dictionary<string, object> arguments = (Dictionary<string, object>)inputs[0];
                if (arguments != null && arguments.Count > 0)
                {
                    foreach (KeyValuePair<string, object> pair in arguments)
                    {
                        //arguments to pass to workflow
                        creationContext.WorkflowArguments.Add(pair.Key, pair.Value);
                    }
                }
            }
            else
            {
                throw new InvalidOperationException("Invalid Action: " + operationContext.IncomingMessageHeaders.Action);
            }
            return creationContext;
        }
    }

    //service contract exposed from the endpoint
    [ServiceContract(Name = "IWorkflowCreation")]
    public interface IWorkflowCreation
    {
        [OperationContract(Name = "Create")]
        Guid Create(IDictionary<string, object> inputs);

        [OperationContract(Name = "CreateWithInstanceId", IsOneWay=true)]
        void CreateWithInstanceId(IDictionary<string, object> inputs, Guid instanceId);
    }
}

Constructeurs

WorkflowHostingEndpoint(Type)

Crée une instance de la classe WorkflowHostingEndpoint à l'aide du type de contrat spécifié.

WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

Crée une instance de la classe WorkflowHostingEndpoint à l’aide du type de contrat, de la liaison et de l’adresse du point de terminaison spécifiés.

Propriétés

Address

Obtient ou définit l'adresse de point de terminaison pour le point de terminaison de service.

(Hérité de ServiceEndpoint)
Behaviors

Obtient les comportements du point de terminaison de service.

(Hérité de ServiceEndpoint)
Binding

Obtient ou définit la liaison pour le point de terminaison de service.

(Hérité de ServiceEndpoint)
Contract

Obtient le contrat pour le point de terminaison de service.

(Hérité de ServiceEndpoint)
CorrelationQueries

Obtient une collection d’instances CorrelationQuery.

EndpointBehaviors

Obtient le comportement des points de terminaison du service.

(Hérité de ServiceEndpoint)
IsSystemEndpoint

Obtient ou définit si le point de terminaison de service est généré par le système, par opposition à une définition par l'utilisateur.

(Hérité de ServiceEndpoint)
ListenUri

Obtient ou définit l'URI au niveau duquel le point de terminaison de service effectue son écoute.

(Hérité de ServiceEndpoint)
ListenUriMode

Obtient ou définit la façon dont le transport traite l'URI qui est fourni pour le service à écouter.

(Hérité de ServiceEndpoint)
Name

Obtient ou définit le nom du point de terminaison de service.

(Hérité de ServiceEndpoint)

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
OnGetCreationContext(Object[], OperationContext, Guid, WorkflowHostingResponseContext)

Substituez pour créer une instance de WorkflowCreationContext.

OnGetInstanceId(Object[], OperationContext)

Substituez pour retourner l'ID de l'instance de flux de travail créée.

OnResolveBookmark(Object[], OperationContext, WorkflowHostingResponseContext, Object)

Substituez pour retourner un signet à reprendre sur l'instance de flux de travail.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à