WorkflowHostingEndpoint Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
An abstract implementation of ServiceEndpoint. Derive from this class to expose contracts that support workflow creation and bookmark resumption.
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
- Inheritance
- Derived
Examples
The following example shows how to derive a class from the WorkflowHostingEndpoint class.
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);
}
}
Constructors
WorkflowHostingEndpoint(Type, Binding, EndpointAddress) |
Creates a new instance of the WorkflowHostingEndpoint class with the specified contract type, binding, and endpoint address. |
WorkflowHostingEndpoint(Type) |
Creates a new instance of the WorkflowHostingEndpoint class with the specified contract type. |
Properties
Address |
Gets or sets the endpoint address for the service endpoint. (Inherited from ServiceEndpoint) |
Behaviors |
Gets the behaviors for the service endpoint. (Inherited from ServiceEndpoint) |
Binding |
Gets or sets the binding for the service endpoint. (Inherited from ServiceEndpoint) |
Contract |
Gets the contract for the service endpoint. (Inherited from ServiceEndpoint) |
CorrelationQueries |
Gets a collection of CorrelationQuery instances . |
EndpointBehaviors |
Gets the endpoint behaviors for the service. (Inherited from ServiceEndpoint) |
IsSystemEndpoint |
Gets or sets whether the service endpoint is generated by the system as opposed to being user-defined. (Inherited from ServiceEndpoint) |
ListenUri |
Gets or sets the URI at which the service endpoint listens. (Inherited from ServiceEndpoint) |
ListenUriMode |
Gets or sets how the transport handles the URI that is provided for the service to listen on. (Inherited from ServiceEndpoint) |
Name |
Gets or sets the name of the service endpoint. (Inherited from ServiceEndpoint) |
Methods
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
OnGetCreationContext(Object[], OperationContext, Guid, WorkflowHostingResponseContext) |
Override to create a new WorkflowCreationContext instance. |
OnGetInstanceId(Object[], OperationContext) |
Override to return the instance ID for the workflow instance being created. |
OnResolveBookmark(Object[], OperationContext, WorkflowHostingResponseContext, Object) |
Override to return a bookmark to be resumed on the workflow instance. |
ToString() |
Returns a string that represents the current object. (Inherited from Object) |