Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aktivitas dapat berinteraksi dengan ekstensi aplikasi alur kerja yang memungkinkan host menyediakan fungsionalitas tambahan yang tidak dimodelkan secara eksplisit dalam alur kerja. Topik ini menjelaskan cara membuat dan menggunakan ekstensi untuk menghitung berapa kali aktivitas dijalankan.
Untuk menggunakan ekstensi aktivitas untuk menghitung eksekusi
Buka Visual Studio 2010. Pilih Baru, Proyek. Di node Visual C#, pilih Alur Kerja. Pilih Aplikasi Konsol Alur Kerja dari daftar templat. Beri nama proyek
Extensions. Pilih OK untuk membuat proyek.usingTambahkan direktif dalam file Program.cs untuk namespace System.Collections.Generic.using System.Collections.Generic;Dalam file Program.cs, buat kelas baru bernama ExecutionCountExtension. Kode berikut membuat ekstensi alur kerja yang melacak ID instans saat metode Register miliknya dipanggil.
// This extension collects a list of workflow Ids public class ExecutionCountExtension { IList<Guid> instances = new List<Guid>(); public int ExecutionCount { get { return this.instances.Count; } } public IEnumerable<Guid> InstanceIds { get { return this.instances; } } public void Register(Guid activityInstanceId) { if (!this.instances.Contains<Guid>(activityInstanceId)) { instances.Add(activityInstanceId); } } }Buat aktivitas yang menggunakan ExecutionCountExtension. Kode berikut mendefinisikan aktivitas yang mengambil objek ExecutionCountExtension dari runtime bahasa umum dan memanggil metode Register miliknya saat aktivitas dijalankan.
// Activity that consumes an extension provided by the host. If the extension is available // in the context, it will invoke (in this case, registers the Id of the executing workflow) public class MyActivity: CodeActivity { protected override void Execute(CodeActivityContext context) { ExecutionCountExtension ext = context.GetExtension<ExecutionCountExtension>(); if (ext != null) { ext.Register(context.WorkflowInstanceId); } } }Terapkan aktivitas dalam metode Utama file program.cs. Kode berikut berisi metode untuk menghasilkan dua alur kerja yang berbeda, menjalankan setiap alur kerja beberapa kali, dan menampilkan data yang dihasilkan yang dicakup dalam ekstensi.
class Program { // Creates a workflow that uses the activity that consumes the extension static Activity CreateWorkflow1() { return new Sequence { Activities = { new MyActivity() } }; } // Creates a workflow that uses two instances of the activity that consumes the extension static Activity CreateWorkflow2() { return new Sequence { Activities = { new MyActivity(), new MyActivity() } }; } static void Main(string[] args) { // create the extension ExecutionCountExtension executionCountExt = new ExecutionCountExtension(); // configure the first invoker and execute 3 times WorkflowInvoker invoker = new WorkflowInvoker(CreateWorkflow1()); invoker.Extensions.Add(executionCountExt); invoker.Invoke(); invoker.Invoke(); invoker.Invoke(); // configure the second invoker and execute 2 times WorkflowInvoker invoker2 = new WorkflowInvoker(CreateWorkflow2()); invoker2.Extensions.Add(executionCountExt); invoker2.Invoke(); invoker2.Invoke(); // show the data in the extension Console.WriteLine("Executed {0} times", executionCountExt.ExecutionCount); executionCountExt.InstanceIds.ToList().ForEach(i => Console.WriteLine("...{0}", i)); } }