WorkflowInvoker.Invoke Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
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
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
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
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.