WorkflowHostingEndpoint Classe

Définition

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

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 de la WorkflowHostingEndpoint classe.

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

Nom Description
WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

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

WorkflowHostingEndpoint(Type)

Crée une instance de la WorkflowHostingEndpoint classe avec le type de contrat spécifié.

Propriétés

Nom Description
Address

Obtient ou définit l’adresse du 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 les comportements de point de terminaison pour le 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 au lieu d’être défini par l’utilisateur.

(Hérité de ServiceEndpoint)
ListenUri

Obtient ou définit l’URI auquel le point de terminaison de service écoute.

(Hérité de ServiceEndpoint)
ListenUriMode

Obtient ou définit la façon dont le transport gère l’URI fourni pour que le service écoute.

(Hérité de ServiceEndpoint)
Name

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

(Hérité de ServiceEndpoint)

Méthodes

Nom Description
Equals(Object)

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

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

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

Remplacez la création d’une WorkflowCreationContext instance.

OnGetInstanceId(Object[], OperationContext)

Remplacez le retour de l’ID d’instance de l’instance de flux de travail en cours de création.

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

Remplacez le retour d’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 à