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 von OutArgument- und InOutArgument-Werten der Stammaktivität nach Argumentnamen geordnet zurück, die die Ausgaben des Workflows darstellt.
Überlädt
Invoke(Activity, IDictionary<String,Object>, TimeSpan) |
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition, des IDictionary<TKey,TValue> von Eingabeparametern und des Timeoutintervalls synchron auf. |
Invoke(Activity, TimeSpan) |
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition und des Timeoutintervalls synchron auf. |
Invoke(Activity, IDictionary<String,Object>) |
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition und des IDictionary<TKey,TValue> von Eingabeparametern synchron auf. |
Invoke(IDictionary<String,Object>, TimeSpan) |
Ruft die Aktivität, die an den WorkflowInvoker(Activity)-Konstruktor übergeben wurde, synchron mit dem angegebenen IDictionary<TKey,TValue> von Eingabeparametern und dem angegebenen Timeoutintervall auf. |
Invoke(IDictionary<String,Object>) |
Ruft die Aktivität, die an den WorkflowInvoker(Activity)-Konstruktor übergeben wurde, synchron mit dem angegebenen IDictionary<TKey,TValue> von Eingabeparametern auf. |
Invoke(Activity) |
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition synchron auf. |
Invoke() |
Ruft einen Workflow mit der an den WorkflowInvoker(Activity)-Konstruktor übergebenen Workflowdefinition synchron auf. |
Invoke(TimeSpan) |
Ruft einen Workflow mit dem angegebenen Timeoutintervall synchron auf. |
Invoke<TResult>(Activity<TResult>) |
Ruft einen Workflow mit der an den WorkflowInvoker(Activity)-Konstruktor übergebenen Workflowdefinition synchron auf. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>) |
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition und des IDictionary<TKey,TValue> von Eingabeparametern synchron auf. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan) |
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition, des IDictionary<TKey,TValue> von Eingabeparametern und des Timeoutintervalls synchron auf. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan) |
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition, des IDictionary<TKey,TValue> von Eingabeparametern, des IDictionary<TKey,TValue> von zusätzlichen Ausgabeparametern und des Timeoutintervalls synchron auf. |
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Um ein anderes Timeoutintervall für den Abschluss des Workflows zu konfigurieren, verwenden Sie eine der Invoke-Überladungen, die einen TimeSpan annehmen.
Invoke(Activity, IDictionary<String,Object>, TimeSpan)
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition, des IDictionary<TKey,TValue> von Eingabeparametern und des Timeoutintervalls synchron 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 aufzurufenden Workflows.
- inputs
- IDictionary<String,Object>
Das Wörterbuch von Eingabeparametern für den Workflow, nach Argumentname geordnet.
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen und eine TimeoutException ausgelöst wird.
Gibt zurück
Ein Wörterbuch von OutArgument- und InOutArgument-Werten der Stammaktivität, nach Argumentnamen geordnet, das die Ausgaben des Workflows darstellt.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der zwei WriteLine-Aktivitäten sowie eine Delay-Aktivität enthält, die mit einer Duration von einer Minute konfiguriert ist. Dieser Workflow wird zweimal aufgerufen: das erste Mal mit einem Timeoutintervall von zwei Minuten und das zweite Mal mit einem Timeoutintervall von 30 Sekunden. Der erste Workflow wird erfolgreich abgeschlossen, der zweite jedoch nicht, sodass eine TimeoutException ausgelöst wird.
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
von mit Eingabe- und Ausgabeargumenten finden Sie in der Überladung von Invoke mit denselben Parametern wie diese Überladung ohne timeout-Intervall.
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Falls der Workflow innerhalb des angegebenen Timeoutintervalls nicht abgeschlossen wird, wird der Workflow abgebrochen, und eine TimeoutException wird ausgelöst.
Hinweis
Das TimeoutException-Objekt wird nur ausgelöst, wenn das Timeoutintervall verstreicht und der Workflow während der Ausführung in den Leerlauf wechselt. Ein Workflow, der erst nach dem angegebenen Timeoutintervall abgeschlossen wird, wird dennoch erfolgreich beendet, wenn der Workflow nicht in den Leerlauf wechselt.
Gilt für:
Invoke(Activity, TimeSpan)
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition und des Timeoutintervalls synchron 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 aufzurufenden Workflows.
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen und eine TimeoutException ausgelöst wird.
Gibt zurück
Ein Wörterbuch von OutArgument- und InOutArgument-Werten der Stammaktivität, nach Argumentnamen geordnet, das die Ausgaben des Workflows darstellt.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der zwei WriteLine-Aktivitäten sowie eine Delay-Aktivität enthält, die mit einer Duration von einer Minute konfiguriert ist. Dieser Workflow wird zweimal aufgerufen: das erste Mal mit einem Timeoutintervall von zwei Minuten und das zweite Mal mit einem Timeoutintervall von 30 Sekunden. Der erste Workflow wird erfolgreich abgeschlossen, der zweite jedoch nicht, sodass eine TimeoutException ausgelöst wird.
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
von mit Ausgabeargumenten finden Sie in der Überladung von Invoke mit denselben Parametern wie diese Überladung ohne timeoutintervall.
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Falls der Workflow innerhalb des angegebenen Timeoutintervalls nicht abgeschlossen wird, wird der Workflow abgebrochen, und eine TimeoutException wird ausgelöst.
Hinweis
Das TimeoutException-Objekt wird nur ausgelöst, wenn das Timeoutintervall verstreicht und der Workflow während der Ausführung in den Leerlauf wechselt. Ein Workflow, der erst nach dem angegebenen Timeoutintervall abgeschlossen wird, wird dennoch erfolgreich beendet, wenn der Workflow nicht in den Leerlauf wechselt.
Gilt für:
Invoke(Activity, IDictionary<String,Object>)
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition und des IDictionary<TKey,TValue> von Eingabeparametern synchron 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 aufzurufenden Workflows.
- inputs
- IDictionary<String,Object>
Das Wörterbuch von Eingabeparametern für den Workflow, nach Argumentname geordnet.
Gibt zurück
Ein Wörterbuch von OutArgument- und InOutArgument-Werten der Stammaktivität, nach Argumentnamen geordnet, das die Ausgaben des Workflows darstellt.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Divide
-Aktivität besteht, die über zwei Eingabeargumente und zwei Ausgabeargumente verfügt. Beim Aufrufen des Workflows wird das arguments
-Wörterbuch übergeben, das die Werte für die einzelnen Eingabeargumente sortiert nach Argumentname enthält. 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 ActivityWithResultabgeleitet wird, z CodeActivity<TResult>
. B. oder Activity<TResult>
, und zusätzlich zum klar definierten Result Ausgabeargument Ausgabeargumente vorhanden sind, muss eine nicht generische Überladung von Invoke
, z. B. diese, verwendet werden, um die zusätzlichen Argumente abzurufen. Hierzu muss die an Invoke
übergebene Workflowdefinition den Typ Activity aufweisen. In diesem Beispiel wird die Divide
Aktivität von CodeActivity<int>
abgeleitet, aber als Activity deklariert, sodass diese Überladung von Invoke
verwendet wird, die ein Wörterbuch von Argumenten anstelle eines einzelnen Rückgabewerts zurückgibt.
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 der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Um ein anderes Timeoutintervall für den Abschluss des Workflows zu konfigurieren, verwenden Sie eine der Invoke-Überladungen, die einen TimeSpan annehmen.
Gilt für:
Invoke(IDictionary<String,Object>, TimeSpan)
Ruft die Aktivität, die an den WorkflowInvoker(Activity)-Konstruktor übergeben wurde, synchron mit dem angegebenen IDictionary<TKey,TValue> von 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 von Eingabeparametern für den Workflow, nach Argumentname geordnet.
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen und eine TimeoutException ausgelöst wird.
Gibt zurück
Ein Wörterbuch von OutArgument- und InOutArgument-Werten der Stammaktivität, nach Argumentnamen geordnet, das die Ausgaben des Workflows darstellt.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der zwei WriteLine-Aktivitäten sowie eine Delay-Aktivität enthält, die mit einer Duration von einer Minute konfiguriert ist. Dieser Workflow wird zweimal aufgerufen: das erste Mal mit einem Timeoutintervall von zwei Minuten und das zweite Mal mit einem Timeoutintervall von 30 Sekunden. Der erste Workflow wird erfolgreich abgeschlossen, der zweite jedoch nicht, sodass eine TimeoutException ausgelöst wird und die folgende Meldung angezeigt wird.
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
von mit Eingabe- und Ausgabeargumenten finden Sie in der Überladung von Invoke mit denselben Parametern wie diese Überladung ohne timeout-Intervall.
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Falls der Workflow innerhalb des angegebenen Timeoutintervalls nicht abgeschlossen wird, wird der Workflow abgebrochen, und eine TimeoutException wird ausgelöst.
Hinweis
Das TimeoutException-Objekt wird nur ausgelöst, wenn das Timeoutintervall verstreicht und der Workflow während der Ausführung in den Leerlauf wechselt. Ein Workflow, der erst nach dem angegebenen Timeoutintervall abgeschlossen wird, wird dennoch erfolgreich beendet, wenn der Workflow nicht in den Leerlauf wechselt.
Gilt für:
Invoke(IDictionary<String,Object>)
Ruft die Aktivität, die an den WorkflowInvoker(Activity)-Konstruktor übergeben wurde, synchron mit dem angegebenen IDictionary<TKey,TValue> von 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 von Eingabeparametern für den Workflow, nach Argumentname geordnet.
Gibt zurück
Ein Wörterbuch von OutArgument- und InOutArgument-Werten der Stammaktivität, nach Argumentnamen geordnet, das die Ausgaben des Workflows darstellt.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Divide
-Aktivität besteht, die über zwei Eingabeargumente und zwei Ausgabeargumente verfügt. Beim Aufrufen des Workflows wird das arguments
-Wörterbuch übergeben, das die Werte für die einzelnen Eingabeargumente sortiert nach Argumentname enthält. 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 ActivityWithResultabgeleitet wird, z CodeActivity<TResult>
. B. oder Activity<TResult>
, und zusätzlich zum klar definierten Result Ausgabeargument Ausgabeargumente vorhanden sind, muss eine nicht generische Überladung von Invoke
, z. B. diese, verwendet werden, um die zusätzlichen Argumente abzurufen. Dazu muss die an den WorkflowInvoker
Konstruktor übergebene Workflowdefinition vom Typ Activitysein. In diesem Beispiel wird die Divide
Aktivität von CodeActivity<int>
abgeleitet, aber als Activity deklariert, sodass diese Überladung von Invoke
verwendet wird, die ein Wörterbuch von Argumenten anstelle eines einzelnen Rückgabewerts zurückgibt.
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 der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Um ein anderes Timeoutintervall für den Abschluss des Workflows zu konfigurieren, verwenden Sie eine der Invoke-Überladungen, die einen TimeSpan annehmen.
Gilt für:
Invoke(Activity)
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition synchron 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 aufzurufenden Workflows.
Gibt zurück
Ein Wörterbuch von OutArgument- und InOutArgument-Werten der Stammaktivität, nach Argumentnamen geordnet, das die Ausgaben des Workflows darstellt.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen DiceRoll
-Aktivität besteht. Die DiceRoll
-Aktivität verfügt über zwei Ausgabeargumente, die die Ergebnisse des Würfelvorgangs darstellen. Wenn der Aufruf von Invoke
zurückgegeben wird, werden die einzelnen Ausgabeargumente nach Argumentname sortiert im Ausgabewörterbuch zurückgegeben.
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 diese 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 ohne Ausgabeargumente besteht.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker.Invoke(wf);
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Um ein anderes Timeoutintervall für den Abschluss des Workflows zu konfigurieren, verwenden Sie eine der Invoke-Überladungen, die einen TimeSpan annehmen.
Gilt für:
Invoke()
Ruft einen Workflow mit der an den WorkflowInvoker(Activity)-Konstruktor übergebenen Workflowdefinition synchron auf.
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 von OutArgument- und InOutArgument-Werten der Stammaktivität, nach Argumentnamen geordnet, das die Ausgaben des Workflows darstellt.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen DiceRoll
-Aktivität besteht. Die DiceRoll
-Aktivität verfügt über zwei Ausgabeargumente, die die Ergebnisse des Würfelvorgangs darstellen. Wenn der Aufruf von Invoke
zurückgegeben wird, werden die einzelnen Ausgabeargumente nach Argumentname sortiert im Ausgabewörterbuch zurückgegeben. Der Workflow wird zweimal aufgerufen, wobei die An den WorkflowInvoker
Konstruktor übergebene Workflowdefinition verwendet 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 diese 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 ohne Ausgabeargumente besteht.
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 der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Um ein anderes Timeoutintervall für den Abschluss des Workflows zu konfigurieren, verwenden Sie eine der Invoke-Überladungen, die einen TimeSpan annehmen.
Gilt für:
Invoke(TimeSpan)
Ruft einen Workflow mit dem angegebenen Timeoutintervall synchron 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 und eine TimeoutException ausgelöst wird.
Gibt zurück
Ein Wörterbuch von OutArgument- und InOutArgument-Werten der Stammaktivität, nach Argumentnamen geordnet, das die Ausgaben des Workflows darstellt.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der zwei WriteLine-Aktivitäten sowie eine Delay-Aktivität enthält, die mit einer Duration von einer Minute konfiguriert ist. Dieser Workflow wird zweimal aufgerufen: das erste Mal mit einem Timeoutintervall von zwei Minuten und das zweite Mal mit einem Timeoutintervall von 30 Sekunden. Der erste Workflow wird erfolgreich abgeschlossen, der zweite jedoch nicht, sodass eine TimeoutException ausgelöst wird und die folgende Meldung angezeigt wird.
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 Überladung von Invoke mit den gleichen Parametern wie diese Überladung ohne timeoutintervall.
Hinweise
Diese Methode blockiert, bis der Workflow abgeschlossen ist, einschließlich der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Falls der Workflow innerhalb des angegebenen Timeoutintervalls nicht abgeschlossen wird, wird der Workflow abgebrochen, und eine TimeoutException wird ausgelöst.
Hinweis
Das TimeoutException-Objekt wird nur ausgelöst, wenn das Timeoutintervall verstreicht und der Workflow während der Ausführung in den Leerlauf wechselt. Ein Workflow, der erst nach dem angegebenen Timeoutintervall abgeschlossen wird, wird dennoch erfolgreich beendet, wenn der Workflow nicht in den Leerlauf wechselt.
Gilt für:
Invoke<TResult>(Activity<TResult>)
Ruft einen Workflow mit der an den WorkflowInvoker(Activity)-Konstruktor übergebenen Workflowdefinition synchron auf.
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 aufzurufenden Workflows. Die Workflowdefinition muss von ActivityWithResult abgeleitet sind.
Gibt zurück
Ein Wert des Typs TResult mit dem Ergebnis der Aktivitätsausführung.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Add
Aktivität besteht, die über zwei Eingabeargumente und ein klar definiertes CodeActivity<int>
Result Ausgabeargument verfügt. Beim Aufrufen des Workflows wird das arguments
-Wörterbuch übergeben, das die Werte für die einzelnen Eingabeargumente sortiert nach Argumentname enthält. Wenn der Aufruf von Invoke
zurückgibt, 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 der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Um ein anderes Timeoutintervall für den Abschluss des Workflows zu konfigurieren, verwenden Sie eine der Invoke-Überladungen, die einen TimeSpan annehmen.
Gilt für:
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>)
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition und des IDictionary<TKey,TValue> von Eingabeparametern synchron 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 aufzurufenden Workflows.
- inputs
- IDictionary<String,Object>
Das Wörterbuch von Eingabeparametern für den Workflow, nach Argumentname geordnet.
Gibt zurück
Ein Wert des Typs TResult mit dem Ergebnis der Aktivitätsausführung.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Add
Aktivität besteht, die über zwei Eingabeargumente und ein klar definiertes CodeActivity<int>
Result Ausgabeargument verfügt. Beim Aufrufen des Workflows wird das arguments
-Wörterbuch übergeben, das die Werte für die einzelnen Eingabeargumente sortiert nach Argumentname enthält. Wenn der Aufruf von Invoke
zurückgibt, 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 der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Um ein anderes Timeoutintervall für den Abschluss des Workflows zu konfigurieren, verwenden Sie eine der Invoke-Überladungen, die einen TimeSpan annehmen.
Hinweis
Das TimeoutException-Objekt wird nur ausgelöst, wenn das Timeoutintervall verstreicht und der Workflow während der Ausführung in den Leerlauf wechselt. Ein Workflow, der erst nach dem angegebenen Timeoutintervall abgeschlossen wird, wird dennoch erfolgreich beendet, wenn der Workflow nicht in den Leerlauf wechselt.
Gilt für:
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan)
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition, des IDictionary<TKey,TValue> von Eingabeparametern und des Timeoutintervalls synchron 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 aufzurufenden Workflows.
- inputs
- IDictionary<String,Object>
Das Wörterbuch von Eingabeparametern für den Workflow, nach Argumentname geordnet.
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen und eine TimeoutException ausgelöst wird.
Gibt zurück
Ein Wert des Typs TResult mit dem Ergebnis der Aktivitätsausführung.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Add
Aktivität besteht, die über zwei Eingabeargumente und ein klar definiertes CodeActivity<int>
Result Ausgabeargument verfügt. Beim Aufrufen des Workflows wird das arguments
-Wörterbuch übergeben, das die Werte für die einzelnen Eingabeargumente sortiert nach Argumentname enthält. Wenn der Aufruf von Invoke
zurückgibt, 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 der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Falls der Workflow innerhalb des angegebenen Timeoutintervalls nicht abgeschlossen wird, wird der Workflow abgebrochen, und eine TimeoutException wird ausgelöst.
Hinweis
Das TimeoutException-Objekt wird nur ausgelöst, wenn das Timeoutintervall verstreicht und der Workflow während der Ausführung in den Leerlauf wechselt. Ein Workflow, der erst nach dem angegebenen Timeoutintervall abgeschlossen wird, wird dennoch erfolgreich beendet, wenn der Workflow nicht in den Leerlauf wechselt.
Gilt für:
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan)
Ruft einen Workflow mithilfe der angegebenen Workflowdefinition, des IDictionary<TKey,TValue> von Eingabeparametern, des IDictionary<TKey,TValue> von zusätzlichen Ausgabeparametern und des Timeoutintervalls synchron 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 aufzurufenden Workflows.
- inputs
- IDictionary<String,Object>
Das Wörterbuch von Eingabeparametern für den Workflow, nach Argumentname geordnet.
- additionalOutputs
- IDictionary<String,Object>
Das Wörterbuch von zusätzlichen Ausgabeparametern für den Workflow, nach Argumentname geordnet.
- timeout
- TimeSpan
Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen und eine TimeoutException ausgelöst wird.
Gibt zurück
Ein Wert des Typs TResult mit dem Ergebnis der Aktivitätsausführung.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer einzelnen Add
Aktivität besteht, die über zwei Eingabeargumente und ein klar definiertes CodeActivity<int>
Result Ausgabeargument verfügt. Beim Aufrufen des Workflows wird das arguments
-Wörterbuch übergeben, das die Werte für die einzelnen Eingabeargumente sortiert nach Argumentname enthält. Wenn der Aufruf von Invoke
zurückgibt, 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 der Leerlaufzeit. Die gesamte Workflowausführung erfolgt immer auf dem aufrufenden Thread. Falls der Workflow innerhalb des angegebenen Timeoutintervalls nicht abgeschlossen wird, wird der Workflow abgebrochen, und eine TimeoutException wird ausgelöst.
Hinweis
Das TimeoutException-Objekt wird nur ausgelöst, wenn das Timeoutintervall verstreicht und der Workflow während der Ausführung in den Leerlauf wechselt. Ein Workflow, der erst nach dem angegebenen Timeoutintervall abgeschlossen wird, wird dennoch erfolgreich beendet, wenn der Workflow nicht in den Leerlauf wechselt.