WorkflowInvoker.Invoke Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vyvolá pracovní postup synchronně a vrátí slovník hodnot a InOutArgument hodnot kořenové aktivity OutArgument s klíči podle názvu argumentu, které představují výstupy pracovního postupu.
Přetížení
Invoke(Activity, IDictionary<String,Object>, TimeSpan) |
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu, IDictionary<TKey,TValue> vstupních parametrů a intervalu časového limitu. |
Invoke(Activity, TimeSpan) |
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu a intervalu časového limitu. |
Invoke(Activity, IDictionary<String,Object>) |
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu a IDictionary<TKey,TValue> vstupních parametrů. |
Invoke(IDictionary<String,Object>, TimeSpan) |
Vyvolá aktivitu předávanou konstruktoru WorkflowInvoker(Activity) synchronně se zadanými IDictionary<TKey,TValue> vstupními parametry a zadaným intervalem časového limitu. |
Invoke(IDictionary<String,Object>) |
Vyvolá aktivitu předanou konstruktoru WorkflowInvoker(Activity) synchronně se zadanými IDictionary<TKey,TValue> vstupními parametry. |
Invoke(Activity) |
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu. |
Invoke() |
Vyvolá pracovní postup synchronně pomocí definice pracovního postupu předané konstruktoru WorkflowInvoker(Activity) . |
Invoke(TimeSpan) |
Vyvolá pracovní postup synchronně se zadaným intervalem časového limitu. |
Invoke<TResult>(Activity<TResult>) |
Vyvolá pracovní postup synchronně pomocí definice pracovního postupu předané konstruktoru WorkflowInvoker(Activity) . |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>) |
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu a IDictionary<TKey,TValue> vstupních parametrů. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan) |
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu, IDictionary<TKey,TValue> vstupních parametrů a intervalu časového limitu. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan) |
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu, IDictionary<TKey,TValue> vstupních parametrů, IDictionary<TKey,TValue> dalších výstupních parametrů a intervalu časového limitu. |
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z Invoke přetížení, které zabírají TimeSpan.
Invoke(Activity, IDictionary<String,Object>, TimeSpan)
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu, IDictionary<TKey,TValue> vstupních parametrů a intervalu časového limitu.
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)
Parametry
- workflow
- Activity
Definice pracovního postupu pracovního postupu, který se má vyvolat.
- inputs
- IDictionary<String,Object>
Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.
- timeout
- TimeSpan
Interval, ve kterém se pracovní postup musí dokončit, než bude přerušen a TimeoutException vyvolán.
Návraty
Slovník kořenových aktivit OutArgument a InOutArgument hodnot s klíčem podle názvu argumentu, který představuje výstupy pracovního postupu.
Příklady
Následující příklad vyvolá pracovní postup, který obsahuje dvě WriteLine aktivity a aktivitu nakonfigurovanou Delay s minutou Duration . Tento pracovní postup je vyvolán dvakrát; poprvé s intervalem časového limitu dvě minuty a podruhé s časovým limitem 30 sekund. První pracovní postup se úspěšně dokončí, ale druhý ne a TimeoutException vyvolá se.
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);
}
Příklad použití Invoke
se vstupními a výstupními argumenty najdete v tématu Přetížení Invoke se stejnými parametry jako toto přetížení bez intervalu časového limitu.
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud se pracovní postup nedokončí v zadaném intervalu časového limitu, pracovní postup se přeruší a TimeoutException vyvolá se.
Poznámka
Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.
Platí pro
Invoke(Activity, TimeSpan)
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu a intervalu časového limitu.
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)
Parametry
- workflow
- Activity
Definice pracovního postupu pracovního postupu, který se má vyvolat.
- timeout
- TimeSpan
Interval, ve kterém se pracovní postup musí dokončit, než bude přerušen a TimeoutException vyvolán.
Návraty
Slovník kořenových aktivit OutArgument a InOutArgument hodnot s klíčem podle názvu argumentu, který představuje výstupy pracovního postupu.
Příklady
Následující příklad vyvolá pracovní postup, který obsahuje dvě WriteLine aktivity a aktivitu nakonfigurovanou Delay s minutou Duration . Tento pracovní postup je vyvolán dvakrát; poprvé s intervalem časového limitu dvě minuty a podruhé s časovým limitem 30 sekund. První pracovní postup se úspěšně dokončí, ale druhý ne a TimeoutException vyvolá se.
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);
}
Příklad použití Invoke
s výstupními argumenty, viz přetížení Invoke se stejnými parametry jako toto přetížení bez intervalu časového limitu.
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud se pracovní postup nedokončí v zadaném intervalu časového limitu, pracovní postup se přeruší a TimeoutException vyvolá se.
Poznámka
Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.
Platí pro
Invoke(Activity, IDictionary<String,Object>)
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu a IDictionary<TKey,TValue> vstupních parametrů.
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)
Parametry
- workflow
- Activity
Definice pracovního postupu pracovního postupu, který se má vyvolat.
- inputs
- IDictionary<String,Object>
Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.
Návraty
Slovník kořenových aktivit OutArgument a InOutArgument hodnot s klíčem podle názvu argumentu, který představuje výstupy pracovního postupu.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z jedné Divide
aktivity, která má dva vstupní argumenty a dva výstupní argumenty. Při vyvolání pracovního postupu se předá slovník, arguments
který obsahuje hodnoty pro každý vstupní argument, který je označen názvem argumentu. Při volání se Invoke
vrátí každý výstupní argument ve slovníku outputs
, který je také označený názvem argumentu.
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"]);
Pokud se pracovní postup odvozuje od ActivityWithResult, například CodeActivity<TResult>
nebo Activity<TResult>
, a kromě správně definovaného Result výstupního Invoke
argumentu existují výstupní argumenty, musí se k načtení dalších argumentů použít jiné než obecné přetížení typu , jako je tento. K tomu musí být definice pracovního postupu předaná do Invoke
typu Activity. V tomto příkladu Divide
je aktivita odvozena od CodeActivity<int>
, ale je deklarována tak Activity , aby se použilo toto přetížení Invoke
, které vrací slovník argumentů místo jedné návratové hodnoty.
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"]);
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z Invoke přetížení, které zabírají TimeSpan.
Platí pro
Invoke(IDictionary<String,Object>, TimeSpan)
Vyvolá aktivitu předávanou konstruktoru WorkflowInvoker(Activity) synchronně se zadanými IDictionary<TKey,TValue> vstupními parametry a zadaným intervalem časového limitu.
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)
Parametry
- inputs
- IDictionary<String,Object>
Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.
- timeout
- TimeSpan
Interval, ve kterém se pracovní postup musí dokončit, než bude přerušen a TimeoutException vyvolán.
Návraty
Slovník kořenových aktivit OutArgument a InOutArgument hodnot s klíčem podle názvu argumentu, který představuje výstupy pracovního postupu.
Příklady
Následující příklad vyvolá pracovní postup, který obsahuje dvě WriteLine aktivity a aktivitu nakonfigurovanou Delay s minutou Duration . Tento pracovní postup je vyvolán dvakrát; poprvé s intervalem časového limitu dvě minuty a podruhé s časovým limitem 30 sekund. První pracovní postup se úspěšně dokončí, ale druhý ne a TimeoutException vyvolá se a zobrazí se následující zpráva.
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);
}
Příklad použití Invoke
se vstupními a výstupními argumenty najdete v tématu Přetížení Invoke se stejnými parametry jako toto přetížení bez intervalu časového limitu.
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud se pracovní postup nedokončí v zadaném intervalu časového limitu, pracovní postup se přeruší a TimeoutException vyvolá se.
Poznámka
Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.
Platí pro
Invoke(IDictionary<String,Object>)
Vyvolá aktivitu předanou konstruktoru WorkflowInvoker(Activity) synchronně se zadanými IDictionary<TKey,TValue> vstupními parametry.
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)
Parametry
- inputs
- IDictionary<String,Object>
Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.
Návraty
Slovník kořenových aktivit OutArgument a InOutArgument hodnot s klíčem podle názvu argumentu, který představuje výstupy pracovního postupu.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z jedné Divide
aktivity, která má dva vstupní argumenty a dva výstupní argumenty. Při vyvolání pracovního postupu se předá slovník, arguments
který obsahuje hodnoty pro každý vstupní argument, který je označen názvem argumentu. Při volání se Invoke
vrátí každý výstupní argument ve slovníku outputs
, který je také označený názvem argumentu.
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"]);
Pokud se pracovní postup odvozuje od ActivityWithResult, například CodeActivity<TResult>
nebo Activity<TResult>
, a kromě správně definovaného Result výstupního Invoke
argumentu existují výstupní argumenty, musí se k načtení dalších argumentů použít jiné než obecné přetížení typu , jako je tento. K tomu musí být definice pracovního postupu předaná do WorkflowInvoker
konstruktoru typu Activity. V tomto příkladu Divide
je aktivita odvozena od CodeActivity<int>
, ale je deklarována tak Activity , aby se použilo toto přetížení Invoke
, které vrací slovník argumentů místo jedné návratové hodnoty.
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"]);
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z Invoke přetížení, které zabírají TimeSpan.
Platí pro
Invoke(Activity)
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu.
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)
Parametry
- workflow
- Activity
Definice pracovního postupu pracovního postupu, který se má vyvolat.
Návraty
Slovník kořenových aktivit OutArgument a InOutArgument hodnot s klíčem podle názvu argumentu, který představuje výstupy pracovního postupu.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z jedné DiceRoll
aktivity. Aktivita DiceRoll
má dva výstupní argumenty, které představují výsledky operace hodu kostkou. Při volání se Invoke
vrátí každý výstupní argument ve slovníku outputs s klíčem podle názvu argumentu.
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"]);
Pokud kořenová aktivita pracovního postupu neobsahuje žádné výstupní argumenty nebo je hostitel nepotřebuje, můžete je ignorovat. Následující příklad vyvolá pracovní postup, který se skládá z jedné WriteLine aktivity, která nemá žádné výstupní argumenty.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker.Invoke(wf);
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z Invoke přetížení, které zabírají TimeSpan.
Platí pro
Invoke()
Vyvolá pracovní postup synchronně pomocí definice pracovního postupu předané konstruktoru WorkflowInvoker(Activity) .
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)
Návraty
Slovník kořenových aktivit OutArgument a InOutArgument hodnot s klíčem podle názvu argumentu, který představuje výstupy pracovního postupu.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z jedné DiceRoll
aktivity. Aktivita DiceRoll
má dva výstupní argumenty, které představují výsledky operace hodu kostkou. Při volání se Invoke
vrátí každý výstupní argument ve slovníku outputs s klíčem podle názvu argumentu. Pracovní postup je vyvolán dvakrát pomocí definice pracovního postupu předané konstruktoru WorkflowInvoker
.
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"]);
Pokud kořenová aktivita pracovního postupu neobsahuje žádné výstupní argumenty nebo je hostitel nepotřebuje, můžete je ignorovat. Následující příklad vyvolá pracovní postup, který se skládá z jedné WriteLine aktivity, která nemá žádné výstupní argumenty.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker invoker = new WorkflowInvoker(wf);
invoker.Invoke();
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z Invoke přetížení, které zabírají TimeSpan.
Platí pro
Invoke(TimeSpan)
Vyvolá pracovní postup synchronně se zadaným intervalem časového limitu.
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)
Parametry
- timeout
- TimeSpan
Interval, ve kterém se pracovní postup musí dokončit, než bude přerušen a TimeoutException vyvolán.
Návraty
Slovník kořenových aktivit OutArgument a InOutArgument hodnot s klíčem podle názvu argumentu, který představuje výstupy pracovního postupu.
Příklady
Následující příklad vyvolá pracovní postup, který obsahuje dvě WriteLine aktivity a aktivitu nakonfigurovanou Delay s minutou Duration . Tento pracovní postup je vyvolán dvakrát; poprvé s intervalem časového limitu dvě minuty a podruhé s časovým limitem 30 sekund. První pracovní postup se úspěšně dokončí, ale druhý ne a TimeoutException vyvolá se a zobrazí se následující zpráva.
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);
}
Příklad použití Invoke
s výstupními argumenty, viz přetížení Invoke se stejnými parametry jako toto přetížení bez intervalu časového limitu.
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud se pracovní postup nedokončí v zadaném intervalu časového limitu, pracovní postup se přeruší a TimeoutException vyvolá se.
Poznámka
Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.
Platí pro
Invoke<TResult>(Activity<TResult>)
Vyvolá pracovní postup synchronně pomocí definice pracovního postupu předané konstruktoru WorkflowInvoker(Activity) .
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
Parametry typu
- TResult
Typ pracovního postupu.
Parametry
- workflow
- Activity<TResult>
Definice pracovního postupu pracovního postupu, který se má vyvolat. Definice pracovního postupu musí být odvozena z ActivityWithResult.
Návraty
Hodnota typu TResult s výsledkem provedení aktivity.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z jedné Add
aktivity, která má dva vstupní argumenty a protože odvozuje z CodeActivity<int>
něj jeden dobře definovaný Result výstupní argument. Při vyvolání pracovního postupu se předá slovník, arguments
který obsahuje hodnoty pro každý vstupní argument, který je označen názvem argumentu. Když volání Invoke
vrátí, vrátí se hodnota výstupního argumentu Result .
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);
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z Invoke přetížení, které zabírají TimeSpan.
Platí pro
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>)
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu a IDictionary<TKey,TValue> vstupních parametrů.
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
Parametry typu
- TResult
Typ pracovního postupu.
Parametry
- workflow
- Activity<TResult>
Definice pracovního postupu pracovního postupu, který se má vyvolat.
- inputs
- IDictionary<String,Object>
Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.
Návraty
Hodnota typu TResult s výsledkem provedení aktivity.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z jedné Add
aktivity, která má dva vstupní argumenty a protože odvozuje z CodeActivity<int>
něj jeden dobře definovaný Result výstupní argument. Při vyvolání pracovního postupu se předá slovník, arguments
který obsahuje hodnoty pro každý vstupní argument, který je označen názvem argumentu. Když volání Invoke
vrátí, vrátí se hodnota výstupního argumentu Result .
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);
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z Invoke přetížení, které zabírají TimeSpan.
Poznámka
Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.
Platí pro
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan)
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu, IDictionary<TKey,TValue> vstupních parametrů a intervalu časového limitu.
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
Parametry typu
- TResult
Typ pracovního postupu.
Parametry
- workflow
- Activity<TResult>
Definice pracovního postupu pracovního postupu, který se má vyvolat.
- inputs
- IDictionary<String,Object>
Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.
- timeout
- TimeSpan
Interval, ve kterém se pracovní postup musí dokončit, než bude přerušen a TimeoutException vyvolán.
Návraty
Hodnota typu TResult s výsledkem provedení aktivity.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z jedné Add
aktivity, která má dva vstupní argumenty a protože odvozuje z CodeActivity<int>
něj jeden dobře definovaný Result výstupní argument. Při vyvolání pracovního postupu se předá slovník, arguments
který obsahuje hodnoty pro každý vstupní argument, který je označen názvem argumentu. Když volání Invoke
vrátí, vrátí se hodnota výstupního argumentu Result .
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);
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud se pracovní postup nedokončí v zadaném intervalu časového limitu, pracovní postup se přeruší a TimeoutException vyvolá se.
Poznámka
Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.
Platí pro
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan)
Vyvolá pracovní postup synchronně pomocí zadané definice pracovního postupu, IDictionary<TKey,TValue> vstupních parametrů, IDictionary<TKey,TValue> dalších výstupních parametrů a intervalu časového limitu.
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
Parametry typu
- TResult
Typ pracovního postupu.
Parametry
- workflow
- Activity<TResult>
Definice pracovního postupu pracovního postupu, který se má vyvolat.
- inputs
- IDictionary<String,Object>
Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.
- additionalOutputs
- IDictionary<String,Object>
Slovník dalších výstupních parametrů pracovního postupu s klíčem podle názvu argumentu.
- timeout
- TimeSpan
Interval, ve kterém se pracovní postup musí dokončit, než bude přerušen a TimeoutException vyvolán.
Návraty
Hodnota typu TResult s výsledkem provedení aktivity.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z jedné Add
aktivity, která má dva vstupní argumenty a protože odvozuje z CodeActivity<int>
něj jeden dobře definovaný Result výstupní argument. Při vyvolání pracovního postupu se předá slovník, arguments
který obsahuje hodnoty pro každý vstupní argument, který je označen názvem argumentu. Když volání Invoke
vrátí, vrátí se hodnota výstupního argumentu Result .
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);
Poznámky
Tato metoda blokuje, dokud se pracovní postup nedokončil, včetně doby nečinnosti. Veškeré spuštění pracovního postupu je zaručeno na vyvolání vlákna. Pokud se pracovní postup nedokončí v zadaném intervalu časového limitu, pracovní postup se přeruší a TimeoutException vyvolá se.
Poznámka
Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.