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, Binding, EndpointAddress)

使用指定的协定类型、绑定和终结点地址创建类的新实例 WorkflowHostingEndpoint

WorkflowHostingEndpoint(Type)

使用指定的协定类型创建类的新实例 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)

适用于