WorkflowInvoker.Invoke Methode

Definitie

Roept een werkstroom synchroon aan en retourneert een woordenlijst van de hoofdactiviteit OutArgument en InOutArgument waarden die zijn gekoppeld aan de argumentnaam die de uitvoer van de werkstroom vertegenwoordigt.

Overloads

Name Description
Invoke(Activity, IDictionary<String,Object>, TimeSpan)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie, IDictionary<TKey,TValue> invoerparameters en time-outinterval.

Invoke(Activity, TimeSpan)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie en time-outinterval.

Invoke(Activity, IDictionary<String,Object>)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie en IDictionary<TKey,TValue> invoerparameters.

Invoke(IDictionary<String,Object>, TimeSpan)

Roept de activiteit die aan de WorkflowInvoker(Activity) constructor is doorgegeven synchroon aan met de opgegeven IDictionary<TKey,TValue> invoerparameters en het opgegeven time-outinterval.

Invoke(IDictionary<String,Object>)

Roept de activiteit aan die synchroon aan de WorkflowInvoker(Activity) constructor is doorgegeven met de opgegeven IDictionary<TKey,TValue> invoerparameters.

Invoke(Activity)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie.

Invoke()

Roept een werkstroom synchroon aan met behulp van de werkstroomdefinitie die aan de WorkflowInvoker(Activity) constructor is doorgegeven.

Invoke(TimeSpan)

Roept een werkstroom synchroon aan met het opgegeven time-outinterval.

Invoke<TResult>(Activity<TResult>)

Roept een werkstroom synchroon aan met behulp van de werkstroomdefinitie die aan de WorkflowInvoker(Activity) constructor is doorgegeven.

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie en IDictionary<TKey,TValue> invoerparameters.

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie, IDictionary<TKey,TValue> invoerparameters en time-outinterval.

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie, IDictionary<TKey,TValue> invoerparameters, IDictionary<TKey,TValue> aanvullende uitvoerparameters en time-outinterval.

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als u een time-outinterval wilt configureren waarin de werkstroom moet worden voltooid, gebruikt u een van de Invoke overbelastingen die een TimeSpan.

Invoke(Activity, IDictionary<String,Object>, TimeSpan)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie, IDictionary<TKey,TValue> invoerparameters en time-outinterval.

public:
 static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout);
public static System.Collections.Generic.IDictionary<string,object> Invoke(System.Activities.Activity workflow, System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout);
static member Invoke : System.Activities.Activity * System.Collections.Generic.IDictionary<string, obj> * TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity, inputs As IDictionary(Of String, Object), timeout As TimeSpan) As IDictionary(Of String, Object)

Parameters

workflow
Activity

De werkstroomdefinitie van de werkstroom die moet worden aangeroepen.

inputs
IDictionary<String,Object>

De woordenlijst met invoerparameters voor de werkstroom, met de sleutel op argumentnaam.

timeout
TimeSpan

Het interval waarin de werkstroom moet worden voltooid voordat deze wordt afgebroken en er een TimeoutException wordt gegenereerd.

Retouren

Een woordenlijst van de hoofdactiviteit OutArgument en InOutArgument waarden die zijn gekoppeld aan de argumentnaam die de uitvoer van de werkstroom vertegenwoordigt.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die twee WriteLine activiteiten bevat en een Delay activiteit die is geconfigureerd met een Duration minuut. Deze werkstroom wordt tweemaal aangeroepen; de eerste keer met een time-outinterval van twee minuten en de tweede keer met een time-outinterval van 30 seconden. De eerste werkstroom is voltooid, maar de tweede wordt niet uitgevoerd en er wordt een TimeoutException gegenereerd.

Activity wf = new Sequence()
{
    Activities =
    {
        new WriteLine()
        {
            Text = "Before the 1 minute delay."
        },
        new Delay()
        {
            Duration = TimeSpan.FromMinutes(1)
        },
        new WriteLine()
        {
            Text = "After the 1 minute delay."
        }
    }
};

// This workflow completes successfully.
WorkflowInvoker.Invoke(wf, TimeSpan.FromMinutes(2));

// This workflow does not complete and a TimeoutException
// is thrown.
try
{
    WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
    Console.WriteLine(ex.Message);
}

Zie voor een voorbeeld van het gebruik Invoke met invoer- en uitvoerargumenten de overbelasting Invoke met dezelfde parameters als deze overbelasting zonder het time-outinterval.

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als de werkstroom niet binnen het opgegeven time-outinterval wordt voltooid, wordt de werkstroom afgebroken en wordt er een TimeoutException gegenereerd.

Note

De TimeoutException wordt alleen gegooid als de tijdslimiet is verstreken en de werkstroom tijdens de uitvoering inactief wordt. Een workflow die langer duurt dan het opgegeven time-outinterval, wordt succesvol voltooid als de workflow niet inactief raakt.

Van toepassing op

Invoke(Activity, TimeSpan)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie en time-outinterval.

public:
 static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow, TimeSpan timeout);
public static System.Collections.Generic.IDictionary<string,object> Invoke(System.Activities.Activity workflow, TimeSpan timeout);
static member Invoke : System.Activities.Activity * TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity, timeout As TimeSpan) As IDictionary(Of String, Object)

Parameters

workflow
Activity

De werkstroomdefinitie van de werkstroom die moet worden aangeroepen.

timeout
TimeSpan

Het interval waarin de werkstroom moet worden voltooid voordat deze wordt afgebroken en er een TimeoutException wordt gegenereerd.

Retouren

Een woordenlijst van de hoofdactiviteit OutArgument en InOutArgument waarden die zijn gekoppeld aan de argumentnaam die de uitvoer van de werkstroom vertegenwoordigt.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die twee WriteLine activiteiten bevat en een Delay activiteit die is geconfigureerd met een Duration minuut. Deze werkstroom wordt tweemaal aangeroepen; de eerste keer met een time-outinterval van twee minuten en de tweede keer met een time-outinterval van 30 seconden. De eerste werkstroom is voltooid, maar de tweede wordt niet uitgevoerd en er wordt een TimeoutException gegenereerd.

Activity wf = new Sequence()
{
    Activities =
    {
        new WriteLine()
        {
            Text = "Before the 1 minute delay."
        },
        new Delay()
        {
            Duration = TimeSpan.FromMinutes(1)
        },
        new WriteLine()
        {
            Text = "After the 1 minute delay."
        }
    }
};

// This workflow completes successfully.
WorkflowInvoker.Invoke(wf, TimeSpan.FromMinutes(2));

// This workflow does not complete and a TimeoutException
// is thrown.
try
{
    WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
    Console.WriteLine(ex.Message);
}

Zie voor een voorbeeld van het gebruik Invoke met uitvoerargumenten de overbelasting Invoke met dezelfde parameters als deze overbelasting zonder het time-outinterval.

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als de werkstroom niet binnen het opgegeven time-outinterval wordt voltooid, wordt de werkstroom afgebroken en wordt er een TimeoutException gegenereerd.

Note

De TimeoutException wordt alleen gegooid als de tijdslimiet is verstreken en de werkstroom tijdens de uitvoering inactief wordt. Een workflow die langer duurt dan het opgegeven time-outinterval, wordt succesvol voltooid als de workflow niet inactief raakt.

Van toepassing op

Invoke(Activity, IDictionary<String,Object>)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie en IDictionary<TKey,TValue> invoerparameters.

public:
 static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs);
public static System.Collections.Generic.IDictionary<string,object> Invoke(System.Activities.Activity workflow, System.Collections.Generic.IDictionary<string,object> inputs);
static member Invoke : System.Activities.Activity * System.Collections.Generic.IDictionary<string, obj> -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity, inputs As IDictionary(Of String, Object)) As IDictionary(Of String, Object)

Parameters

workflow
Activity

De werkstroomdefinitie van de werkstroom die moet worden aangeroepen.

inputs
IDictionary<String,Object>

De woordenlijst met invoerparameters voor de werkstroom, met de sleutel op argumentnaam.

Retouren

Een woordenlijst van de hoofdactiviteit OutArgument en InOutArgument waarden die zijn gekoppeld aan de argumentnaam die de uitvoer van de werkstroom vertegenwoordigt.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit één Divide activiteit met twee invoerargumenten en twee uitvoerargumenten. Wanneer de werkstroom wordt aangeroepen, wordt de arguments woordenlijst doorgegeven die de waarden voor elk invoerargument bevat, gesleuteld op argumentnaam. Wanneer de aanroep naar Invoke is voltooid, wordt elk uitvoerargument geretourneerd in het outputs woordenboek, ook onder de argumentnaam.

public sealed class Divide : CodeActivity
{
    [RequiredArgument]
    public InArgument<int> Dividend { get; set; }

    [RequiredArgument]
    public InArgument<int> Divisor { get; set; }

    public OutArgument<int> Remainder { get; set; }
    public OutArgument<int> Result { get; set; }

    protected override void Execute(CodeActivityContext context)
    {
        int quotient = Dividend.Get(context) / Divisor.Get(context);
        int remainder = Dividend.Get(context) % Divisor.Get(context);

        Result.Set(context, quotient);
        Remainder.Set(context, remainder);
    }
}
int dividend = 500;
int divisor = 36;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);

IDictionary<string, object> outputs =
    WorkflowInvoker.Invoke(new Divide(), arguments);

Console.WriteLine("{0} / {1} = {2} Remainder {3}",
    dividend, divisor, outputs["Result"], outputs["Remainder"]);

Als de werkstroom is afgeleid van ActivityWithResult, zoals CodeActivity<TResult> of Activity<TResult>, en er uitvoerargumenten zijn naast het goed gedefinieerde Result uitvoerargument, moet een niet-algemene overbelasting van Invoke, zoals deze, worden gebruikt om de extra argumenten op te halen. Hiervoor moet de doorgegeven Invoke werkstroomdefinitie van het type Activityzijn. In dit voorbeeld wordt de Divide activiteit afgeleid van CodeActivity<int>, maar wordt gedeclareerd als Activity zodanig dat deze overbelasting Invoke, die een woordenlijst met argumenten retourneert in plaats van één retourwaarde, wordt gebruikt.

public sealed class Divide : CodeActivity<int>
{
    public InArgument<int> Dividend { get; set; }
    public InArgument<int> Divisor { get; set; }
    public OutArgument<int> Remainder { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int quotient = Dividend.Get(context) / Divisor.Get(context);
        int remainder = Dividend.Get(context) % Divisor.Get(context);

        Remainder.Set(context, remainder);

        return quotient;
    }
}
int dividend = 500;
int divisor = 36;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);

Activity wf = new Divide();

IDictionary<string, object> outputs =
    WorkflowInvoker.Invoke(wf, arguments);

Console.WriteLine("{0} / {1} = {2} Remainder {3}",
    dividend, divisor, outputs["Result"], outputs["Remainder"]);

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als u een time-outinterval wilt configureren waarin de werkstroom moet worden voltooid, gebruikt u een van de Invoke overbelastingen die een TimeSpan.

Van toepassing op

Invoke(IDictionary<String,Object>, TimeSpan)

Roept de activiteit die aan de WorkflowInvoker(Activity) constructor is doorgegeven synchroon aan met de opgegeven IDictionary<TKey,TValue> invoerparameters en het opgegeven time-outinterval.

public:
 System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout);
public System.Collections.Generic.IDictionary<string,object> Invoke(System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout);
member this.Invoke : System.Collections.Generic.IDictionary<string, obj> * TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke (inputs As IDictionary(Of String, Object), timeout As TimeSpan) As IDictionary(Of String, Object)

Parameters

inputs
IDictionary<String,Object>

De woordenlijst met invoerparameters voor de werkstroom, met de sleutel op argumentnaam.

timeout
TimeSpan

Het interval waarin de werkstroom moet worden voltooid voordat deze wordt afgebroken en er een TimeoutException wordt gegenereerd.

Retouren

Een woordenlijst van de hoofdactiviteit OutArgument en InOutArgument waarden die zijn gekoppeld aan de argumentnaam die de uitvoer van de werkstroom vertegenwoordigt.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die twee WriteLine activiteiten bevat en een Delay activiteit die is geconfigureerd met een Duration minuut. Deze werkstroom wordt tweemaal aangeroepen; de eerste keer met een time-outinterval van twee minuten en de tweede keer met een time-outinterval van 30 seconden. De eerste werkstroom is voltooid, maar de tweede werkstroom wordt niet gegenereerd en er wordt een TimeoutException gegenereerd en het volgende bericht wordt weergegeven.

The operation did not complete within the allotted timeout of 00:00:30.
The time allotted to this operation may have been a portion of a longer timeout.
Activity wf = new Sequence()
{
    Activities =
    {
        new WriteLine()
        {
            Text = "Before the 1 minute delay."
        },
        new Delay()
        {
            Duration = TimeSpan.FromMinutes(1)
        },
        new WriteLine()
        {
            Text = "After the 1 minute delay."
        }
    }
};

WorkflowInvoker invoker = new WorkflowInvoker(wf);

// This workflow completes successfully.
invoker.Invoke(TimeSpan.FromMinutes(2));

// This workflow does not complete and a TimeoutException
// is thrown.
try
{
    invoker.Invoke(TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
    Console.WriteLine(ex.Message);
}

Zie voor een voorbeeld van het gebruik Invoke met invoer- en uitvoerargumenten de overbelasting Invoke met dezelfde parameters als deze overbelasting zonder het time-outinterval.

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als de werkstroom niet binnen het opgegeven time-outinterval wordt voltooid, wordt de werkstroom afgebroken en wordt er een TimeoutException gegenereerd.

Note

De TimeoutException wordt alleen gegooid als de tijdslimiet is verstreken en de werkstroom tijdens de uitvoering inactief wordt. Een workflow die langer duurt dan het opgegeven time-outinterval, wordt succesvol voltooid als de workflow niet inactief raakt.

Van toepassing op

Invoke(IDictionary<String,Object>)

Roept de activiteit aan die synchroon aan de WorkflowInvoker(Activity) constructor is doorgegeven met de opgegeven IDictionary<TKey,TValue> invoerparameters.

public:
 System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs);
public System.Collections.Generic.IDictionary<string,object> Invoke(System.Collections.Generic.IDictionary<string,object> inputs);
member this.Invoke : System.Collections.Generic.IDictionary<string, obj> -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke (inputs As IDictionary(Of String, Object)) As IDictionary(Of String, Object)

Parameters

inputs
IDictionary<String,Object>

De woordenlijst met invoerparameters voor de werkstroom, met de sleutel op argumentnaam.

Retouren

Een woordenlijst van de hoofdactiviteit OutArgument en InOutArgument waarden die zijn gekoppeld aan de argumentnaam die de uitvoer van de werkstroom vertegenwoordigt.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit één Divide activiteit met twee invoerargumenten en twee uitvoerargumenten. Wanneer de werkstroom wordt aangeroepen, wordt de arguments woordenlijst doorgegeven die de waarden voor elk invoerargument bevat, gesleuteld op argumentnaam. Wanneer de aanroep naar Invoke is voltooid, wordt elk uitvoerargument geretourneerd in het outputs woordenboek, ook onder de argumentnaam.

public sealed class Divide : CodeActivity
{
    [RequiredArgument]
    public InArgument<int> Dividend { get; set; }

    [RequiredArgument]
    public InArgument<int> Divisor { get; set; }

    public OutArgument<int> Remainder { get; set; }
    public OutArgument<int> Result { get; set; }

    protected override void Execute(CodeActivityContext context)
    {
        int quotient = Dividend.Get(context) / Divisor.Get(context);
        int remainder = Dividend.Get(context) % Divisor.Get(context);

        Result.Set(context, quotient);
        Remainder.Set(context, remainder);
    }
}
int dividend = 500;
int divisor = 36;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);

WorkflowInvoker invoker = new WorkflowInvoker(new Divide());

IDictionary<string, object> outputs = invoker.Invoke(arguments);

Console.WriteLine("{0} / {1} = {2} Remainder {3}",
    dividend, divisor, outputs["Result"], outputs["Remainder"]);

Als de werkstroom is afgeleid van ActivityWithResult, zoals CodeActivity<TResult> of Activity<TResult>, en er uitvoerargumenten zijn naast het goed gedefinieerde Result uitvoerargument, moet een niet-algemene overbelasting van Invoke, zoals deze, worden gebruikt om de extra argumenten op te halen. Hiervoor moet de werkstroomdefinitie die is doorgegeven aan de WorkflowInvoker constructor van het type Activityzijn. In dit voorbeeld wordt de Divide activiteit afgeleid van CodeActivity<int>, maar wordt gedeclareerd als Activity zodanig dat deze overbelasting Invoke, die een woordenlijst met argumenten retourneert in plaats van één retourwaarde, wordt gebruikt.

public sealed class Divide : CodeActivity<int>
{
    public InArgument<int> Dividend { get; set; }
    public InArgument<int> Divisor { get; set; }
    public OutArgument<int> Remainder { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int quotient = Dividend.Get(context) / Divisor.Get(context);
        int remainder = Dividend.Get(context) % Divisor.Get(context);

        Remainder.Set(context, remainder);

        return quotient;
    }
}
int dividend = 500;
int divisor = 36;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);

Activity wf = new Divide();

WorkflowInvoker invoker = new WorkflowInvoker(wf);

IDictionary<string, object> outputs = invoker.Invoke(arguments);

Console.WriteLine("{0} / {1} = {2} Remainder {3}",
    dividend, divisor, outputs["Result"], outputs["Remainder"]);

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als u een time-outinterval wilt configureren waarin de werkstroom moet worden voltooid, gebruikt u een van de Invoke overbelastingen die een TimeSpan.

Van toepassing op

Invoke(Activity)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie.

public:
 static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow);
public static System.Collections.Generic.IDictionary<string,object> Invoke(System.Activities.Activity workflow);
static member Invoke : System.Activities.Activity -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity) As IDictionary(Of String, Object)

Parameters

workflow
Activity

De werkstroomdefinitie van de werkstroom die moet worden aangeroepen.

Retouren

Een woordenlijst van de hoofdactiviteit OutArgument en InOutArgument waarden die zijn gekoppeld aan de argumentnaam die de uitvoer van de werkstroom vertegenwoordigt.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit één DiceRoll activiteit. De DiceRoll activiteit heeft twee uitvoerargumenten die de resultaten van de dobbelsteendraaibewerking vertegenwoordigen. Wanneer de aanroep die moet Invoke worden geretourneerd, wordt elk uitvoerargument geretourneerd in de uitvoerwoordenlijst, gesleuteld op argumentnaam.

public sealed class DiceRoll : CodeActivity
{
    public OutArgument<int> D1 { get; set; }
    public OutArgument<int> D2 { get; set; }

    static Random r = new Random();

    protected override void Execute(CodeActivityContext context)
    {
        D1.Set(context, r.Next(1, 7));
        D2.Set(context, r.Next(1, 7));
    }
}
IDictionary<string, object> outputs =
    WorkflowInvoker.Invoke(new DiceRoll());

Console.WriteLine("The two dice are {0} and {1}.",
    outputs["D1"], outputs["D2"]);

Als de hoofdactiviteit van de werkstroom geen uitvoerargumenten heeft of ze niet nodig zijn voor de host, kunnen ze worden genegeerd. In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit één WriteLine activiteit die geen uitvoerargumenten heeft.

Activity wf = new WriteLine
{
    Text = "Hello World."
};

WorkflowInvoker.Invoke(wf);

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als u een time-outinterval wilt configureren waarin de werkstroom moet worden voltooid, gebruikt u een van de Invoke overbelastingen die een TimeSpan.

Van toepassing op

Invoke()

Roept een werkstroom synchroon aan met behulp van de werkstroomdefinitie die aan de WorkflowInvoker(Activity) constructor is doorgegeven.

public:
 System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke();
public System.Collections.Generic.IDictionary<string,object> Invoke();
member this.Invoke : unit -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke () As IDictionary(Of String, Object)

Retouren

Een woordenlijst van de hoofdactiviteit OutArgument en InOutArgument waarden die zijn gekoppeld aan de argumentnaam die de uitvoer van de werkstroom vertegenwoordigt.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit één DiceRoll activiteit. De DiceRoll activiteit heeft twee uitvoerargumenten die de resultaten van de dobbelsteendraaibewerking vertegenwoordigen. Wanneer de aanroep die moet Invoke worden geretourneerd, wordt elk uitvoerargument geretourneerd in de uitvoerwoordenlijst, gesleuteld op argumentnaam. De werkstroom wordt tweemaal aangeroepen met behulp van de werkstroomdefinitie die is doorgegeven aan de WorkflowInvoker constructor.

public sealed class DiceRoll : CodeActivity
{
    public OutArgument<int> D1 { get; set; }
    public OutArgument<int> D2 { get; set; }

    static Random r = new Random();

    protected override void Execute(CodeActivityContext context)
    {
        D1.Set(context, r.Next(1, 7));
        D2.Set(context, r.Next(1, 7));
    }
}
WorkflowInvoker invoker = new WorkflowInvoker(new DiceRoll());

IDictionary<string, object> outputs =
    invoker.Invoke();

Console.WriteLine("The two dice are {0} and {1}.",
    outputs["D1"], outputs["D2"]);

outputs = invoker.Invoke();

Console.WriteLine("The next two dice are {0} and {1}.",
    outputs["D1"], outputs["D2"]);

Als de hoofdactiviteit van de werkstroom geen uitvoerargumenten heeft of ze niet nodig zijn voor de host, kunnen ze worden genegeerd. In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit één WriteLine activiteit die geen uitvoerargumenten heeft.

Activity wf = new WriteLine
{
    Text = "Hello World."
};

WorkflowInvoker invoker = new WorkflowInvoker(wf);

invoker.Invoke();

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als u een time-outinterval wilt configureren waarin de werkstroom moet worden voltooid, gebruikt u een van de Invoke overbelastingen die een TimeSpan.

Van toepassing op

Invoke(TimeSpan)

Roept een werkstroom synchroon aan met het opgegeven time-outinterval.

public:
 System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(TimeSpan timeout);
public System.Collections.Generic.IDictionary<string,object> Invoke(TimeSpan timeout);
member this.Invoke : TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke (timeout As TimeSpan) As IDictionary(Of String, Object)

Parameters

timeout
TimeSpan

Het interval waarin de werkstroom moet worden voltooid voordat deze wordt afgebroken en er een TimeoutException wordt gegenereerd.

Retouren

Een woordenlijst van de hoofdactiviteit OutArgument en InOutArgument waarden die zijn gekoppeld aan de argumentnaam die de uitvoer van de werkstroom vertegenwoordigt.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die twee WriteLine activiteiten bevat en een Delay activiteit die is geconfigureerd met een Duration minuut. Deze werkstroom wordt tweemaal aangeroepen; de eerste keer met een time-outinterval van twee minuten en de tweede keer met een time-outinterval van 30 seconden. De eerste werkstroom is voltooid, maar de tweede werkstroom wordt niet gegenereerd en er wordt een TimeoutException gegenereerd en het volgende bericht wordt weergegeven.

The operation did not complete within the allotted timeout of 00:00:30.
The time allotted to this operation may have been a portion of a longer timeout.
Activity wf = new Sequence()
{
    Activities =
    {
        new WriteLine()
        {
            Text = "Before the 1 minute delay."
        },
        new Delay()
        {
            Duration = TimeSpan.FromMinutes(1)
        },
        new WriteLine()
        {
            Text = "After the 1 minute delay."
        }
    }
};

WorkflowInvoker invoker = new WorkflowInvoker(wf);

// This workflow completes successfully.
invoker.Invoke(TimeSpan.FromMinutes(2));

// This workflow does not complete and a TimeoutException
// is thrown.
try
{
    invoker.Invoke(TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
    Console.WriteLine(ex.Message);
}

Zie voor een voorbeeld van het gebruik Invoke met uitvoerargumenten de overbelasting Invoke met dezelfde parameters als deze overbelasting zonder het time-outinterval.

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als de werkstroom niet binnen het opgegeven time-outinterval wordt voltooid, wordt de werkstroom afgebroken en wordt er een TimeoutException gegenereerd.

Note

De TimeoutException wordt alleen gegooid als de tijdslimiet is verstreken en de werkstroom tijdens de uitvoering inactief wordt. Een workflow die langer duurt dan het opgegeven time-outinterval, wordt succesvol voltooid als de workflow niet inactief raakt.

Van toepassing op

Invoke<TResult>(Activity<TResult>)

Roept een werkstroom synchroon aan met behulp van de werkstroomdefinitie die aan de WorkflowInvoker(Activity) constructor is doorgegeven.

public:
generic <typename TResult>
 static TResult Invoke(System::Activities::Activity<TResult> ^ workflow);
public static TResult Invoke<TResult>(System.Activities.Activity<TResult> workflow);
static member Invoke : System.Activities.Activity<'Result> -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult)) As TResult

Type parameters

TResult

Het type werkstroom.

Parameters

workflow
Activity<TResult>

De werkstroomdefinitie van de werkstroom die moet worden aangeroepen. De werkstroomdefinitie moet worden afgeleid van ActivityWithResult.

Retouren

TResult

Een waarde van het type TResult met het resultaat van de uitvoering van de activiteit.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit één Add activiteit met twee invoerargumenten en omdat deze is afgeleid van CodeActivity<int> een goed gedefinieerd uitvoerargument Result . Wanneer de werkstroom wordt aangeroepen, wordt de arguments woordenlijst doorgegeven die de waarden voor elk invoerargument bevat, gesleuteld op argumentnaam. Wanneer de aanroep die moet Invoke worden geretourneerd, wordt de waarde van het Result uitvoerargument geretourneerd.

public sealed class Add : CodeActivity<int>
{
    public InArgument<int> X { get; set; }
    public InArgument<int> Y { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int x = X.Get(context);
        int y = Y.Get(context);

        return x + y;
    }
}
int x = 1;
int y = 2;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);

Console.WriteLine("Invoking Add.");

int result = WorkflowInvoker.Invoke(new Add(), arguments);

Console.WriteLine("{0} + {1} = {2}", x, y, result);

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als u een time-outinterval wilt configureren waarin de werkstroom moet worden voltooid, gebruikt u een van de Invoke overbelastingen die een TimeSpan.

Van toepassing op

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie en IDictionary<TKey,TValue> invoerparameters.

public:
generic <typename TResult>
 static TResult Invoke(System::Activities::Activity<TResult> ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs);
public static TResult Invoke<TResult>(System.Activities.Activity<TResult> workflow, System.Collections.Generic.IDictionary<string,object> inputs);
static member Invoke : System.Activities.Activity<'Result> * System.Collections.Generic.IDictionary<string, obj> -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult), inputs As IDictionary(Of String, Object)) As TResult

Type parameters

TResult

Het type werkstroom.

Parameters

workflow
Activity<TResult>

De werkstroomdefinitie van de werkstroom die moet worden aangeroepen.

inputs
IDictionary<String,Object>

De woordenlijst met invoerparameters voor de werkstroom, met de sleutel op argumentnaam.

Retouren

TResult

Een waarde van het type TResult met het resultaat van de uitvoering van de activiteit.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit één Add activiteit met twee invoerargumenten en omdat deze is afgeleid van CodeActivity<int> een goed gedefinieerd uitvoerargument Result . Wanneer de werkstroom wordt aangeroepen, wordt de arguments woordenlijst doorgegeven die de waarden voor elk invoerargument bevat, gesleuteld op argumentnaam. Wanneer de aanroep die moet Invoke worden geretourneerd, wordt de waarde van het Result uitvoerargument geretourneerd.

public sealed class Add : CodeActivity<int>
{
    public InArgument<int> X { get; set; }
    public InArgument<int> Y { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int x = X.Get(context);
        int y = Y.Get(context);

        return x + y;
    }
}
int x = 1;
int y = 2;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);

Console.WriteLine("Invoking Add.");

int result = WorkflowInvoker.Invoke(new Add(), arguments);

Console.WriteLine("{0} + {1} = {2}", x, y, result);

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als u een time-outinterval wilt configureren waarin de werkstroom moet worden voltooid, gebruikt u een van de Invoke overbelastingen die een TimeSpan.

Note

De TimeoutException wordt alleen gegooid als de tijdslimiet is verstreken en de werkstroom tijdens de uitvoering inactief wordt. Een werkstroom die langer duurt dan het opgegeven time-outinterval, wordt voltooid als de werkstroom niet inactief wordt.

Van toepassing op

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie, IDictionary<TKey,TValue> invoerparameters en time-outinterval.

public:
generic <typename TResult>
 static TResult Invoke(System::Activities::Activity<TResult> ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout);
public static TResult Invoke<TResult>(System.Activities.Activity<TResult> workflow, System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout);
static member Invoke : System.Activities.Activity<'Result> * System.Collections.Generic.IDictionary<string, obj> * TimeSpan -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult), inputs As IDictionary(Of String, Object), timeout As TimeSpan) As TResult

Type parameters

TResult

Het type werkstroom.

Parameters

workflow
Activity<TResult>

De werkstroomdefinitie van de werkstroom die moet worden aangeroepen.

inputs
IDictionary<String,Object>

De woordenlijst met invoerparameters voor de werkstroom, met de sleutel op argumentnaam.

timeout
TimeSpan

Het interval waarin de werkstroom moet worden voltooid voordat deze wordt afgebroken en er een TimeoutException wordt gegenereerd.

Retouren

TResult

Een waarde van het type TResult met het resultaat van de uitvoering van de activiteit.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit één Add activiteit met twee invoerargumenten en omdat deze is afgeleid van CodeActivity<int> een goed gedefinieerd uitvoerargument Result . Wanneer de werkstroom wordt aangeroepen, wordt de arguments woordenlijst doorgegeven die de waarden voor elk invoerargument bevat, gesleuteld op argumentnaam. Wanneer de aanroep die moet Invoke worden geretourneerd, wordt de waarde van het Result uitvoerargument geretourneerd.

public sealed class Add : CodeActivity<int>
{
    public InArgument<int> X { get; set; }
    public InArgument<int> Y { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int x = X.Get(context);
        int y = Y.Get(context);

        return x + y;
    }
}
int x = 1;
int y = 2;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);

Console.WriteLine("Invoking Add.");

int result = WorkflowInvoker.Invoke(new Add(), arguments);

Console.WriteLine("{0} + {1} = {2}", x, y, result);

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als de werkstroom niet binnen het opgegeven time-outinterval wordt voltooid, wordt de werkstroom afgebroken en wordt er een TimeoutException gegenereerd.

Note

De TimeoutException wordt alleen gegooid als de tijdslimiet is verstreken en de werkstroom tijdens de uitvoering inactief wordt. Een werkstroom die langer duurt dan het opgegeven time-outinterval, wordt voltooid als de werkstroom niet inactief wordt.

Van toepassing op

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan)

Roept een werkstroom synchroon aan met behulp van de opgegeven werkstroomdefinitie, IDictionary<TKey,TValue> invoerparameters, IDictionary<TKey,TValue> aanvullende uitvoerparameters en time-outinterval.

public:
generic <typename TResult>
 static TResult Invoke(System::Activities::Activity<TResult> ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, [Runtime::InteropServices::Out] System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ % additionalOutputs, TimeSpan timeout);
public static TResult Invoke<TResult>(System.Activities.Activity<TResult> workflow, System.Collections.Generic.IDictionary<string,object> inputs, out System.Collections.Generic.IDictionary<string,object> additionalOutputs, TimeSpan timeout);
static member Invoke : System.Activities.Activity<'Result> * System.Collections.Generic.IDictionary<string, obj> * IDictionary * TimeSpan -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult), inputs As IDictionary(Of String, Object), ByRef additionalOutputs As IDictionary(Of String, Object), timeout As TimeSpan) As TResult

Type parameters

TResult

Het type werkstroom.

Parameters

workflow
Activity<TResult>

De werkstroomdefinitie van de werkstroom die moet worden aangeroepen.

inputs
IDictionary<String,Object>

De woordenlijst met invoerparameters voor de werkstroom, met de sleutel op argumentnaam.

additionalOutputs
IDictionary<String,Object>

De woordenlijst met aanvullende uitvoerparameters van de werkstroom, die is gesleuteld op argumentnaam.

timeout
TimeSpan

Het interval waarin de werkstroom moet worden voltooid voordat deze wordt afgebroken en er een TimeoutException wordt gegenereerd.

Retouren

TResult

Een waarde van het type TResult met het resultaat van de uitvoering van de activiteit.

Voorbeelden

In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit één Add activiteit met twee invoerargumenten en omdat deze is afgeleid van CodeActivity<int> een goed gedefinieerd uitvoerargument Result . Wanneer de werkstroom wordt aangeroepen, wordt de arguments woordenlijst doorgegeven die de waarden voor elk invoerargument bevat, gesleuteld op argumentnaam. Wanneer de aanroep die moet Invoke worden geretourneerd, wordt de waarde van het Result uitvoerargument geretourneerd.

public sealed class Add : CodeActivity<int>
{
    public InArgument<int> X { get; set; }
    public InArgument<int> Y { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int x = X.Get(context);
        int y = Y.Get(context);

        return x + y;
    }
}
int x = 1;
int y = 2;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);

Console.WriteLine("Invoking Add.");

int result = WorkflowInvoker.Invoke(new Add(), arguments);

Console.WriteLine("{0} + {1} = {2}", x, y, result);

Opmerkingen

Deze methode blokkeert totdat de werkstroom is voltooid, inclusief niet-actieve tijd. Alle uitvoering van de werkstroom wordt gegarandeerd uitgevoerd op de aanroepende thread. Als de werkstroom niet binnen het opgegeven time-outinterval wordt voltooid, wordt de werkstroom afgebroken en wordt er een TimeoutException gegenereerd.

Note

De TimeoutException wordt alleen gegooid als de tijdslimiet is verstreken en de werkstroom tijdens de uitvoering inactief wordt. Een werkstroom die langer duurt dan het opgegeven time-outinterval, wordt voltooid als de werkstroom niet inactief wordt.

Van toepassing op