Поделиться через


WorkflowHostingEndpoint Класс

Определение

Абстрактная реализация ServiceEndpoint. Создайте производный класс от этого класса для предоставления контактов, поддерживающих создание рабочих процессов и возобновление закладок.

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
Наследование
WorkflowHostingEndpoint
Производный

Примеры

В следующем примере показано, как создать производный класс от класса 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);
    }
}

Конструкторы

WorkflowHostingEndpoint(Type)

Создает новый экземпляр класса WorkflowHostingEndpoint с указанным типом контракта.

WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

Создает новый экземпляр класса WorkflowHostingEndpoint с указанным типом контракта, привязкой и адресом конечной точки.

Свойства

Address

Получает или задает адрес конечной точки для конечной точки службы.

(Унаследовано от ServiceEndpoint)
Behaviors

Получает расширения функциональности для конечной точки службы.

(Унаследовано от ServiceEndpoint)
Binding

Получает или задает привязку для конечной точки службы.

(Унаследовано от ServiceEndpoint)
Contract

Получает контракт для конечной точки службы.

(Унаследовано от ServiceEndpoint)
CorrelationQueries

Возвращает коллекцию экземпляров CorrelationQuery.

EndpointBehaviors

Получает поведение конечной точки для службы.

(Унаследовано от ServiceEndpoint)
IsSystemEndpoint

Возвращает или задает значение, указывающее, формируется ли конечная точка службы системой, а не определяется пользователем.

(Унаследовано от ServiceEndpoint)
ListenUri

Получает или задает универсальный код ресурса (URI), при котором конечная точка службы ожидает передачи данных.

(Унаследовано от ServiceEndpoint)
ListenUriMode

Получает или задает способ обработки транспортом универсального кода ресурса, предоставляемого службы для ожидания передачи данных.

(Унаследовано от ServiceEndpoint)
Name

Получает или задает имя конечной точки службы.

(Унаследовано от ServiceEndpoint)

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
OnGetCreationContext(Object[], OperationContext, Guid, WorkflowHostingResponseContext)

Переопределите для создания нового экземпляра типа WorkflowCreationContext.

OnGetInstanceId(Object[], OperationContext)

Переопределите для возврата идентификатора экземпляра созданного рабочего процесса.

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

Переопределите для возврата закладки, с которой следует продолжить работу в экземпляре рабочего процесса.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к