Bagikan melalui


Cara: Membuat Aktivitas

Aktivitas adalah unit inti perilaku dalam WF. Logika eksekusi aktivitas dapat diimplementasikan dalam kode terkelola atau dapat diimplementasikan dengan menggunakan aktivitas lain. Topik ini menunjukkan cara membuat dua aktivitas. Aktivitas pertama adalah aktivitas sederhana yang menggunakan kode untuk mengimplementasikan logika eksekusinya. Implementasi aktivitas kedua didefinisikan dengan menggunakan kegiatan lain. Aktivitas ini digunakan dalam langkah-langkah berikut dalam tutorial.

Membuat proyek pustaka aktivitas

  1. Buka Visual Studio dan pilih Baru>Project dari menu File.

  2. Dalam dialog Project Baru, di bawah kategori Terpasang, pilih Visual C#>Alur Kerja (atau Visual Basic>Alur Kerja).

    Catatan

    Jika Anda tidak melihat kategori templat Alur Kerja, Anda mungkin perlu memasang komponen Visual Studio Windows Workflow Foundation. Pilih link Buka Alat Penginstal Visual Studio di sisi kiri dialog Project Baru. Di Alat Penginstal Visual Studio, pilih tab Komponen individual. Kemudian, di bawah kategori Aktivitas pengembangan, pilih komponen Windows Workflow Foundation. Pilih Modifikasi untuk memasang komponen yang dipilih.

  3. Pilih templat proyek Pustaka Aktivitas. Ketik NumberGuessWorkflowActivities dalam kotak Nama lalu klik OK.

  4. Klik kanan Activity1.xaml di Penjelajah Solusi dan pilih Hapus. Klik OK untuk mengonfirmasi.

Membuat aktivitas ReadInt

  1. Pilih Tambahkan Item Baru dari menu Project.

  2. Di simpul Item Umum>Terpasang, pilih Alur Kerja. Pilih Aktivitas Kode dari daftar Alur Kerja.

  3. Ketik ReadInt ke dalam kotak Nama lalu klik Tambahkan.

  4. Ganti definisi yang ada ReadInt dengan definisi berikut.

    public sealed class ReadInt : NativeActivity<int>
    {
        [RequiredArgument]
        public InArgument<string> BookmarkName { get; set; }
    
        protected override void Execute(NativeActivityContext context)
        {
            string name = BookmarkName.Get(context);
    
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentException("BookmarkName cannot be an Empty string.",
                    "context");
            }
    
            context.CreateBookmark(name, new BookmarkCallback(OnReadComplete));
        }
    
        // NativeActivity derived activities that do asynchronous operations by calling
        // one of the CreateBookmark overloads defined on System.Activities.NativeActivityContext
        // must override the CanInduceIdle property and return true.
        protected override bool CanInduceIdle
        {
            get { return true; }
        }
    
        void OnReadComplete(NativeActivityContext context, Bookmark bookmark, object state)
        {
            this.Result.Set(context, Convert.ToInt32(state));
        }
    }
    
    Public NotInheritable Class ReadInt
        Inherits NativeActivity(Of Integer)
    
        <RequiredArgument()>
        Property BookmarkName() As InArgument(Of String)
    
        Protected Overrides Sub Execute(ByVal context As NativeActivityContext)
            Dim name As String
            name = BookmarkName.Get(context)
    
            If name = String.Empty Then
                Throw New ArgumentException("BookmarkName cannot be an Empty string.",
                    "BookmarkName")
            End If
    
            context.CreateBookmark(name, New BookmarkCallback(AddressOf OnReadComplete))
        End Sub
    
        ' NativeActivity derived activities that do asynchronous operations by calling 
        ' one of the CreateBookmark overloads defined on System.Activities.NativeActivityContext 
        ' must override the CanInduceIdle property and return True.
        Protected Overrides ReadOnly Property CanInduceIdle As Boolean
            Get
                Return True
            End Get
        End Property
    
        Sub OnReadComplete(ByVal context As NativeActivityContext, ByVal bookmark As Bookmark, ByVal state As Object)
            Result.Set(context, Convert.ToInt32(state))
        End Sub
    
    End Class
    

    Catatan

    Aktivitas ReadInt berasal dari NativeActivity<TResult> alih-alih CodeActivity, yang merupakan default untuk templat aktivitas kode. CodeActivity<TResult> dapat digunakan jika aktivitas memberikan satu hasil, yang diekspos melalui argumen Result, tetapi CodeActivity<TResult> tidak mendukung penggunaan marka buku, sehingga NativeActivity<TResult> digunakan.

Membuat aktivitas Permintaan

  1. Tekan Ctrl+Shift+B untuk membangun proyek. Membangun proyek memungkinkan aktivitas ReadInt dalam proyek ini digunakan untuk membangun aktivitas kustom dari langkah ini.

  2. Pilih Tambahkan Item Baru dari menu Project.

  3. Di simpul Item Umum>Terpasang, pilih Alur Kerja. Pilih Aktivitas dari daftar Alur Kerja.

  4. Ketik Prompt ke dalam kotak Nama lalu klik Tambahkan.

  5. Klik dua kali Prompt.xaml di Penjelajah Solusi untuk menampilkannya di perancang jika belum ditampilkan.

  6. Klik Argumen di sisi kiri bawah perancang aktivitas untuk menampilkan panel Argumen.

  7. Klik Buat Argumen.

  8. Ketik BookmarkName ke dalam kotak Nama, pilih Masuk dari daftar drop-down Arah, pilih String dari daftar drop-down Jenis argumen, lalu tekan Enter untuk menyimpan argumen.

  9. Klik Buat Argumen.

  10. Ketik Result ke dalam kotak Nama yang berada di bawah argumen yang baru ditambahkan BookmarkName, pilih Keluar dari daftar drop-down Arah, pilih Int32 dari daftar drop-down Jenis argumen, lalu tekan Enter.

  11. Klik Buat Argumen.

  12. Ketik Text ke dalam kotak Nama, pilih Masuk dari daftar drop-down Arah, pilih String dari daftar drop-down Jenis argumen, lalu tekan Enter untuk menyimpan argumen.

    Ketiga argumen ini terikat pada argumen yang sesuai dari aktivitas WriteLine dan ReadInt yang ditambahkan ke aktivitas Prompt dalam langkah-langkah berikut.

  13. Klik Argumen di sebelah kiri bawah perancang aktivitas untuk menutup panel Argumen.

  14. Seret aktivitas Urutan dari bagian Kontrol FlowKotak Alat dan letakkan ke aktivitas Hilangkan di sini label perancang aktivitas Permintaan.

    Tip

    Jika jendela Kotak Alat tidak ditampilkan, pilih Kotak Alat dari menu Tampilan.

  15. Seret aktivitas WriteLine dari bagian Primitif kotak Alat dan letakkan ke aktivitas Hilangkan di sini label aktivitas Urutan.

  16. Ikat argumen Teks aktivitas WriteLine ke argumen Teks aktivitas Permintaan dengan mengetik Text ke dalam kotak Masukkan ekspresi C# atau Masukkan ekspresi VB di jendela Properti, lalu tekan tombol Tab dua kali. Hal ini menutup jendela daftar anggota IntelliSense dan menyimpan nilai properti dengan memindahkan pilihan dari properti. Properti ini juga dapat diatur dengan mengetik Text ke dalam kotak Masukkan ekspresi C# atau Masukkan ekspresi VB pada aktivitas itu sendiri.

    Tip

    Jika Jendela Properti tidak ditampilkan, pilih Jendela Properti dari menu Tampilan.

  17. Seret aktivitas ReadInt dari bagian NumberGuessWorkflowActivities di Kotak Alat dan letakkan dalam aktivitas Urutan sehingga mengikuti aktivitas WriteLine.

  18. Ikat argumen BookmarkName dari aktivitas ReadInt ke argumen BookmarkName aktivitas Prompt dengan mengetik BookmarkName ke dalam kotak Masukkan ekspresi VB di sebelah kanan argumen BookmarkName di Jendela Properti, lalu tekan tombol Tab dua kali untuk menutup jendela anggota daftar IntelliSense dan menyimpan properti.

  19. Ikat argumen Hasil aktivitas ReadInt ke argumen Hasil aktivitas Permintaan dengan mengetik Result ke dalam kotak Masukkan ekspresi VB di sebelah kanan argumen Hasil di Jendela Properti, lalu tekan tombol Tab dua kali.

  20. Tekan Ctrl+Shift+B untuk membuat aplikasi.

Langkah berikutnya

Untuk instruksi tentang cara membuat alur kerja dengan menggunakan aktivitas ini, lihat langkah berikutnya dalam tutorial, Cara: Membuat Alur Kerja.

Lihat juga