Udostępnij za pośrednictwem


WorkflowHostingEndpoint Klasa

Definicja

Abstrakcyjna implementacja elementu ServiceEndpoint. Utwórz z tej klasy, aby uwidocznić kontrakty obsługujące tworzenie przepływów pracy i wznowienie zakładek.

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
Dziedziczenie
WorkflowHostingEndpoint
Pochodne

Przykłady

W poniższym przykładzie pokazano, jak utworzyć klasę z WorkflowHostingEndpoint klasy .

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

Konstruktory

WorkflowHostingEndpoint(Type)

Tworzy nowe wystąpienie WorkflowHostingEndpoint klasy o określonym typie kontraktu.

WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

Tworzy nowe wystąpienie klasy z określonym typem kontraktu WorkflowHostingEndpoint , powiązaniem i adresem punktu końcowego.

Właściwości

Address

Pobiera lub ustawia adres punktu końcowego dla punktu końcowego usługi.

(Odziedziczone po ServiceEndpoint)
Behaviors

Pobiera zachowania punktu końcowego usługi.

(Odziedziczone po ServiceEndpoint)
Binding

Pobiera lub ustawia powiązanie punktu końcowego usługi.

(Odziedziczone po ServiceEndpoint)
Contract

Pobiera kontrakt dla punktu końcowego usługi.

(Odziedziczone po ServiceEndpoint)
CorrelationQueries

Pobiera kolekcję CorrelationQuery wystąpień .

EndpointBehaviors

Pobiera zachowania punktu końcowego dla usługi.

(Odziedziczone po ServiceEndpoint)
IsSystemEndpoint

Pobiera lub ustawia, czy punkt końcowy usługi jest generowany przez system, w przeciwieństwie do zdefiniowanego przez użytkownika.

(Odziedziczone po ServiceEndpoint)
ListenUri

Pobiera lub ustawia identyfikator URI, w którym punkt końcowy usługi nasłuchuje.

(Odziedziczone po ServiceEndpoint)
ListenUriMode

Pobiera lub ustawia sposób obsługi identyfikatora URI dostarczonego przez usługę do nasłuchiwania.

(Odziedziczone po ServiceEndpoint)
Name

Pobiera lub ustawia nazwę punktu końcowego usługi.

(Odziedziczone po ServiceEndpoint)

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnGetCreationContext(Object[], OperationContext, Guid, WorkflowHostingResponseContext)

Zastąpij, aby utworzyć nowe WorkflowCreationContext wystąpienie.

OnGetInstanceId(Object[], OperationContext)

Zastąpij, aby zwrócić identyfikator wystąpienia tworzonego wystąpienia przepływu pracy.

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

Zastąpij, aby zwrócić zakładkę do wznowienia w wystąpieniu przepływu pracy.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy