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)

適用対象