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
Visual Studio'yu açın ve Dosya menüsünden Yeni>Proje'yi seçin.
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.
Etkinlik Kitaplığı proje şablonunu seçin. Ad kutusuna yazın
NumberGuessWorkflowActivities
ve Tamam'a tıklayın.Çö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
Proje menüsünden Yeni Öğe Ekle'yi seçin.
Yüklü>Ortak Öğeler düğümünde İş Akışı'nı seçin. İş Akışı listesinden Kod Etkinliği'ni seçin.
Ad kutusuna yazın
ReadInt
ve Ekle'ye tıklayın.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
Etkinlik
ReadInt
, 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
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.Proje menüsünden Yeni Öğe Ekle'yi seçin.
Yüklü>Ortak Öğeler düğümünde İş Akışı'nı seçin. İş Akışı listesinden Etkinlik'i seçin.
Ad kutusuna yazın
Prompt
ve Ekle'ye tıklayın.Çözüm Gezgini'da Prompt.xaml dosyasına çift tıklayarak henüz görüntülenmediyse tasarımcıda görüntüleyin.
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.
Bağımsız Değişken Oluştur'a tıklayın.
Ad kutusuna yazın
BookmarkName
, 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.Bağımsız Değişken Oluştur'a tıklayın.
Yeni eklenen bağımsız değişkenin altındaki Ad kutusuna yazın
Result
, 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
Bağımsız Değişken Oluştur'a tıklayın.
Ad kutusuna yazın
Text
, 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
etkinliklerininPrompt
karşılık gelen bağımsız değişkenlerine bağlıdır.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.
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.
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.
Ö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 yazarakText
da ayarlanabilir.İpucu
Özellikler Penceresi görüntülenmiyorsa Görünüm menüsünden Özellikler Penceresi'ni seçin.
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.
Ö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.Ö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.Çö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.