Share via


WorkflowHostingEndpoint Clase

Definición

Implementación abstracta de ServiceEndpoint. Derive de esta clase para exponer contratos que admiten la creación de flujo de trabajo y la reanudación del marcador.

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
Herencia
WorkflowHostingEndpoint
Derivado

Ejemplos

El ejemplo siguiente muestra cómo derivar una clase de la clase 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);
    }
}

Constructores

WorkflowHostingEndpoint(Type)

Crea una nueva instancia de la clase WorkflowHostingEndpoint con el tipo de contrato especificado.

WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

Crea una nueva instancia de la clase WorkflowHostingEndpoint con el tipo de contrato, el enlace y la dirección de punto de conexión especificados.

Propiedades

Address

Obtiene o establece la dirección para el punto de conexión del servicio.

(Heredado de ServiceEndpoint)
Behaviors

Obtiene los comportamientos para el punto de conexión de servicio.

(Heredado de ServiceEndpoint)
Binding

Obtiene o establece el enlace para el punto de conexión del servicio.

(Heredado de ServiceEndpoint)
Contract

Obtiene los contratos para el punto de conexión de servicio.

(Heredado de ServiceEndpoint)
CorrelationQueries

Obtiene una colección de instancias de CorrelationQuery.

EndpointBehaviors

Obtiene los comportamientos para el extremo de servicio.

(Heredado de ServiceEndpoint)
IsSystemEndpoint

Obtiene o establece si el extremo de servicio está generado por el sistema en contraposición a estar definido por el usuario.

(Heredado de ServiceEndpoint)
ListenUri

Obtiene o establece el identificador URI en el que el punto de conexión de servicio realiza escuchas.

(Heredado de ServiceEndpoint)
ListenUriMode

Obtiene o establece cómo el transporte administra el identificador URI que se proporciona para que el servicio realice escuchas.

(Heredado de ServiceEndpoint)
Name

Obtiene o establece el nombre del punto de conexión de servicio.

(Heredado de ServiceEndpoint)

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnGetCreationContext(Object[], OperationContext, Guid, WorkflowHostingResponseContext)

Invalide este método para crear una instancia de WorkflowCreationContext.

OnGetInstanceId(Object[], OperationContext)

Invalide este método para devolver el identificador de instancia de la instancia de flujo de trabajo que se va a crear.

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

Invalide este método para devolver un marcador que se va a reanudar en la instancia de flujo de trabajo.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a