WorkflowHostingEndpoint Klasse

Definition

Eine abstrakte Implementierung von ServiceEndpoint. Durch Ableiten von dieser Klasse werden Verträge verfügbar, die die Workflowerstellung und die Wiederaufnahme von Lesezeichen unterstützen.

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
Vererbung
WorkflowHostingEndpoint
Abgeleitet

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie eine Klasse von der WorkflowHostingEndpoint-Klasse abgeleitet wird.

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);
    }
}

Konstruktoren

WorkflowHostingEndpoint(Type)

Erstellt eine neue Instanz der WorkflowHostingEndpoint-Klasse mit dem angegebenen Vertragstyp.

WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

Erstellt eine neue Instanz der WorkflowHostingEndpoint-Klasse mit dem angegebenen Vertragstyp, der Bindung und der Endpunktadresse.

Eigenschaften

Address

Ruft die Endpunktadresse für den Dienstendpunkt ab oder legt sie fest.

(Geerbt von ServiceEndpoint)
Behaviors

Ruft die Verhalten für den Dienstendpunkt ab.

(Geerbt von ServiceEndpoint)
Binding

Ruft die Bindung für den Dienstendpunkt ab oder legt sie fest.

(Geerbt von ServiceEndpoint)
Contract

Ruft den Vertrag für den Dienstendpunkt ab.

(Geerbt von ServiceEndpoint)
CorrelationQueries

Ruft eine Auflistung von CorrelationQuery-Instanzen ab.

EndpointBehaviors

Ruft die Endpunktverhalten für den Dienst ab.

(Geerbt von ServiceEndpoint)
IsSystemEndpoint

Ruft ab oder legt fest, ob der Dienstendpunkt vom System generiert statt vom Benutzer definiert wird.

(Geerbt von ServiceEndpoint)
ListenUri

Ruft die URI ab, die der Dienstendpunkt abhört, oder legt sie fest.

(Geerbt von ServiceEndpoint)
ListenUriMode

Ruft einen Wert ab, der angibt, wie der Transport die URI verarbeitet, die der Dienst abhören soll, oder legt diesen Wert fest.

(Geerbt von ServiceEndpoint)
Name

Ruft den Namen des Dienstendpunkts ab oder legt ihn fest.

(Geerbt von ServiceEndpoint)

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnGetCreationContext(Object[], OperationContext, Guid, WorkflowHostingResponseContext)

Überschreiben, um eine neue WorkflowCreationContext-Instanz zu erstellen.

OnGetInstanceId(Object[], OperationContext)

Überschreiben, um die Instanz-ID für die erstellte Workflowinstanz zurückzugeben.

OnResolveBookmark(Object[], OperationContext, WorkflowHostingResponseContext, Object)

Überschreiben, um ein Lesezeichen zurückzugeben, das auf der Workflowinstanz fortgesetzt werden soll.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: