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 класса.
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) |
Переопределите, чтобы вернуть идентификатор экземпляра для создаваемого экземпляра рабочего процесса. |
| OnResolveBookmark(Object[], OperationContext, WorkflowHostingResponseContext, Object) |
Переопределите, чтобы вернуть закладку для возобновления в экземпляре рабочего процесса. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |