Compartilhar via


WorkflowHostingEndpoint Classe

Definição

Uma implementação abstrata de ServiceEndpoint. Derive desta classe para expor os contratos que dão suporte à criação de fluxo de trabalho e à continuidade de indicador.

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
Herança
WorkflowHostingEndpoint
Derivado

Exemplos

O exemplo a seguir mostra como derivar uma classe da 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);
    }
}

Construtores

WorkflowHostingEndpoint(Type)

Cria uma nova instância da classe WorkflowHostingEndpoint com o tipo de contrato especificado.

WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

Cria uma nova instância da classe WorkflowHostingEndpoint com o tipo de contrato, a associação e o endereço do ponto de extremidade especificados.

Propriedades

Address

Obtém ou define o endereço do ponto de extremidade para o ponto de extremidade de serviço.

(Herdado de ServiceEndpoint)
Behaviors

Obtém os comportamentos de ponto de extremidade de serviço.

(Herdado de ServiceEndpoint)
Binding

Obtém ou define a associação para o ponto de extremidade de serviço.

(Herdado de ServiceEndpoint)
Contract

Obtém o contrato do ponto de extremidade de serviço.

(Herdado de ServiceEndpoint)
CorrelationQueries

Obtém uma coleção de instâncias de CorrelationQuery.

EndpointBehaviors

Obtém os comportamentos de ponto de extremidade para o serviço.

(Herdado de ServiceEndpoint)
IsSystemEndpoint

Obtém ou define se o ponto de extremidade de serviço é gerado pelo sistema em vez de ser definido pelo usuário.

(Herdado de ServiceEndpoint)
ListenUri

Obtém ou define o URI em que o ponto de extremidade de serviço escuta.

(Herdado de ServiceEndpoint)
ListenUriMode

Obtém ou define como o transporte manipula o URI, o qual é fornecido para que nele seja realizada a escuta pelo serviço.

(Herdado de ServiceEndpoint)
Name

Obtém ou define o nome do ponto de extremidade de serviço.

(Herdado de ServiceEndpoint)

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

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

Substitua para criar uma nova instância de WorkflowCreationContext.

OnGetInstanceId(Object[], OperationContext)

Substitua para retornar a ID de instância para a instância de fluxo de trabalho que está sendo criada.

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

Substitua para retornar um indicador a ser retomado na instância de fluxo de trabalho.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a