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

获取或设置传输处理提供给服务的供其侦听的 URI 的方式。

(继承自 ServiceEndpoint)
Name

获取或设置服务终结点的名称。

(继承自 ServiceEndpoint)

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
OnGetCreationContext(Object[], OperationContext, Guid, WorkflowHostingResponseContext)

重写以创建一个新的 WorkflowCreationContext 实例。

OnGetInstanceId(Object[], OperationContext)

重写以返回要创建的工作流实例的实例 ID。

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

重写以返回要在工作流实例上恢复的书签。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于