WorkflowHostingEndpoint Classe

Definição

Uma implementação abstrata de ServiceEndpoint. Derive desta classe para expor contratos que suportam a criação de fluxos de trabalho e a retomada dos favoritos.

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 seguinte mostra como derivar uma classe a partir dessa 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

Name Description
WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

Cria uma nova instância da WorkflowHostingEndpoint classe com o tipo de contrato especificado, a ligação e o endereço do endpoint.

WorkflowHostingEndpoint(Type)

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

Propriedades

Name Description
Address

Obtém ou define o endereço do endpoint do endpoint do serviço.

(Herdado de ServiceEndpoint)
Behaviors

Obtém os comportamentos do endpoint do serviço.

(Herdado de ServiceEndpoint)
Binding

Obtém ou define a ligação para o endpoint do serviço.

(Herdado de ServiceEndpoint)
Contract

Obtém o contrato para o endpoint de serviço.

(Herdado de ServiceEndpoint)
CorrelationQueries

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

EndpointBehaviors

Obtém os comportamentos do endpoint do serviço.

(Herdado de ServiceEndpoint)
IsSystemEndpoint

Obtém ou define se o endpoint do serviço é gerado pelo sistema em vez de ser definido pelo utilizador.

(Herdado de ServiceEndpoint)
ListenUri

Obtém ou define o URI a partir do qual o endpoint de serviço ouve.

(Herdado de ServiceEndpoint)
ListenUriMode

Obtém ou define como o transporte gere o URI fornecido ao serviço para ouvir.

(Herdado de ServiceEndpoint)
Name

Obtém ou define o nome do endpoint do serviço.

(Herdado de ServiceEndpoint)

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

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

Override para criar uma nova WorkflowCreationContext instância.

OnGetInstanceId(Object[], OperationContext)

Override para devolver o ID da instância do fluxo de trabalho que está a ser criado.

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

Override para devolver um marcador a ser retomado na instância do workflow.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a