WorkflowInvoker.Invoke Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Workflow synchron auf und gibt ein Wörterbuch der Stammaktivität OutArgument und InOutArgument Werte zurück, die nach Argumentname schlüsselt, die die Ausgaben des Workflows darstellen.
Überlädt
| Name | Beschreibung |
|---|---|
| Invoke(Activity, IDictionary<String,Object>, TimeSpan) |
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition, IDictionary<TKey,TValue> der Eingabeparameter und des Timeoutintervalls auf. |
| Invoke(Activity, TimeSpan) |
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition und des Timeoutintervalls auf. |
| Invoke(Activity, IDictionary<String,Object>) |
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition und IDictionary<TKey,TValue> der Eingabeparameter auf. |
| Invoke(IDictionary<String,Object>, TimeSpan) |
Ruft die an den WorkflowInvoker(Activity) Konstruktor übergebene Aktivität synchron mit den angegebenen IDictionary<TKey,TValue> Eingabeparametern und dem angegebenen Timeoutintervall auf. |
| Invoke(IDictionary<String,Object>) |
Ruft die an den WorkflowInvoker(Activity) Konstruktor übergebene Aktivität synchron mit den angegebenen IDictionary<TKey,TValue> Eingabeparametern auf. |
| Invoke(Activity) |
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition auf. |
| Invoke() |
Ruft einen Workflow synchron mithilfe der Workflowdefinition auf, die an den WorkflowInvoker(Activity) Konstruktor übergeben wird. |
| Invoke(TimeSpan) |
Ruft einen Workflow synchron mit dem angegebenen Timeoutintervall auf. |
| Invoke<TResult>(Activity<TResult>) |
Ruft einen Workflow synchron mithilfe der Workflowdefinition auf, die an den WorkflowInvoker(Activity) Konstruktor übergeben wird. |
| Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>) |
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition und IDictionary<TKey,TValue> der Eingabeparameter auf. |
| Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan) |
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition, IDictionary<TKey,TValue> der Eingabeparameter und des Timeoutintervalls auf. |
| Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan) |
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition, IDictionary<TKey,TValue> von Eingabeparametern, IDictionary<TKey,TValue> zusätzlichen Ausgabeparametern und Timeoutintervallen auf. |
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Um ein Timeoutintervall zu konfigurieren, in dem der Workflow abgeschlossen werden muss, verwenden Sie eine der Invoke Überladungen, die einen TimeSpan.
Invoke(Activity, IDictionary<String,Object>, TimeSpan)
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition, IDictionary<TKey,TValue> der Eingabeparameter und des Timeoutintervalls auf.
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)
Parameter
- workflow
- Activity
Die Workflowdefinition des workflows, der aufgerufen werden soll.
- inputs
- IDictionary<String,Object>
Das Wörterbuch der Eingabeparameter für den Workflow, schlüsselt nach Argumentname.
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen wird und ein TimeoutException Fehler ausgelöst wird.
Gibt zurück
Ein Wörterbuch der Stammaktivität OutArgument und InOutArgument der Werte, die nach Argumentname schlüsselt, die die Ausgaben des Workflows darstellen.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der zwei WriteLine Aktivitäten und eine Delay Aktivität enthält, die mit einer Duration Minute konfiguriert ist. Dieser Workflow wird zweimal aufgerufen; das erste Mal mit einem Timeoutintervall von zwei Minuten und der zweiten Zeit mit einem Timeoutintervall von 30 Sekunden. Der erste Workflow wird erfolgreich abgeschlossen, aber das zweite wird nicht ausgelöst.TimeoutException
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);
}
Ein Beispiel für die Verwendung Invoke mit Eingabe- und Ausgabeargumenten finden Sie in der Überladung Invoke mit denselben Parametern wie diese Überladung ohne timeout-Intervall.
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Wenn der Workflow nicht innerhalb des angegebenen Timeoutintervalls abgeschlossen wird, wird der Workflow abgebrochen und ein TimeoutException Fehler ausgelöst.
Note
Dies TimeoutException wird nur ausgelöst, wenn das Timeoutintervall verstrichen ist und der Workflow während der Ausführung leer ist. Ein Workflow, der länger als das angegebene Timeout-Intervall dauert, wird erfolgreich abgeschlossen, wenn der Workflow nicht in den Leerlauf kommt.
Gilt für:
Invoke(Activity, TimeSpan)
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition und des Timeoutintervalls auf.
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)
Parameter
- workflow
- Activity
Die Workflowdefinition des workflows, der aufgerufen werden soll.
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen wird und ein TimeoutException Fehler ausgelöst wird.
Gibt zurück
Ein Wörterbuch der Stammaktivität OutArgument und InOutArgument der Werte, die nach Argumentname schlüsselt, die die Ausgaben des Workflows darstellen.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der zwei WriteLine Aktivitäten und eine Delay Aktivität enthält, die mit einer Duration Minute konfiguriert ist. Dieser Workflow wird zweimal aufgerufen; das erste Mal mit einem Timeoutintervall von zwei Minuten und der zweiten Zeit mit einem Timeoutintervall von 30 Sekunden. Der erste Workflow wird erfolgreich abgeschlossen, aber das zweite wird nicht ausgelöst.TimeoutException
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);
}
Ein Beispiel für die Verwendung Invoke mit Ausgabeargumenten finden Sie unter der Überladung Invoke mit denselben Parametern wie diese Überladung ohne das Timeoutintervall.
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Wenn der Workflow nicht innerhalb des angegebenen Timeoutintervalls abgeschlossen wird, wird der Workflow abgebrochen und ein TimeoutException Fehler ausgelöst.
Note
Dies TimeoutException wird nur ausgelöst, wenn das Timeoutintervall verstrichen ist und der Workflow während der Ausführung leer ist. Ein Workflow, der länger als das angegebene Timeout-Intervall dauert, wird erfolgreich abgeschlossen, wenn der Workflow nicht in den Leerlauf kommt.
Gilt für:
Invoke(Activity, IDictionary<String,Object>)
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition und IDictionary<TKey,TValue> der Eingabeparameter auf.
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)
Parameter
- workflow
- Activity
Die Workflowdefinition des workflows, der aufgerufen werden soll.
- inputs
- IDictionary<String,Object>
Das Wörterbuch der Eingabeparameter für den Workflow, schlüsselt nach Argumentname.
Gibt zurück
Ein Wörterbuch der Stammaktivität OutArgument und InOutArgument der Werte, die nach Argumentname schlüsselt, die die Ausgaben des Workflows darstellen.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Divide Aktivität besteht, die zwei Eingabeargumente und zwei Ausgabeargumente enthält. Wenn der Workflow aufgerufen wird, wird das arguments Wörterbuch übergeben, das die Werte für jedes Eingabeargument enthält, mit Schlüssel nach Argumentname. Wenn der Aufruf von Invoke zurückgegeben wird, werden die einzelnen Ausgabeargumente nach Argumentname sortiert im outputs-Wörterbuch zurückgegeben.
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"]);
Wenn der Workflow von ActivityWithResult, z CodeActivity<TResult> . B. oder Activity<TResult>, abgeleitet wird und neben dem klar definierten Result Ausgabeargument Ausgabeargument vorhanden ist, muss eine nicht generische Überladung von Invoke, z. B. dieser, verwendet werden, um die zusätzlichen Argumente abzurufen. Dazu muss die an Invoke übergebene Workflowdefinition vom Typ Activity sein. In diesem Beispiel wird die Divide Aktivität von CodeActivity<int>, aber deklariert als Activity so deklariert, dass diese Überladung Invoke, die ein Wörterbuch mit Argumenten anstelle eines einzelnen Rückgabewerts zurückgibt, verwendet wird.
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"]);
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Um ein Timeoutintervall zu konfigurieren, in dem der Workflow abgeschlossen werden muss, verwenden Sie eine der Invoke Überladungen, die einen TimeSpan.
Gilt für:
Invoke(IDictionary<String,Object>, TimeSpan)
Ruft die an den WorkflowInvoker(Activity) Konstruktor übergebene Aktivität synchron mit den angegebenen IDictionary<TKey,TValue> Eingabeparametern und dem angegebenen Timeoutintervall auf.
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)
Parameter
- inputs
- IDictionary<String,Object>
Das Wörterbuch der Eingabeparameter für den Workflow, schlüsselt nach Argumentname.
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen wird und ein TimeoutException Fehler ausgelöst wird.
Gibt zurück
Ein Wörterbuch der Stammaktivität OutArgument und InOutArgument der Werte, die nach Argumentname schlüsselt, die die Ausgaben des Workflows darstellen.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der zwei WriteLine Aktivitäten und eine Delay Aktivität enthält, die mit einer Duration Minute konfiguriert ist. Dieser Workflow wird zweimal aufgerufen; das erste Mal mit einem Timeoutintervall von zwei Minuten und der zweiten Zeit mit einem Timeoutintervall von 30 Sekunden. Der erste Workflow wird erfolgreich abgeschlossen, die zweite wird jedoch nicht ausgelöst, TimeoutException und die folgende Meldung wird angezeigt.
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);
}
Ein Beispiel für die Verwendung Invoke mit Eingabe- und Ausgabeargumenten finden Sie in der Überladung Invoke mit denselben Parametern wie diese Überladung ohne timeout-Intervall.
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Wenn der Workflow nicht innerhalb des angegebenen Timeoutintervalls abgeschlossen wird, wird der Workflow abgebrochen und ein TimeoutException Fehler ausgelöst.
Note
Dies TimeoutException wird nur ausgelöst, wenn das Timeoutintervall verstrichen ist und der Workflow während der Ausführung leer ist. Ein Workflow, der länger als das angegebene Timeout-Intervall dauert, wird erfolgreich abgeschlossen, wenn der Workflow nicht in den Leerlauf kommt.
Gilt für:
Invoke(IDictionary<String,Object>)
Ruft die an den WorkflowInvoker(Activity) Konstruktor übergebene Aktivität synchron mit den angegebenen IDictionary<TKey,TValue> Eingabeparametern auf.
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)
Parameter
- inputs
- IDictionary<String,Object>
Das Wörterbuch der Eingabeparameter für den Workflow, schlüsselt nach Argumentname.
Gibt zurück
Ein Wörterbuch der Stammaktivität OutArgument und InOutArgument der Werte, die nach Argumentname schlüsselt, die die Ausgaben des Workflows darstellen.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Divide Aktivität besteht, die zwei Eingabeargumente und zwei Ausgabeargumente enthält. Wenn der Workflow aufgerufen wird, wird das arguments Wörterbuch übergeben, das die Werte für jedes Eingabeargument enthält, mit Schlüssel nach Argumentname. Wenn der Aufruf von Invoke zurückgegeben wird, werden die einzelnen Ausgabeargumente nach Argumentname sortiert im outputs-Wörterbuch zurückgegeben.
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"]);
Wenn der Workflow von ActivityWithResult, z CodeActivity<TResult> . B. oder Activity<TResult>, abgeleitet wird und neben dem klar definierten Result Ausgabeargument Ausgabeargument vorhanden ist, muss eine nicht generische Überladung von Invoke, z. B. dieser, verwendet werden, um die zusätzlichen Argumente abzurufen. Dazu muss die workflowdefinition, die an den WorkflowInvoker Konstruktor übergeben wird, vom Typ Activitysein. In diesem Beispiel wird die Divide Aktivität von CodeActivity<int>, aber deklariert als Activity so deklariert, dass diese Überladung Invoke, die ein Wörterbuch mit Argumenten anstelle eines einzelnen Rückgabewerts zurückgibt, verwendet wird.
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"]);
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Um ein Timeoutintervall zu konfigurieren, in dem der Workflow abgeschlossen werden muss, verwenden Sie eine der Invoke Überladungen, die einen TimeSpan.
Gilt für:
Invoke(Activity)
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition auf.
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)
Parameter
- workflow
- Activity
Die Workflowdefinition des workflows, der aufgerufen werden soll.
Gibt zurück
Ein Wörterbuch der Stammaktivität OutArgument und InOutArgument der Werte, die nach Argumentname schlüsselt, die die Ausgaben des Workflows darstellen.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen DiceRoll Aktivität besteht. Die DiceRoll Aktivität weist zwei Ausgabeargumente auf, die die Ergebnisse des Würfelrollvorgangs darstellen. Wenn der Aufruf zurückgegeben Invoke wird, wird jedes Ausgabeargument im Ausgabewörterbuch zurückgegeben, schlüsselt nach Argumentname.
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"]);
Wenn die Stammaktivität des Workflows keine Ausgabeargumente aufweist oder sie vom Host nicht benötigt werden, können sie ignoriert werden. Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen WriteLine Aktivität besteht, die keine Ausgabeargumente enthält.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker.Invoke(wf);
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Um ein Timeoutintervall zu konfigurieren, in dem der Workflow abgeschlossen werden muss, verwenden Sie eine der Invoke Überladungen, die einen TimeSpan.
Gilt für:
Invoke()
Ruft einen Workflow synchron mithilfe der Workflowdefinition auf, die an den WorkflowInvoker(Activity) Konstruktor übergeben wird.
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)
Gibt zurück
Ein Wörterbuch der Stammaktivität OutArgument und InOutArgument der Werte, die nach Argumentname schlüsselt, die die Ausgaben des Workflows darstellen.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen DiceRoll Aktivität besteht. Die DiceRoll Aktivität weist zwei Ausgabeargumente auf, die die Ergebnisse des Würfelrollvorgangs darstellen. Wenn der Aufruf zurückgegeben Invoke wird, wird jedes Ausgabeargument im Ausgabewörterbuch zurückgegeben, schlüsselt nach Argumentname. Der Workflow wird zweimal aufgerufen, wobei die workflowdefinition verwendet wird, die an den WorkflowInvoker Konstruktor übergeben wird.
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"]);
Wenn die Stammaktivität des Workflows keine Ausgabeargumente aufweist oder sie vom Host nicht benötigt werden, können sie ignoriert werden. Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen WriteLine Aktivität besteht, die keine Ausgabeargumente enthält.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker invoker = new WorkflowInvoker(wf);
invoker.Invoke();
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Um ein Timeoutintervall zu konfigurieren, in dem der Workflow abgeschlossen werden muss, verwenden Sie eine der Invoke Überladungen, die einen TimeSpan.
Gilt für:
Invoke(TimeSpan)
Ruft einen Workflow synchron mit dem angegebenen Timeoutintervall auf.
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)
Parameter
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen wird und ein TimeoutException Fehler ausgelöst wird.
Gibt zurück
Ein Wörterbuch der Stammaktivität OutArgument und InOutArgument der Werte, die nach Argumentname schlüsselt, die die Ausgaben des Workflows darstellen.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der zwei WriteLine Aktivitäten und eine Delay Aktivität enthält, die mit einer Duration Minute konfiguriert ist. Dieser Workflow wird zweimal aufgerufen; das erste Mal mit einem Timeoutintervall von zwei Minuten und der zweiten Zeit mit einem Timeoutintervall von 30 Sekunden. Der erste Workflow wird erfolgreich abgeschlossen, die zweite wird jedoch nicht ausgelöst, TimeoutException und die folgende Meldung wird angezeigt.
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);
}
Ein Beispiel für die Verwendung Invoke mit Ausgabeargumenten finden Sie unter der Überladung Invoke mit denselben Parametern wie diese Überladung ohne das Timeoutintervall.
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Wenn der Workflow nicht innerhalb des angegebenen Timeoutintervalls abgeschlossen wird, wird der Workflow abgebrochen und ein TimeoutException Fehler ausgelöst.
Note
Dies TimeoutException wird nur ausgelöst, wenn das Timeoutintervall verstrichen ist und der Workflow während der Ausführung leer ist. Ein Workflow, der länger als das angegebene Timeout-Intervall dauert, wird erfolgreich abgeschlossen, wenn der Workflow nicht in den Leerlauf kommt.
Gilt für:
Invoke<TResult>(Activity<TResult>)
Ruft einen Workflow synchron mithilfe der Workflowdefinition auf, die an den WorkflowInvoker(Activity) Konstruktor übergeben wird.
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
Typparameter
- TResult
Der Typ des Workflows.
Parameter
- workflow
- Activity<TResult>
Die Workflowdefinition des workflows, der aufgerufen werden soll. Die Workflowdefinition muss von ActivityWithResult.
Gibt zurück
Ein Wert vom Typ TResult mit dem Ergebnis der Ausführung der Aktivität.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Add Aktivität besteht, die über zwei Eingabeargumente verfügt, und da er von CodeActivity<int> ihr abgeleitet ist, ein klar definiertes Result Ausgabeargument aufweist. Wenn der Workflow aufgerufen wird, wird das arguments Wörterbuch übergeben, das die Werte für jedes Eingabeargument enthält, mit Schlüssel nach Argumentname. Wenn der zurückzugebende Invoke Aufruf zurückgegeben wird, wird der Wert des Result Ausgabearguments zurückgegeben.
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);
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Um ein Timeoutintervall zu konfigurieren, in dem der Workflow abgeschlossen werden muss, verwenden Sie eine der Invoke Überladungen, die einen TimeSpan.
Gilt für:
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>)
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition und IDictionary<TKey,TValue> der Eingabeparameter auf.
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
Typparameter
- TResult
Der Typ des Workflows.
Parameter
- workflow
- Activity<TResult>
Die Workflowdefinition des workflows, der aufgerufen werden soll.
- inputs
- IDictionary<String,Object>
Das Wörterbuch der Eingabeparameter für den Workflow, schlüsselt nach Argumentname.
Gibt zurück
Ein Wert vom Typ TResult mit dem Ergebnis der Ausführung der Aktivität.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Add Aktivität besteht, die über zwei Eingabeargumente verfügt, und da er von CodeActivity<int> ihr abgeleitet ist, ein klar definiertes Result Ausgabeargument aufweist. Wenn der Workflow aufgerufen wird, wird das arguments Wörterbuch übergeben, das die Werte für jedes Eingabeargument enthält, mit Schlüssel nach Argumentname. Wenn der zurückzugebende Invoke Aufruf zurückgegeben wird, wird der Wert des Result Ausgabearguments zurückgegeben.
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);
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Um ein Timeoutintervall zu konfigurieren, in dem der Workflow abgeschlossen werden muss, verwenden Sie eine der Invoke Überladungen, die einen TimeSpan.
Note
Dies TimeoutException wird nur ausgelöst, wenn das Timeoutintervall verstrichen ist und der Workflow während der Ausführung leer ist. Ein Workflow, der länger als das angegebene Timeoutintervall dauert, wird erfolgreich abgeschlossen, wenn der Workflow nicht im Leerlauf ist.
Gilt für:
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan)
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition, IDictionary<TKey,TValue> der Eingabeparameter und des Timeoutintervalls auf.
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
Typparameter
- TResult
Der Typ des Workflows.
Parameter
- workflow
- Activity<TResult>
Die Workflowdefinition des workflows, der aufgerufen werden soll.
- inputs
- IDictionary<String,Object>
Das Wörterbuch der Eingabeparameter für den Workflow, schlüsselt nach Argumentname.
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen wird und ein TimeoutException Fehler ausgelöst wird.
Gibt zurück
Ein Wert vom Typ TResult mit dem Ergebnis der Ausführung der Aktivität.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Add Aktivität besteht, die über zwei Eingabeargumente verfügt, und da er von CodeActivity<int> ihr abgeleitet ist, ein klar definiertes Result Ausgabeargument aufweist. Wenn der Workflow aufgerufen wird, wird das arguments Wörterbuch übergeben, das die Werte für jedes Eingabeargument enthält, mit Schlüssel nach Argumentname. Wenn der zurückzugebende Invoke Aufruf zurückgegeben wird, wird der Wert des Result Ausgabearguments zurückgegeben.
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);
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Wenn der Workflow nicht innerhalb des angegebenen Timeoutintervalls abgeschlossen wird, wird der Workflow abgebrochen und ein TimeoutException Fehler ausgelöst.
Note
Dies TimeoutException wird nur ausgelöst, wenn das Timeoutintervall verstrichen ist und der Workflow während der Ausführung leer ist. Ein Workflow, der länger als das angegebene Timeoutintervall dauert, wird erfolgreich abgeschlossen, wenn der Workflow nicht im Leerlauf ist.
Gilt für:
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan)
Ruft einen Workflow synchron mithilfe der angegebenen Workflowdefinition, IDictionary<TKey,TValue> von Eingabeparametern, IDictionary<TKey,TValue> zusätzlichen Ausgabeparametern und Timeoutintervallen auf.
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
Typparameter
- TResult
Der Typ des Workflows.
Parameter
- workflow
- Activity<TResult>
Die Workflowdefinition des workflows, der aufgerufen werden soll.
- inputs
- IDictionary<String,Object>
Das Wörterbuch der Eingabeparameter für den Workflow, schlüsselt nach Argumentname.
- additionalOutputs
- IDictionary<String,Object>
Das Wörterbuch mit zusätzlichen Ausgabeparametern des Workflows, schlüsselt nach Argumentname.
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen wird und ein TimeoutException Fehler ausgelöst wird.
Gibt zurück
Ein Wert vom Typ TResult mit dem Ergebnis der Ausführung der Aktivität.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Add Aktivität besteht, die über zwei Eingabeargumente verfügt, und da er von CodeActivity<int> ihr abgeleitet ist, ein klar definiertes Result Ausgabeargument aufweist. Wenn der Workflow aufgerufen wird, wird das arguments Wörterbuch übergeben, das die Werte für jedes Eingabeargument enthält, mit Schlüssel nach Argumentname. Wenn der zurückzugebende Invoke Aufruf zurückgegeben wird, wird der Wert des Result Ausgabearguments zurückgegeben.
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);
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich Leerlaufzeit. Alle Workflowausführung wird garantiert im aufrufenden Thread ausgeführt. Wenn der Workflow nicht innerhalb des angegebenen Timeoutintervalls abgeschlossen wird, wird der Workflow abgebrochen und ein TimeoutException Fehler ausgelöst.
Note
Dies TimeoutException wird nur ausgelöst, wenn das Timeoutintervall verstrichen ist und der Workflow während der Ausführung leer ist. Ein Workflow, der länger als das angegebene Timeoutintervall dauert, wird erfolgreich abgeschlossen, wenn der Workflow nicht im Leerlauf ist.