WorkflowInvoker.Invoke Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memanggil alur kerja secara sinkron dan mengembalikan kamus aktivitas OutArgument akar dan InOutArgument nilai yang dikunci oleh nama argumen yang mewakili output alur kerja.
Overload
Invoke(Activity, IDictionary<String,Object>, TimeSpan) |
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan, IDictionary<TKey,TValue> parameter input, dan interval waktu habis. |
Invoke(Activity, TimeSpan) |
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan dan interval waktu habis. |
Invoke(Activity, IDictionary<String,Object>) |
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan dan IDictionary<TKey,TValue> parameter input. |
Invoke(IDictionary<String,Object>, TimeSpan) |
Memanggil aktivitas yang diteruskan ke WorkflowInvoker(Activity) konstruktor secara sinkron dengan parameter input yang ditentukan IDictionary<TKey,TValue> dan interval waktu habis yang ditentukan. |
Invoke(IDictionary<String,Object>) |
Memanggil aktivitas yang diteruskan ke WorkflowInvoker(Activity) konstruktor secara sinkron dengan parameter input yang ditentukan IDictionary<TKey,TValue> . |
Invoke(Activity) |
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan. |
Invoke() |
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang diteruskan ke WorkflowInvoker(Activity) konstruktor. |
Invoke(TimeSpan) |
Memanggil alur kerja secara sinkron dengan interval waktu habis yang ditentukan. |
Invoke<TResult>(Activity<TResult>) |
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang diteruskan ke WorkflowInvoker(Activity) konstruktor. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>) |
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan dan IDictionary<TKey,TValue> parameter input. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan) |
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan, IDictionary<TKey,TValue> parameter input, dan interval waktu habis. |
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan) |
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan, IDictionary<TKey,TValue> parameter input, IDictionary<TKey,TValue> parameter output tambahan, dan interval waktu habis. |
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Untuk mengonfigurasi interval waktu habis di mana alur kerja harus selesai, gunakan salah Invoke satu kelebihan beban yang mengambil TimeSpan.
Invoke(Activity, IDictionary<String,Object>, TimeSpan)
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan, IDictionary<TKey,TValue> parameter input, dan interval waktu habis.
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
Definisi alur kerja dari alur kerja yang akan dipanggil.
- inputs
- IDictionary<String,Object>
Kamus parameter input ke alur kerja, di-keyed by argument name.
- timeout
- TimeSpan
Interval di mana alur kerja harus selesai sebelum dibatalkan dan TimeoutException dilemparkan.
Mengembalikan
Kamus aktivitas OutArgument akar dan InOutArgument nilai yang dikuntah oleh nama argumen yang mewakili output alur kerja.
Contoh
Contoh berikut memanggil alur kerja yang berisi dua WriteLine aktivitas dan aktivitas yang Delay dikonfigurasi dengan Duration satu menit. Alur kerja ini dipanggil dua kali; pertama kali dengan interval waktu habis dua menit, dan kedua kalinya dengan interval waktu habis 30 detik. Alur kerja pertama berhasil diselesaikan, tetapi yang kedua tidak dan dilemparkan TimeoutException .
Activity wf = new Sequence()
{
Activities =
{
new WriteLine()
{
Text = "Before the 1 minute delay."
},
new Delay()
{
Duration = TimeSpan.FromMinutes(1)
},
new WriteLine()
{
Text = "After the 1 minute delay."
}
}
};
// This workflow completes successfully.
WorkflowInvoker.Invoke(wf, TimeSpan.FromMinutes(2));
// This workflow does not complete and a TimeoutException
// is thrown.
try
{
WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
Console.WriteLine(ex.Message);
}
Untuk contoh penggunaan Invoke
dengan argumen input dan output, lihat kelebihan beban Invoke dengan parameter yang sama dengan kelebihan beban ini tanpa interval waktu habis.
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Jika alur kerja tidak selesai dalam interval waktu habis yang ditentukan, alur kerja dibatalkan dan TimeoutException dilemparkan.
Catatan
TimeoutException hanya ditampilkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval waktu habis yang ditentukan untuk diselesaikan dengan sukses jika alur kerja tidak menjadi diam.
Berlaku untuk
Invoke(Activity, TimeSpan)
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan dan interval waktu habis.
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
Definisi alur kerja dari alur kerja yang akan dipanggil.
- timeout
- TimeSpan
Interval di mana alur kerja harus selesai sebelum dibatalkan dan TimeoutException dilemparkan.
Mengembalikan
Kamus aktivitas OutArgument akar dan InOutArgument nilai yang dikuntah oleh nama argumen yang mewakili output alur kerja.
Contoh
Contoh berikut memanggil alur kerja yang berisi dua WriteLine aktivitas dan aktivitas yang Delay dikonfigurasi dengan Duration satu menit. Alur kerja ini dipanggil dua kali; pertama kali dengan interval waktu habis dua menit, dan kedua kalinya dengan interval waktu habis 30 detik. Alur kerja pertama berhasil diselesaikan, tetapi yang kedua tidak dan dilemparkan TimeoutException .
Activity wf = new Sequence()
{
Activities =
{
new WriteLine()
{
Text = "Before the 1 minute delay."
},
new Delay()
{
Duration = TimeSpan.FromMinutes(1)
},
new WriteLine()
{
Text = "After the 1 minute delay."
}
}
};
// This workflow completes successfully.
WorkflowInvoker.Invoke(wf, TimeSpan.FromMinutes(2));
// This workflow does not complete and a TimeoutException
// is thrown.
try
{
WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
Console.WriteLine(ex.Message);
}
Untuk contoh penggunaan Invoke
dengan argumen output, lihat kelebihan beban Invoke dengan parameter yang sama dengan kelebihan beban ini tanpa interval waktu habis.
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Jika alur kerja tidak selesai dalam interval waktu habis yang ditentukan, alur kerja dibatalkan dan TimeoutException dilemparkan.
Catatan
TimeoutException hanya ditampilkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval waktu habis yang ditentukan untuk diselesaikan dengan sukses jika alur kerja tidak menjadi diam.
Berlaku untuk
Invoke(Activity, IDictionary<String,Object>)
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan dan IDictionary<TKey,TValue> parameter input.
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
Definisi alur kerja dari alur kerja yang akan dipanggil.
- inputs
- IDictionary<String,Object>
Kamus parameter input ke alur kerja, di-keyed by argument name.
Mengembalikan
Kamus aktivitas OutArgument akar dan InOutArgument nilai yang dikuntah oleh nama argumen yang mewakili output alur kerja.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari aktivitas Divide
tunggal yang memiliki dua argumen input dan dua argumen output. Saat alur kerja dipanggil, kamus arguments
diteruskan yang berisi nilai untuk setiap argumen input, dikunci dengan nama argumen. Saat panggilan ke Invoke
kembali, setiap argumen output dikembalikan dalam kamus outputs
, juga dikunci dengan nama argumen.
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"]);
Jika alur kerja berasal dari ActivityWithResult, seperti CodeActivity<TResult>
atau Activity<TResult>
, dan ada argumen output selain argumen output yang ditentukan Result dengan baik, kelebihan beban Invoke
non-generik dari , seperti ini, harus digunakan untuk mengambil argumen tambahan. Untuk melakukannya, definisi alur kerja yang diteruskan ke Invoke
harus berjenis Activity. Dalam contoh Divide
ini aktivitas berasal dari CodeActivity<int>
, tetapi dinyatakan sebagai Activity sehingga kelebihan beban Invoke
, yang mengembalikan kamus argumen alih-alih nilai pengembalian tunggal, digunakan.
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"]);
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Untuk mengonfigurasi interval waktu habis di mana alur kerja harus selesai, gunakan salah Invoke satu kelebihan beban yang mengambil TimeSpan.
Berlaku untuk
Invoke(IDictionary<String,Object>, TimeSpan)
Memanggil aktivitas yang diteruskan ke WorkflowInvoker(Activity) konstruktor secara sinkron dengan parameter input yang ditentukan IDictionary<TKey,TValue> dan interval waktu habis yang ditentukan.
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>
Kamus parameter input ke alur kerja, di-keyed by argument name.
- timeout
- TimeSpan
Interval di mana alur kerja harus selesai sebelum dibatalkan dan TimeoutException dilemparkan.
Mengembalikan
Kamus aktivitas OutArgument akar dan InOutArgument nilai yang dikuntah oleh nama argumen yang mewakili output alur kerja.
Contoh
Contoh berikut memanggil alur kerja yang berisi dua WriteLine aktivitas dan aktivitas yang Delay dikonfigurasi dengan Duration satu menit. Alur kerja ini dipanggil dua kali; pertama kali dengan interval waktu habis dua menit, dan kedua kalinya dengan interval waktu habis 30 detik. Alur kerja pertama berhasil diselesaikan, tetapi yang kedua tidak dan TimeoutException dilemparkan dan pesan berikut ditampilkan.
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);
}
Untuk contoh penggunaan Invoke
dengan argumen input dan output, lihat kelebihan beban Invoke dengan parameter yang sama dengan kelebihan beban ini tanpa interval waktu habis.
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Jika alur kerja tidak selesai dalam interval waktu habis yang ditentukan, alur kerja dibatalkan dan TimeoutException dilemparkan.
Catatan
TimeoutException hanya ditampilkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval waktu habis yang ditentukan untuk diselesaikan dengan sukses jika alur kerja tidak menjadi diam.
Berlaku untuk
Invoke(IDictionary<String,Object>)
Memanggil aktivitas yang diteruskan ke WorkflowInvoker(Activity) konstruktor secara sinkron dengan parameter input yang ditentukan IDictionary<TKey,TValue> .
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>
Kamus parameter input ke alur kerja, di-keyed by argument name.
Mengembalikan
Kamus aktivitas OutArgument akar dan InOutArgument nilai yang dikuntah oleh nama argumen yang mewakili output alur kerja.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari aktivitas Divide
tunggal yang memiliki dua argumen input dan dua argumen output. Saat alur kerja dipanggil, kamus arguments
diteruskan yang berisi nilai untuk setiap argumen input, dikunci dengan nama argumen. Saat panggilan ke Invoke
kembali, setiap argumen output dikembalikan dalam kamus outputs
, juga dikunci dengan nama argumen.
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"]);
Jika alur kerja berasal dari ActivityWithResult, seperti CodeActivity<TResult>
atau Activity<TResult>
, dan ada argumen output selain argumen output yang ditentukan Result dengan baik, kelebihan beban Invoke
non-generik dari , seperti ini, harus digunakan untuk mengambil argumen tambahan. Untuk melakukan ini, definisi alur kerja yang diteruskan ke WorkflowInvoker
konstruktor harus berjenis Activity. Dalam contoh Divide
ini aktivitas berasal dari CodeActivity<int>
, tetapi dinyatakan sebagai Activity sehingga kelebihan beban Invoke
, yang mengembalikan kamus argumen alih-alih nilai pengembalian tunggal, digunakan.
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"]);
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Untuk mengonfigurasi interval waktu habis di mana alur kerja harus selesai, gunakan salah Invoke satu kelebihan beban yang mengambil TimeSpan.
Berlaku untuk
Invoke(Activity)
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan.
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
Definisi alur kerja dari alur kerja yang akan dipanggil.
Mengembalikan
Kamus aktivitas OutArgument akar dan InOutArgument nilai yang dikuntah oleh nama argumen yang mewakili output alur kerja.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari satu DiceRoll
aktivitas. Aktivitas DiceRoll
memiliki dua argumen output yang mewakili hasil operasi pelemparan dadu. Ketika panggilan ke Invoke
kembali, setiap argumen output dikembalikan dalam kamus output, dikuntangani oleh nama argumen.
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"]);
Jika aktivitas akar alur kerja tidak memiliki argumen output atau tidak diperlukan oleh host, mereka dapat diabaikan. Contoh berikut memanggil alur kerja yang terdiri dari satu WriteLine aktivitas yang tidak memiliki argumen output apa pun.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker.Invoke(wf);
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Untuk mengonfigurasi interval waktu habis di mana alur kerja harus selesai, gunakan salah Invoke satu kelebihan beban yang mengambil TimeSpan.
Berlaku untuk
Invoke()
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang diteruskan ke WorkflowInvoker(Activity) konstruktor.
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)
Mengembalikan
Kamus aktivitas OutArgument akar dan InOutArgument nilai yang dikuntah oleh nama argumen yang mewakili output alur kerja.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari satu DiceRoll
aktivitas. Aktivitas DiceRoll
memiliki dua argumen output yang mewakili hasil operasi pelemparan dadu. Ketika panggilan ke Invoke
kembali, setiap argumen output dikembalikan dalam kamus output, dikuntangani oleh nama argumen. Alur kerja dipanggil dua kali, menggunakan definisi alur kerja yang diteruskan ke WorkflowInvoker
konstruktor.
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"]);
Jika aktivitas akar alur kerja tidak memiliki argumen output atau tidak diperlukan oleh host, mereka dapat diabaikan. Contoh berikut memanggil alur kerja yang terdiri dari satu WriteLine aktivitas yang tidak memiliki argumen output apa pun.
Activity wf = new WriteLine
{
Text = "Hello World."
};
WorkflowInvoker invoker = new WorkflowInvoker(wf);
invoker.Invoke();
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Untuk mengonfigurasi interval waktu habis di mana alur kerja harus selesai, gunakan salah Invoke satu kelebihan beban yang mengambil TimeSpan.
Berlaku untuk
Invoke(TimeSpan)
Memanggil alur kerja secara sinkron dengan interval waktu habis yang ditentukan.
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
Interval di mana alur kerja harus selesai sebelum dibatalkan dan TimeoutException dilemparkan.
Mengembalikan
Kamus aktivitas OutArgument akar dan InOutArgument nilai yang dikuntah oleh nama argumen yang mewakili output alur kerja.
Contoh
Contoh berikut memanggil alur kerja yang berisi dua WriteLine aktivitas dan aktivitas yang Delay dikonfigurasi dengan Duration satu menit. Alur kerja ini dipanggil dua kali; pertama kali dengan interval waktu habis dua menit, dan kedua kalinya dengan interval waktu habis 30 detik. Alur kerja pertama berhasil diselesaikan, tetapi yang kedua tidak dan TimeoutException dilemparkan dan pesan berikut ditampilkan.
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);
}
Untuk contoh penggunaan Invoke
dengan argumen output, lihat kelebihan beban Invoke dengan parameter yang sama dengan kelebihan beban ini tanpa interval waktu habis.
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Jika alur kerja tidak selesai dalam interval waktu habis yang ditentukan, alur kerja dibatalkan dan TimeoutException dilemparkan.
Catatan
TimeoutException hanya ditampilkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval waktu habis yang ditentukan untuk diselesaikan dengan sukses jika alur kerja tidak menjadi diam.
Berlaku untuk
Invoke<TResult>(Activity<TResult>)
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang diteruskan ke WorkflowInvoker(Activity) konstruktor.
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
Jenis parameter
- TResult
Jenis alur kerja.
Parameter
- workflow
- Activity<TResult>
Definisi alur kerja dari alur kerja yang akan dipanggil. Definisi alur kerja perlu berasal dari ActivityWithResult.
Mengembalikan
Nilai jenis TResult dengan hasil eksekusi aktivitas.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari satu Add
aktivitas yang memiliki dua argumen input dan karena berasal darinya CodeActivity<int>
memiliki satu argumen output yang terdefinisi Result dengan baik. Saat alur kerja dipanggil, kamus arguments
diteruskan yang berisi nilai untuk setiap argumen input, dikunci dengan nama argumen. Saat panggilan untuk Invoke
kembali, nilai Result argumen output dikembalikan.
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);
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Untuk mengonfigurasi interval waktu habis di mana alur kerja harus selesai, gunakan salah Invoke satu kelebihan beban yang mengambil TimeSpan.
Berlaku untuk
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>)
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan dan IDictionary<TKey,TValue> parameter input.
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
Jenis parameter
- TResult
Jenis alur kerja.
Parameter
- workflow
- Activity<TResult>
Definisi alur kerja dari alur kerja yang akan dipanggil.
- inputs
- IDictionary<String,Object>
Kamus parameter input ke alur kerja, di-keyed by argument name.
Mengembalikan
Nilai jenis TResult dengan hasil eksekusi aktivitas.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari satu Add
aktivitas yang memiliki dua argumen input dan karena berasal darinya CodeActivity<int>
memiliki satu argumen output yang terdefinisi Result dengan baik. Saat alur kerja dipanggil, kamus arguments
diteruskan yang berisi nilai untuk setiap argumen input, dikunci dengan nama argumen. Saat panggilan untuk Invoke
kembali, nilai Result argumen output dikembalikan.
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);
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Untuk mengonfigurasi interval waktu habis di mana alur kerja harus selesai, gunakan salah Invoke satu kelebihan beban yang mengambil TimeSpan.
Catatan
TimeoutException hanya ditampilkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval waktu habis yang ditentukan untuk diselesaikan, berhasil diselesaikan jika alur kerja tidak menjadi menganggur.
Berlaku untuk
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan)
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan, IDictionary<TKey,TValue> parameter input, dan interval waktu habis.
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
Jenis parameter
- TResult
Jenis alur kerja.
Parameter
- workflow
- Activity<TResult>
Definisi alur kerja dari alur kerja yang akan dipanggil.
- inputs
- IDictionary<String,Object>
Kamus parameter input ke alur kerja, di-keyed by argument name.
- timeout
- TimeSpan
Interval di mana alur kerja harus selesai sebelum dibatalkan dan TimeoutException dilemparkan.
Mengembalikan
Nilai jenis TResult dengan hasil eksekusi aktivitas.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari satu Add
aktivitas yang memiliki dua argumen input dan karena berasal darinya CodeActivity<int>
memiliki satu argumen output yang terdefinisi Result dengan baik. Saat alur kerja dipanggil, kamus arguments
diteruskan yang berisi nilai untuk setiap argumen input, dikunci dengan nama argumen. Saat panggilan untuk Invoke
kembali, nilai Result argumen output dikembalikan.
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);
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Jika alur kerja tidak selesai dalam interval waktu habis yang ditentukan, alur kerja dibatalkan dan TimeoutException dilemparkan.
Catatan
TimeoutException hanya ditampilkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval waktu habis yang ditentukan untuk diselesaikan, berhasil diselesaikan jika alur kerja tidak menjadi menganggur.
Berlaku untuk
Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan)
Memanggil alur kerja secara sinkron menggunakan definisi alur kerja yang ditentukan, IDictionary<TKey,TValue> parameter input, IDictionary<TKey,TValue> parameter output tambahan, dan interval waktu habis.
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
Jenis parameter
- TResult
Jenis alur kerja.
Parameter
- workflow
- Activity<TResult>
Definisi alur kerja dari alur kerja yang akan dipanggil.
- inputs
- IDictionary<String,Object>
Kamus parameter input ke alur kerja, di-keyed by argument name.
- additionalOutputs
- IDictionary<String,Object>
Kamus parameter output tambahan dari alur kerja, yang di-key oleh nama argumen.
- timeout
- TimeSpan
Interval di mana alur kerja harus selesai sebelum dibatalkan dan TimeoutException dilemparkan.
Mengembalikan
Nilai jenis TResult dengan hasil eksekusi aktivitas.
Contoh
Contoh berikut memanggil alur kerja yang terdiri dari satu Add
aktivitas yang memiliki dua argumen input dan karena berasal darinya CodeActivity<int>
memiliki satu argumen output yang terdefinisi Result dengan baik. Saat alur kerja dipanggil, kamus arguments
diteruskan yang berisi nilai untuk setiap argumen input, dikunci dengan nama argumen. Saat panggilan untuk Invoke
kembali, nilai Result argumen output dikembalikan.
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);
Keterangan
Metode ini memblokir hingga alur kerja selesai, termasuk waktu menganggur. Semua eksekusi alur kerja dijamin akan dijalankan pada utas pemanggilan. Jika alur kerja tidak selesai dalam interval waktu habis yang ditentukan, alur kerja dibatalkan dan TimeoutException dilemparkan.
Catatan
TimeoutException hanya ditampilkan jika interval waktu habis dan alur kerja menjadi tidak aktif selama eksekusi. Alur kerja yang membutuhkan waktu lebih lama dari interval waktu habis yang ditentukan untuk diselesaikan, berhasil diselesaikan jika alur kerja tidak menjadi menganggur.