WorkflowHostingEndpoint Classe

Definizione

Implementazione astratta di ServiceEndpoint. Derivare da questa classe per esporre i contratti che supportano la creazione del flusso di lavoro e la ripresa dei segnalibri.

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 WorkflowHostingEndpoint classe .

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

Nome Descrizione
WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

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

WorkflowHostingEndpoint(Type)

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

Proprietà

Nome Descrizione
Address

Ottiene o imposta l'indirizzo dell'endpoint per l'endpoint di servizio.

(Ereditato da ServiceEndpoint)
Behaviors

Ottiene i comportamenti per l'endpoint del servizio.

(Ereditato da ServiceEndpoint)
Binding

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

(Ereditato da ServiceEndpoint)
Contract

Ottiene il contratto per l'endpoint di servizio.

(Ereditato da ServiceEndpoint)
CorrelationQueries

Ottiene una raccolta di CorrelationQuery istanze di .

EndpointBehaviors

Ottiene i comportamenti dell'endpoint per il servizio.

(Ereditato da ServiceEndpoint)
IsSystemEndpoint

Ottiene o imposta un valore che indica se l'endpoint del servizio viene generato dal sistema anziché essere definito dall'utente.

(Ereditato da ServiceEndpoint)
ListenUri

Ottiene o imposta l'URI in corrispondenza del quale l'endpoint del servizio è in ascolto.

(Ereditato da ServiceEndpoint)
ListenUriMode

Ottiene o imposta il modo in cui il trasporto gestisce l'URI fornito per l'ascolto del servizio.

(Ereditato da ServiceEndpoint)
Name

Ottiene o imposta il nome dell'endpoint del servizio.

(Ereditato da ServiceEndpoint)

Metodi

Nome Descrizione
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 il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

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

Eseguire l'override per creare una nuova WorkflowCreationContext istanza.

OnGetInstanceId(Object[], OperationContext)

Eseguire l'override per restituire l'ID istanza per l'istanza del flusso di lavoro da creare.

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