Condividi tramite


WorkflowHostingEndpoint Classe

Definizione

Un'implementazione astratta di ServiceEndpoint. Derivare da questa classe per esporre contratti che supportano la creazione del flusso di lavoro e la riassunzione del segnalibro.

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
Ereditarietà
WorkflowHostingEndpoint
Derivato

Esempio

Nell'esempio seguente viene illustrato come derivare una classe dalla classe 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);
    }
}

Costruttori

WorkflowHostingEndpoint(Type)

Crea una nuova istanza della classe WorkflowHostingEndpoint con il tipo di contratto specificato.

WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

Crea una nuova istanza della classe WorkflowHostingEndpoint con il tipo del contratto, l'associazione e l'indirizzo endpoint specificati.

Proprietà

Address

Ottiene o imposta l'indirizzo dell'endpoint del servizio.

(Ereditato da ServiceEndpoint)
Behaviors

Ottiene i comportamenti per l'endpoint del servizio.

(Ereditato da ServiceEndpoint)
Binding

Ottiene o imposta l'associazione dell'endpoint del servizio.

(Ereditato da ServiceEndpoint)
Contract

Ottiene il contratto per l'endpoint del servizio.

(Ereditato da ServiceEndpoint)
CorrelationQueries

Ottiene una raccolta di istanze di CorrelationQuery.

EndpointBehaviors

Ottiene i comportamenti per l'endpoint del servizio.

(Ereditato da ServiceEndpoint)
IsSystemEndpoint

Ottiene o imposta se l'endpoint del servizio viene generato dal sistema oppure è definito dall'utente.

(Ereditato da ServiceEndpoint)
ListenUri

Ottiene o imposta l'URI su cui l'endpoint del servizio è in ascolto.

(Ereditato da ServiceEndpoint)
ListenUriMode

Ottiene o imposta il modo in cui il trasporto gestisce l'URI su cui è in ascolto il servizio.

(Ereditato da ServiceEndpoint)
Name

Ottiene o imposta il nome dell'endpoint del servizio.

(Ereditato da ServiceEndpoint)

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnGetCreationContext(Object[], OperationContext, Guid, WorkflowHostingResponseContext)

Eseguire l'override per creare una nuova istanza di WorkflowCreationContext.

OnGetInstanceId(Object[], OperationContext)

Eseguire l'override per restituire l'ID dell'istanza per il flusso di lavoro che viene creato.

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

Eseguire l'override per restituire un segnalibro da riprendere nell'istanza del flusso di lavoro.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a