WorkflowHostingEndpoint 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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 클래스에서 클래스를 파생하는 방법을 보여 줍니다.
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) |
적용 대상
.NET