Share via


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)

적용 대상