WorkflowInvoker.Invoke Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir iş akışını zaman uyumlu olarak çağırır ve iş akışının çıkışlarını temsil eden bağımsız değişken adına göre anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin bir sözlüğünü döndürür.
Aşırı Yüklemeler
Invoke(Activity, IDictionary<String,Object>, TimeSpan) |
Belirtilen iş akışı tanımını, IDictionary<TKey,TValue> giriş parametrelerini ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır. |
Invoke(Activity, TimeSpan) |
Belirtilen iş akışı tanımını ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır. |
Invoke(Activity, IDictionary<String,Object>) |
Belirtilen iş akışı tanımını ve IDictionary<TKey,TValue> giriş parametrelerini kullanarak bir iş akışını zaman uyumlu olarak çağırır. |
Invoke(IDictionary<String,Object>, TimeSpan) |
Oluşturucuya WorkflowInvoker(Activity) geçirilen etkinliği belirtilen giriş parametreleri ve belirtilen IDictionary<TKey,TValue> zaman aşımı aralığıyla zaman uyumlu olarak çağırır. |
Invoke(IDictionary<String,Object>) |
Oluşturucuya WorkflowInvoker(Activity) geçirilen etkinliği belirtilen IDictionary<TKey,TValue> giriş parametreleriyle zaman uyumlu olarak çağırır. |
Invoke(Activity) |
Belirtilen iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır. |
Invoke() |
Oluşturucuya geçirilen WorkflowInvoker(Activity) iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır. |
Invoke(TimeSpan) |
Bir iş akışını belirtilen zaman aşımı aralığıyla zaman uyumlu olarak çağırır. |
Invoke<TResult>(Activity<TResult>) |
Oluşturucuya geçirilen WorkflowInvoker(Activity) iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>) |
Belirtilen iş akışı tanımını ve IDictionary<TKey,TValue> giriş parametrelerini kullanarak bir iş akışını zaman uyumlu olarak çağırır. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan) |
Belirtilen iş akışı tanımını, IDictionary<TKey,TValue> giriş parametrelerini ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan) |
Belirtilen iş akışı tanımını, giriş parametrelerini, IDictionary<TKey,TValue> ek çıkış parametrelerini IDictionary<TKey,TValue> ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır. |
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.
Invoke(Activity, IDictionary<String,Object>, TimeSpan)
Belirtilen iş akışı tanımını, IDictionary<TKey,TValue> giriş parametrelerini ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.
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)
Parametreler
- workflow
- Activity
Çağrılacak iş akışının iş akışı tanımı.
- inputs
- IDictionary<String,Object>
Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.
- timeout
- TimeSpan
İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.
Döndürülenler
İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.
Örnekler
Aşağıdaki örnek, iki WriteLine etkinlik ve bir dakika ile yapılandırılmış bir etkinlik içeren bir DelayDuration iş akışını çağırır. Bu iş akışı iki kez çağrılır; zaman aşımı aralığı iki dakika olan ilk ve 30 saniyelik zaman aşımı aralığıyla ikinci kez. İlk iş akışı başarıyla tamamlanır, ancak ikinci iş akışı tamamlanmaz ve bir TimeoutException oluşturulur.
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);
}
Giriş ve çıkış bağımsız değişkenleriyle kullanma Invoke
örneği için, zaman aşımı aralığı olmadan bu aşırı yüklemeyle Invoke aynı parametrelerle öğesinin aşırı yüklemesine bakın.
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .
Not
TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.
Şunlara uygulanır
Invoke(Activity, TimeSpan)
Belirtilen iş akışı tanımını ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.
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)
Parametreler
- workflow
- Activity
Çağrılacak iş akışının iş akışı tanımı.
- timeout
- TimeSpan
İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.
Döndürülenler
İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.
Örnekler
Aşağıdaki örnek, iki WriteLine etkinlik ve bir dakika ile yapılandırılmış bir etkinlik içeren bir DelayDuration iş akışını çağırır. Bu iş akışı iki kez çağrılır; zaman aşımı aralığı iki dakika olan ilk ve 30 saniyelik zaman aşımı aralığıyla ikinci kez. İlk iş akışı başarıyla tamamlanır, ancak ikinci iş akışı tamamlanmaz ve bir TimeoutException oluşturulur.
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);
}
Çıkış bağımsız değişkenleriyle kullanma Invoke
örneği için, zaman aşımı aralığı olmadan bu aşırı yüklemeyle Invoke aynı parametrelerle öğesinin aşırı yüklemesine bakın.
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .
Not
TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.
Şunlara uygulanır
Invoke(Activity, IDictionary<String,Object>)
Belirtilen iş akışı tanımını ve IDictionary<TKey,TValue> giriş parametrelerini kullanarak bir iş akışını zaman uyumlu olarak çağırır.
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)
Parametreler
- workflow
- Activity
Çağrılacak iş akışının iş akışı tanımı.
- inputs
- IDictionary<String,Object>
Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.
Döndürülenler
İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.
Örnekler
Aşağıdaki örnekte, iki giriş bağımsız değişkeni ve iki çıkış bağımsız değişkeni olan tek Divide
bir etkinlik içeren bir iş akışı çağrılır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments
değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke
döndürdüğünde, her çıkış bağımsız değişkeni sözlükte outputs
döndürülür ve bağımsız değişken adıyla da anahtarlanır.
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"]);
İş akışı veya gibi öğesinden ActivityWithResulttüretiliyorsa ve iyi tanımlanmış Result çıkış bağımsız değişkenine ek olarak çıkış bağımsız değişkenleri varsa, ek bağımsız değişkenleri almak için bunun gibi genel olmayan bir aşırı yükleme Invoke
CodeActivity<TResult>
kullanılmalıdır.Activity<TResult>
Bunu yapmak için içine geçirilen Invoke
iş akışı tanımının türünde Activityolması gerekir. Bu örnekte Divide
etkinlik , 'den CodeActivity<int>
türetilir, ancak tek bir dönüş değeri yerine bağımsız değişkenlerin sözlüğünü döndüren bu aşırı yüklemesinin Invoke
kullanılması için olarak Activity bildirilir.
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"]);
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.
Şunlara uygulanır
Invoke(IDictionary<String,Object>, TimeSpan)
Oluşturucuya WorkflowInvoker(Activity) geçirilen etkinliği belirtilen giriş parametreleri ve belirtilen IDictionary<TKey,TValue> zaman aşımı aralığıyla zaman uyumlu olarak çağırır.
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)
Parametreler
- inputs
- IDictionary<String,Object>
Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.
- timeout
- TimeSpan
İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.
Döndürülenler
İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.
Örnekler
Aşağıdaki örnek, iki WriteLine etkinlik ve bir dakika ile yapılandırılmış bir etkinlik içeren bir DelayDuration iş akışını çağırır. Bu iş akışı iki kez çağrılır; zaman aşımı aralığı iki dakika olan ilk ve 30 saniyelik zaman aşımı aralığıyla ikinci kez. İlk iş akışı başarıyla tamamlanır, ancak ikinci iş akışı tamamlanmaz ve oluşturulur TimeoutException ve aşağıdaki ileti görüntülenir.
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);
}
Giriş ve çıkış bağımsız değişkenleriyle kullanma Invoke
örneği için, zaman aşımı aralığı olmadan bu aşırı yüklemeyle Invoke aynı parametrelerle öğesinin aşırı yüklemesine bakın.
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .
Not
TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.
Şunlara uygulanır
Invoke(IDictionary<String,Object>)
Oluşturucuya WorkflowInvoker(Activity) geçirilen etkinliği belirtilen IDictionary<TKey,TValue> giriş parametreleriyle zaman uyumlu olarak çağırır.
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)
Parametreler
- inputs
- IDictionary<String,Object>
Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.
Döndürülenler
İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.
Örnekler
Aşağıdaki örnekte, iki giriş bağımsız değişkeni ve iki çıkış bağımsız değişkeni olan tek Divide
bir etkinlik içeren bir iş akışı çağrılır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments
değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke
döndürdüğünde, her çıkış bağımsız değişkeni sözlükte outputs
döndürülür ve bağımsız değişken adıyla da anahtarlanır.
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"]);
İş akışı veya gibi öğesinden ActivityWithResulttüretiliyorsa ve iyi tanımlanmış Result çıkış bağımsız değişkenine ek olarak çıkış bağımsız değişkenleri varsa, ek bağımsız değişkenleri almak için bunun gibi genel olmayan bir aşırı yükleme Invoke
CodeActivity<TResult>
kullanılmalıdır.Activity<TResult>
Bunu yapmak için oluşturucuya WorkflowInvoker
geçirilen iş akışı tanımı türünde Activityolmalıdır. Bu örnekte Divide
etkinlik , 'den CodeActivity<int>
türetilir, ancak tek bir dönüş değeri yerine bağımsız değişkenlerin sözlüğünü döndüren bu aşırı yüklemesinin Invoke
kullanılması için olarak Activity bildirilir.
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"]);
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.
Şunlara uygulanır
Invoke(Activity)
Belirtilen iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır.
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)
Parametreler
- workflow
- Activity
Çağrılacak iş akışının iş akışı tanımı.
Döndürülenler
İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.
Örnekler
Aşağıdaki örnek, tek DiceRoll
bir etkinlik içeren bir iş akışını çağırır. Etkinlikte DiceRoll
zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardır. çağrısı Invoke
döndürdüğünde, her çıkış bağımsız değişkeni, bağımsız değişken adıyla anahtarlanan çıkış sözlüğünde döndürülür.
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"]);
İş akışının kök etkinliğinde çıkış bağımsız değişkeni yoksa veya konak tarafından gerekli değilse, bunlar göz ardı edilebilir. Aşağıdaki örnek, herhangi bir çıkış bağımsız değişkeni olmayan tek WriteLine bir etkinlik içeren bir iş akışını çağırır.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker.Invoke(wf);
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.
Şunlara uygulanır
Invoke()
Oluşturucuya geçirilen WorkflowInvoker(Activity) iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır.
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)
Döndürülenler
İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.
Örnekler
Aşağıdaki örnek, tek DiceRoll
bir etkinlik içeren bir iş akışını çağırır. Etkinlikte DiceRoll
zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardır. çağrısı Invoke
döndürdüğünde, her çıkış bağımsız değişkeni, bağımsız değişken adıyla anahtarlanan çıkış sözlüğünde döndürülür. oluşturucuya WorkflowInvoker
geçirilen iş akışı tanımı kullanılarak iş akışı iki kez çağrılır.
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"]);
İş akışının kök etkinliğinde çıkış bağımsız değişkeni yoksa veya konak tarafından gerekli değilse, bunlar göz ardı edilebilir. Aşağıdaki örnek, herhangi bir çıkış bağımsız değişkeni olmayan tek WriteLine bir etkinlik içeren bir iş akışını çağırır.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker invoker = new WorkflowInvoker(wf);
invoker.Invoke();
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.
Şunlara uygulanır
Invoke(TimeSpan)
Bir iş akışını belirtilen zaman aşımı aralığıyla zaman uyumlu olarak çağırır.
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)
Parametreler
- timeout
- TimeSpan
İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.
Döndürülenler
İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.
Örnekler
Aşağıdaki örnek, iki WriteLine etkinlik ve bir dakika ile yapılandırılmış bir etkinlik içeren bir DelayDuration iş akışını çağırır. Bu iş akışı iki kez çağrılır; zaman aşımı aralığı iki dakika olan ilk ve 30 saniyelik zaman aşımı aralığıyla ikinci kez. İlk iş akışı başarıyla tamamlanır, ancak ikinci iş akışı tamamlanmaz ve oluşturulur TimeoutException ve aşağıdaki ileti görüntülenir.
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);
}
Çıkış bağımsız değişkenleriyle kullanma Invoke
örneği için, zaman aşımı aralığı olmadan bu aşırı yüklemeyle Invoke aynı parametrelerle öğesinin aşırı yüklemesine bakın.
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .
Not
TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.
Şunlara uygulanır
Invoke<TResult>(Activity<TResult>)
Oluşturucuya geçirilen WorkflowInvoker(Activity) iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır.
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
Tür Parametreleri
- TResult
İş akışının türü.
Parametreler
- workflow
- Activity<TResult>
Çağrılacak iş akışının iş akışı tanımı. İş akışı tanımının öğesinden ActivityWithResulttüretilmesi gerekir.
Döndürülenler
Etkinliğin yürütülmesinin sonucuyla TResult türünde bir değer.
Örnekler
Aşağıdaki örnek, iki giriş bağımsız değişkeni olan tek Add
bir etkinlikten oluşan bir iş akışını çağırır ve bundan türetilirken CodeActivity<int>
iyi tanımlanmış Result bir çıkış bağımsız değişkeni vardır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments
değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke
döndürdüğünde, çıkış bağımsız değişkeninin Result değeri döndürülür.
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);
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.
Şunlara uygulanır
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>)
Belirtilen iş akışı tanımını ve IDictionary<TKey,TValue> giriş parametrelerini kullanarak bir iş akışını zaman uyumlu olarak çağırır.
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
Tür Parametreleri
- TResult
İş akışının türü.
Parametreler
- workflow
- Activity<TResult>
Çağrılacak iş akışının iş akışı tanımı.
- inputs
- IDictionary<String,Object>
Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.
Döndürülenler
Etkinliğin yürütülmesinin sonucuyla TResult türünde bir değer.
Örnekler
Aşağıdaki örnek, iki giriş bağımsız değişkeni olan tek Add
bir etkinlikten oluşan bir iş akışını çağırır ve bundan türetilirken CodeActivity<int>
iyi tanımlanmış Result bir çıkış bağımsız değişkeni vardır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments
değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke
döndürdüğünde, çıkış bağımsız değişkeninin Result değeri döndürülür.
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);
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.
Not
TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. Tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı, iş akışı boşta kalmazsa başarıyla tamamlanır.
Şunlara uygulanır
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan)
Belirtilen iş akışı tanımını, IDictionary<TKey,TValue> giriş parametrelerini ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.
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
Tür Parametreleri
- TResult
İş akışının türü.
Parametreler
- workflow
- Activity<TResult>
Çağrılacak iş akışının iş akışı tanımı.
- inputs
- IDictionary<String,Object>
Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.
- timeout
- TimeSpan
İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.
Döndürülenler
Etkinliğin yürütülmesinin sonucuyla TResult türünde bir değer.
Örnekler
Aşağıdaki örnek, iki giriş bağımsız değişkeni olan tek Add
bir etkinlikten oluşan bir iş akışını çağırır ve bundan türetilirken CodeActivity<int>
iyi tanımlanmış Result bir çıkış bağımsız değişkeni vardır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments
değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke
döndürdüğünde, çıkış bağımsız değişkeninin Result değeri döndürülür.
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);
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .
Not
TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. Tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı, iş akışı boşta kalmazsa başarıyla tamamlanır.
Şunlara uygulanır
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan)
Belirtilen iş akışı tanımını, giriş parametrelerini, IDictionary<TKey,TValue> ek çıkış parametrelerini IDictionary<TKey,TValue> ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.
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
Tür Parametreleri
- TResult
İş akışının türü.
Parametreler
- workflow
- Activity<TResult>
Çağrılacak iş akışının iş akışı tanımı.
- inputs
- IDictionary<String,Object>
Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.
- additionalOutputs
- IDictionary<String,Object>
İş akışının bağımsız değişken adıyla anahtarlanan ek çıkış parametrelerinin sözlüğü.
- timeout
- TimeSpan
İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.
Döndürülenler
Etkinliğin yürütülmesinin sonucuyla TResult türünde bir değer.
Örnekler
Aşağıdaki örnek, iki giriş bağımsız değişkeni olan tek Add
bir etkinlikten oluşan bir iş akışını çağırır ve bundan türetilirken CodeActivity<int>
iyi tanımlanmış Result bir çıkış bağımsız değişkeni vardır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments
değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke
döndürdüğünde, çıkış bağımsız değişkeninin Result değeri döndürülür.
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);
Açıklamalar
Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .
Not
TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. Tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı, iş akışı boşta kalmazsa başarıyla tamamlanır.