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)

適用対象