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) |
覆寫以傳回所建立之工作流程執行個體的執行個體識別碼。 |
OnResolveBookmark(Object[], OperationContext, WorkflowHostingResponseContext, Object) |
覆寫以傳回要在工作流程執行個體上繼續的書籤。 |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |