WorkflowHostingEndpoint Klass

Definition

En abstrakt implementering av ServiceEndpoint. Härled från den här klassen för att exponera kontrakt som stöder skapande av arbetsflöden och återupptagande av bokmärken.

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
Arv
WorkflowHostingEndpoint
Härledda

Exempel

I följande exempel visas hur du härleder en klass från WorkflowHostingEndpoint klassen.

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

Konstruktorer

Name Description
WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

Skapar en ny instans av WorkflowHostingEndpoint klassen med den angivna kontraktstypen, bindningen och slutpunktsadressen.

WorkflowHostingEndpoint(Type)

Skapar en ny instans av WorkflowHostingEndpoint klassen med den angivna kontraktstypen.

Egenskaper

Name Description
Address

Hämtar eller anger slutpunktsadressen för tjänstslutpunkten.

(Ärvd från ServiceEndpoint)
Behaviors

Hämtar beteendet för tjänstslutpunkten.

(Ärvd från ServiceEndpoint)
Binding

Hämtar eller anger bindningen för tjänstslutpunkten.

(Ärvd från ServiceEndpoint)
Contract

Hämtar kontraktet för tjänstslutpunkten.

(Ärvd från ServiceEndpoint)
CorrelationQueries

Hämtar en samling CorrelationQuery instanser .

EndpointBehaviors

Hämtar slutpunktsbeteenden för tjänsten.

(Ärvd från ServiceEndpoint)
IsSystemEndpoint

Hämtar eller anger om tjänstslutpunkten genereras av systemet i stället för att vara användardefinierad.

(Ärvd från ServiceEndpoint)
ListenUri

Hämtar eller anger den URI som tjänstslutpunkten lyssnar på.

(Ärvd från ServiceEndpoint)
ListenUriMode

Hämtar eller anger hur transporten hanterar den URI som tillhandahålls för tjänsten att lyssna på.

(Ärvd från ServiceEndpoint)
Name

Hämtar eller anger namnet på tjänstslutpunkten.

(Ärvd från ServiceEndpoint)

Metoder

Name Description
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnGetCreationContext(Object[], OperationContext, Guid, WorkflowHostingResponseContext)

Åsidosätt för att skapa en ny WorkflowCreationContext instans.

OnGetInstanceId(Object[], OperationContext)

Åsidosätt för att returnera instans-ID:t för arbetsflödesinstansen som skapas.

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

Åsidosätt för att returnera ett bokmärke som ska återupptas på arbetsflödesinstansen.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Gäller för