Nasıl Yapılır: Etkinlik Oluşturma

Etkinlikler, WF'deki temel davranış birimidir. Bir etkinliğin yürütme mantığı yönetilen kodda veya diğer etkinlikler kullanılarak uygulanabilir. Bu konuda iki etkinliğin nasıl oluşturulacağı gösterilmektedir. İlk etkinlik, yürütme mantığını uygulamak için kod kullanan basit bir etkinliktir. İkinci etkinliğin uygulanması diğer etkinlikler kullanılarak tanımlanır. Bu etkinlikler öğreticideki aşağıdaki adımlarda kullanılır.

Etkinlik kitaplığı projesi oluşturma

  1. Visual Studio'yu açın ve Dosya menüsünden Yeni>Proje'yi seçin.

  2. Yeni Proje iletişim kutusundaki Yüklü kategorisinin altında Visual C#>İş Akışı (veya Visual Basic>İş Akışı) öğesini seçin.

    Not

    İş Akışı şablonu kategorisini görmüyorsanız Visual Studio'nun Windows Workflow Foundation bileşenini yüklemeniz gerekebilir. Yeni Proje iletişim kutusunun sol tarafındaki Visual Studio Yükleyicisi Aç bağlantısını seçin. Visual Studio Yükleyicisi'da Tek tek bileşenler sekmesini seçin. Ardından Geliştirme etkinlikleri kategorisinin altında Windows Workflow Foundation bileşenini seçin. Bileşeni yüklemek için Değiştir'i seçin.

  3. Etkinlik Kitaplığı proje şablonunu seçin. Ad kutusuna yazın NumberGuessWorkflowActivities ve Tamam'a tıklayın.

  4. Çözüm Gezgini'da Activity1.xaml öğesine sağ tıklayın ve Sil'i seçin. Onaylamak için Tamam'a tıklayın.

ReadInt etkinliğini oluşturma

  1. Proje menüsünden Yeni Öğe Ekle'yi seçin.

  2. Yüklü>Ortak Öğeler düğümünde İş Akışı'nı seçin. İş Akışı listesinden Kod Etkinliği'ni seçin.

  3. Ad kutusuna yazın ReadInt ve Ekle'ye tıklayın.

  4. Mevcut ReadInt tanımı aşağıdaki tanımla değiştirin.

    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 Exception("BookmarkName cannot be an Empty string.")
            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
    

    Not

    EtkinlikReadInt, kod etkinliği şablonu için varsayılan olan yerine CodeActivity'den NativeActivity<TResult> türetilir. CodeActivity<TResult>etkinliği bağımsız değişken CodeActivity<TResult> aracılığıyla Result kullanıma sunulan ancak yer işaretlerinin kullanımını desteklemeyen tek bir sonuç sağlarsa kullanılabilir, bu nedenle NativeActivity<TResult> kullanılır.

İstem etkinliğini oluşturma

  1. Projeyi oluşturmak için Ctrl+Shift B tuşlarına+basın. Projeyi oluşturmak, bu projedeki etkinliğin ReadInt bu adımdaki özel etkinliği oluşturmak için kullanılmasını sağlar.

  2. Proje menüsünden Yeni Öğe Ekle'yi seçin.

  3. Yüklü>Ortak Öğeler düğümünde İş Akışı'nı seçin. İş Akışı listesinden Etkinlik'i seçin.

  4. Ad kutusuna yazın Prompt ve Ekle'ye tıklayın.

  5. Çözüm Gezgini'da Prompt.xaml dosyasına çift tıklayarak henüz görüntülenmediyse tasarımcıda görüntüleyin.

  6. Bağımsız Değişkenler bölmesini görüntülemek için etkinlik tasarımcısının sol alt tarafındaki Bağımsız Değişkenler'e tıklayın.

  7. Bağımsız Değişken Oluştur'a tıklayın.

  8. Ad kutusuna yazınBookmarkName, Yön açılan listesinden In'i seçin, Bağımsız değişken türü açılan listesinden Dize'yi seçin ve ardından enter tuşuna basarak bağımsız değişkeni kaydedin.

  9. Bağımsız Değişken Oluştur'a tıklayın.

  10. Yeni eklenen bağımsız değişkenin altındaki Ad kutusuna yazınResult, Yön açılan listesinden Dışarı'yı seçin, Bağımsız değişken türü açılan listesinden Int32'yi seçin ve enter tuşuna basın.BookmarkName

  11. Bağımsız Değişken Oluştur'a tıklayın.

  12. Ad kutusuna yazınText, Yön açılan listesinden In'i seçin, Bağımsız değişken türü açılan listesinden Dize'yi seçin ve ardından enter tuşuna basarak bağımsız değişkeni kaydedin.

    Bu üç bağımsız değişken, aşağıdaki adımlarda WriteLine etkinliğe eklenen ve ReadInt etkinliklerinin Prompt karşılık gelen bağımsız değişkenlerine bağlıdır.

  13. Etkinlik tasarımcısının sol alt tarafındaki Bağımsız Değişkenler'e tıklayarak Bağımsız Değişkenler bölmesini kapatın.

  14. Bir Sıralı etkinliği Araç Kutusu'nun Denetim Akışı bölümünden sürükleyin ve prompt etkinlik tasarımcısının Buradaki Bırakma etkinliği etiketine bırakın.

    İpucu

    Araç Kutusu penceresi görüntülenmiyorsa, Görünüm menüsünden Araç Kutusu'nu seçin.

  15. Bir WriteLine etkinliğini Araç Kutusu'nun Temel Öğeler bölümünden sürükleyin ve Sıra etkinliğinin Buradaki Bırakma etkinliği etiketine bırakın.

  16. Özellikler penceresinde C# ifadesi girin veya VB ifadesi girin kutusuna yazıp Text Sekme tuşuna iki kez basarak WriteLine etkinliğinin Metin bağımsız değişkenini İstem etkinliğinin Metin bağımsız değişkenine bağlayın. Bu, IntelliSense liste üyeleri penceresini kapatır ve seçimi özelliğin dışına taşıyarak özellik değerini kaydeder. Bu özellik, etkinliğin kendisinde C# ifadesi girin veya VB ifadesi girin kutusuna yazarak Text da ayarlanabilir.

    İpucu

    Özellikler Penceresi görüntülenmiyorsa Görünüm menüsünden Özellikler Penceresi'ni seçin.

  17. Bir ReadInt etkinliğini Araç Kutusu'nun NumberGuessWorkflowActivities bölümünden sürükleyin ve WriteLine etkinliğini takip edebilmesi için Sıra etkinliğine bırakın.

  18. Özellikler Penceresi'ndeki BookmarkName bağımsız değişkeninin sağındaki VB ifadesi girin kutusuna yazarak BookmarkName ReadInt etkinliğinin BookmarkName bağımsız değişkenini Prompt etkinliğinin BookmarkName bağımsız değişkenine bağlayın ve ardından Sekme tuşuna iki kez basarak IntelliSense liste üyeleri penceresini kapatın ve özelliği kaydedin.

  19. Özellikler Penceresi'ndeki Sonuç bağımsız değişkeninin sağındaki VB ifade girin kutusuna yazarak Result ReadInt etkinliğinin Sonuç bağımsız değişkenini İstem etkinliğinin Sonuç bağımsız değişkenine bağlayın ve ardından Sekme tuşuna iki kez basın.

  20. Çözümü oluşturmak için Ctrl+Shift B tuşlarına+basın.

Sonraki adımlar

Bu etkinlikleri kullanarak iş akışı oluşturma yönergeleri için öğreticinin bir sonraki adımı olan Nasıl yapılır: İş Akışı Oluşturma bölümüne bakın.

Ayrıca bkz.