Sdílet prostřednictvím


WorkflowHostingEndpoint Třída

Definice

Abstraktní implementace .ServiceEndpoint Odvozujte z této třídy k zveřejnění kontraktů, které podporují vytváření pracovních postupů a obnovení záložek.

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
Dědičnost
WorkflowHostingEndpoint
Odvozené

Příklady

Následující příklad ukazuje, jak odvodit třídu z WorkflowHostingEndpoint třídy.

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)

Vytvoří novou instanci WorkflowHostingEndpoint třídy se zadaným typem kontraktu.

WorkflowHostingEndpoint(Type, Binding, EndpointAddress)

Vytvoří novou instanci třídy se zadaným typem kontraktu, vazbou a adresou koncového WorkflowHostingEndpoint bodu.

Vlastnosti

Address

Získá nebo nastaví adresu koncového bodu pro koncový bod služby.

(Zděděno od ServiceEndpoint)
Behaviors

Získá chování koncového bodu služby.

(Zděděno od ServiceEndpoint)
Binding

Získá nebo nastaví vazbu pro koncový bod služby.

(Zděděno od ServiceEndpoint)
Contract

Získá kontrakt pro koncový bod služby.

(Zděděno od ServiceEndpoint)
CorrelationQueries

Získá kolekci CorrelationQuery instancí .

EndpointBehaviors

Získá chování koncového bodu pro službu.

(Zděděno od ServiceEndpoint)
IsSystemEndpoint

Získá nebo nastaví, zda koncový bod služby je generován systémem na rozdíl od uživatele-definované.

(Zděděno od ServiceEndpoint)
ListenUri

Získá nebo nastaví identifikátor URI, na kterém koncový bod služby naslouchá.

(Zděděno od ServiceEndpoint)
ListenUriMode

Získá nebo nastaví, jak přenos zpracovává identifikátor URI, který je k dispozici pro službu naslouchá na.

(Zděděno od ServiceEndpoint)
Name

Získá nebo nastaví název koncového bodu služby.

(Zděděno od ServiceEndpoint)

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnGetCreationContext(Object[], OperationContext, Guid, WorkflowHostingResponseContext)

Přepsání vytvořte novou WorkflowCreationContext instanci.

OnGetInstanceId(Object[], OperationContext)

Přepsání vrátí ID instance vytvářené instance pracovního postupu.

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

Přepsání vrátí záložku, která se má obnovit v instanci pracovního postupu.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro