Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Çağdaş Davulcu
Çağdaş Davulcu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
6 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: 18’den aktivitesi aktivitesinden aktivitesinin butonuna condition declarative executecode ifelse ifelsebranch kodlari kontrol kosulu oldunuz. workflow .NET 3.x Çağdaş Davulcu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : .NET 3.x
Yayınlanma Tarihi : 15.1.2008
Okunma Sayısı : 23939
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 4.12.2024
Turhal Temizer
Mac OS/X Removing CUDA 4.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 4.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 4.12.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
WWF - Akış Kontrolü Aktivitelerinin Kullanımı - I
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Windows Workflow Foundation ile gelen Out-Of-The-Box aktivitelerini daha önceden sizlere açıklamıştım. Bundan sonraki 3 yazımda sizlere Out-Of-The-Box aktivitelerinin içerisinde yer alan akış kontrolü grubu altındaki aktivitelerinin özelliklerinden ve uygulamaya geçirilmesinden söz edeceğim. Bu 3 yazıdan ilkinin içerisinde IfElse, IfElseBrach ve ConditionalActivityGroup aktivitelerinden söz edeceğim.

Koşul Tipleri

Akış kontrolü aktivitelerinin çoğunda koşul kavramıyla karşılaştığımız için koşul tiplerine ayrı bir yer ayırdım. Windows Workflow Foundation teknolojisi 2 tip koşul bulunmaktadır. Bunlardan biri Code Condition ve diğeri Declarative Rule Condition’dır. Code Condition ve Declarative Rule Condition koşul mekanizmaları çalışma prensibi olarak aynı olsalar da uygulama biçimleri olarak birbirlerinden ayrılırlar. Eğer koşul tipini Code Condition olarak belirlerseniz, koşulu kod yazarak kontrol etmeniz gerekir. Koşul tipini Declarative Code Condition olarak belirlerseniz, koşulu kod yazmaya gerek kalmadan bizim için geliştirilmiş koşul editörü aracılığıyla kontrol işini yaparsınız. Declarative Code Condition şekliyle tanımladığınız koşullar .rules uzantılı xml tabanlı bir dosya içerisinde saklanırlar. Aşağıda .rules uzantılı dosyaya ait bir ekran görüntüsü bulunmaktadır.



IfElse ve IfElseBranch Activity

IfElse aktivitesinin ne olduğunu daha önce yazdığım bir yazıda açıklamış ve başka bir yazım içerisindeki örnek uygulama içerisinde de kullanımını göstermiştim. Tekrar üzerinden geçmem gerekirse, IfElse aktivitesi içerisinde dallar bulunduran bir karar mekanizmasıdır. Bu dalların her birine IfElseBranchActivity adı verilir. IfElse aktivitesi C# sözdizimi içerisindeki if anahtar kelimesinin yaptığı işi yapmaktadır.

Not: Not: uygulamaları Sequence Workflow Console Application üzerinde yapıyorum.

Code Condition Tanımlaması:

Workflow’un kod bölümüne geçin ve int tipinde, adı Yas olan bir özellik tanımlayın. Yas özelliğini koşul olarak kabul edip, uygulama içerisinde Yas özelliğinin değerini kontrol edeceğiz.
Toolbox üzerindeki IfElse aktivitesinden bir tane diyagram üzerine sürükleyip bırakın.
İlk IfElseBranch aktivitesini seçin ve özelliklerini açın. Bu aşamada Condition özelliğini Code Condition olarak belirleyin.



Condition özelliğini Code Condition olarak belirlediğinizde alt kısımda Conditon özelliği gözükecektir. Buraya bir metot adı yazın ve Enter butonuna basın. Bu işlem, yazdığınız metot içerisinde kontrol işlemini gerçekleştireceğiniz anlamına gelir.
Şimdi Condition özelliğine “YasiKontrolEt” yazın ve Enter butonuna basın.



Bu noktada YasiKontrolEt metodu içerisinde kontrol işlemini yapacağız ve duruma göre ConditionalEventArgs tipinde olan e parametresinin Result özelliğine sonucu arayacağız. Eğer Result özelliğine true değerini atarsanız kontrolün yapıldığı IfElseBranch aktivitesi çalıştırılır. Result özelliğine False değerini atarsanız diğer IfElseBranch aktivitesine geçiş yapılır. Biz burada Yas özelliğinin 18’den büyük olup olmadığını kontrol edeceğiz.



Birinci IfElseBranch aktivitesinin içerisine bir tane Code aktivitesi sürükleyip bırakın.
Birinci IfElseBranch aktivitesinin ExecuteCode özelliğine Kod1Calistir yazın ve Enter butonuna basın.
İkinci IfElseBranch aktivitesinin içerisine bir tane Code aktivitesi sürükleyip bırakın.
İkinci IfElseBranch aktivitesinin ExecuteCode özelliğine Kod2Calistir yazın ve Enter butonuna basın.
Aşağıdaki kodları yazın.



Böylelikle IfElse aktivitesinden oluşan workflow’unuzu tanımlamış oldunuz. Bu workflow eğer Yas özelliğinin değeri 18’den büyükse konsolda “Yasiniz 18’den büyük!!!” değilse “Yasiniz 18’den büyük!!! değil” mesajını gösteriyor.

Declarative Rule Condition Tanımlaması:

Workflow’un kod bölümüne geçin ve int tipinde, adı Yas olan bir özellik tanımlayın. Yas özelliğini koşul olarak kabul edip, uygulama içerisinde Yas özelliğinin değerini kontrol edeceğiz.
Toolbox üzerindeki IfElse aktivitesinden bir tane diyagram üzerine sürükleyip bırakın.
İlk IfElseBranch aktivitesini seçin ve özelliklerini açın. Bu aşamada Condition özelliğini Declarative Rule Condition olarak belirleyin.



Condition özelliğini Declarative Rule Condition olarak belirlediğinizde alt kısımda ConditonName özelliği gözükecektir. Buradaki solda gözüken butona basın ve Select Conditon penceresini açın.
Select Condition penceresindeki New butonuna basarak koşul tanımlamanızı sağlayacak olan Rule Condition Editor penceresini açın.
Bu pencere içerisinde daha önceden tanımladığımız Yas özelliğini kontrol eden bir deyim yazın.



Yukarıdaki pencerede Yas özelliğinin 18 olup olmadığını kontrol eden bir deyim yazdınız.
OK butonuna basın. Tekrar açılan Select Conditon penceresinde az önce tanımladığınız Condtion1 adlı koşulu seçin.



Select Condition penceresinde OK butonuna basarak koşul tanımlama işlemini sonlandırın.
Birinci IfElseBranch aktivitesinin içerisine bir tane Code aktivitesi sürükleyip bırakın.
Birinci IfElseBranch aktivitesinin ExecuteCode özelliğine Kod1Calistir yazın ve Enter butonuna basın.
İkinci IfElseBranch aktivitesinin içerisine bir tane Code aktivitesi sürükleyip bırakın.
İkinci IfElseBranch aktivitesinin ExecuteCode özelliğine Kod2Calistir yazın ve Enter butonuna basın.
Aşağıdaki kodları yazın.



Böylelikle IfElse aktivitesinden oluşan workflow’unuzu tanımlamış oldunuz. Bu workflow eğer Yas özelliğinin değeri 18’den büyükse konsolda “Yasiniz 18’den büyük!!!” değilse “Yasiniz 18’den büyük!!! değil” mesajını gösteriyor.

Sonuç olarak yukarıdaki iki yöntemden hangisini denerseniz deneyin, aşağıdaki diyagram görüntüsüne sahip olmanız gerekiyor. Eğer bir problemle karşılaştıysanız daha önceki yazılarımı okuyarak sorunu giderebilirsiniz.



Uygulamamızı Test Edelim:

Yukarıdaki adımları takip ederek Code Condition ya da Declarative Rule Condition koşul tanımlama yöntemleri ile IfElse ve IfElseBranch aktivitelerini workflow’unuz içerisinde tanımlayabilirsiniz.

Mevcut projeniz içerisindeki Program.cs dosyasını açın. Dosyayı açtığınızda aşağıdaki gibi bir ekran görüntüsü ile karşılaşacaksınız.



Program.cs içerisindeki Main metodunda yer alan WorkflowInstance tipinde olan instance değişkenin tanımlanmasından önceki bölüme aşağıdaki kodları yerleştirin.



Ctrl + F5 tuşlarına basarak uygulamanızı çalıştırın.



Böylelikle IfElse aktivitesinin düzgün çalıştığını test etmiş olduk.

ConditionalActivityGroup

IfElse aktivitesine çok benzeyen ConditionalActivityGroup, eğer birden fazla aktivite ile belirli koşullar altında çalışmanız gerekiyorsa, IfElse aktivitesinden çok ConditionalActivityGroup aktiviteyi tercih ederiz. Bulundurduğu alt aktiviteleri WhenCondition özelliğindeki koşula bakarak çalıştırıp çalıştırmayacağına karar verir. IfElse aktivitesinden farkı ise hem While hem de Paralel Activity gibi çalışmasıdır. İşlemleri Paralel aktivite mantığıyla çalıştırabilmesi, aynı koşulda çalışması gereken birden fazla aktiviteyi de eş zamanlı çalıştırabilme imkânı sağlamaktadır. Bu çalışma şeklinde içerisindeki koşullara göre, altındaki aktiviteleri çalıştırır. ConditionalActivityGroup, barındırdığı aktiviteleri UntilCondtion özelliğine değerler atamazsanız sonsuza kadar çalıştırmaya devam edecektir. Burada da bir sayaç tutmak mantıklı olacaktır.

ConditionalActivityGroup Tanımlaması:

Kod bölümüne geçin ve int tipinde Deger ve Sayac adında 2 özellik tanımlayın.
Akış diyagramı üzerine bir tane ConditionalActivityGroup sürükleyip bırakın.



“Drop Activities Here” yazan bölüme 3 tane Code aktivitesinden sürükleyip bırakın.



İlk Code aktivitesini seçin ve WhenCondition özelliğini Declarative Rule Condition olarak belirleyin. Daha sonra ConditionName özelliğinde gözüken butona tıklayarak Select Condition penceresine gelin.
New butonuna tıklayarak Rule Conditon Editor penceresine gelin ve aşağıdaki kodu yazın.



OK butonuna basın. Bundan sonraki aşamalar IfElse aktivitesi içerisinde de tanımlayabildiğimiz Declarative Rule Condition ile aynı aşamalar olduğu için devam ettirmiyorum.
İşlemleri yaptıktan sonra CodeActivity1 için koşulu tanımlamış oldunuz. Şimdi yapmanız gereken işlem CodeActivty1’in koşulu gerçekleştiğinde hangi kodun çalışacağını belirlemek. Bunun için CodeActivty1’i seçin ve ExecuteCode özelliğine Code1Calistir yazarak Enter butonuna basın. Böylelikle CodeActivity1 için bütün görüntülenen hataları gidermiş oldunuz.



CodeActivity2’yi seçin.WhenCondition özelliğinde   this.Deger > 10 && this.Deger <= 20 koşulunu tanımlayın. CodeActivity2’nin ExecuteCode özelliğine Code2Calistir yazarak Enter butonuna basın.
CodeActivity3’yi seçin.WhenCondition özelliğinde   this.Deger > 20 && this.Deger <= 30 koşulunu tanımlayın. CodeActivity3’ün ExecuteCode özelliğine Code3Calistir yazarak Enter butonuna basın.
Bu işlemleri yaptıktan sonra hiçbir hata ile karşılaşmayacaksınız. Aşağıdaki ekran görüntüsüne ulaşacaksınız.



Buradan sonra CodeActivityleri kodlamak kalıyor. Bunlar için aşağıdaki kodları yazın.



ConditionalActivityGroup’u seçin ve UntilCondition özelliğini Declarative Rule Condition olarak belirleyerek Select Condition penceresini açın.



New butonuna tıklayarak açtığınız Rule Condition Editor penceresinde aşağıdaki kodları yazın.



Bu koşulu UntilCondition olarak belirleyin. Böylelikle ConditionalActivityGroup’a ait çalışma sınırı koymuş oldunuz. Eğer bu koşulu koymazsanız, içeride yazılan kodlar devamlı çalıştırılacaktı. Aşağıda bu aşamadan sonra ConditionalActivityGroup’a ait özelliklerin ekran görüntüsü bulunmaktadır.



Bu aşamayı da bitirdiyseniz, ConditionalActivityGroup tanımlamasını da bitirmiş oldunuz. Şimdi tanımladığımız workflow’u test edelim.

Uygulamamızı Test Edelim:

Tanımladığımız ConditionalActivityGroup aktivitesini içerisinde bulunduran workflow’umuzu çalıştırarak test edelim. Test işlemini yapmak için aşağıdaki adımları izleyiniz.

Mevcut projeniz içerisindeki Program.cs dosyasını açın. Dosyayı açtığınızda aşağıdaki gibi bir ekran görüntüsü ile karşılaşacaksınız.



Program.cs içerisindeki Main metodunda yer alan WorkflowInstance tipinde olan instance değişkenin tanımlanmasından önceki bölüme aşağıdaki kodları yerleştirin.



Ctrl + F5 tuşlarına basarak uygulamayı çalıştırın.



Aynı sonucun iki kere gösterildiğini merak mı ediyorsunuz? Burada sayac değerini 0’dan başlatıyoruz. Ve Until koşulumuz > 1 olduğu durum. İlk olarak ConditionalActivityGrup 0 için çalıştırılıyor daha sonra 1 için çalıştırılıyor. Değer 2 olduğunda ConditionalActivityGrup aktivitesinin çalışması sonlanıyor.

Bu bölümde IfElse, IfElseBranch ve ConditionalActivityGroup aktivitelerini tanımış oldunuz. Out-Of-The-Box aktivitelerinden sizin için seçtiğim bu 3 aktivitelerin tanımlanmasını ve uygulanmasını da yazı içeriside tecrübe ettiniz. Bir sonraki yazımda sizlere While, Sequence ve InvokeWorkflow aktivitelerini anlatacağım. Yazı serimi takip ediyorsanız seviyenin giderek daha da arttığını fark edeceksiniz. Bu noktadan sonra Windows Workflow Foundation ile iligili temel seviye konulardan orta seviye konulara geçiş yapmış oldunuz.

Çağdaş Davulcu
[email protected]
Makale:
WWF - Akış Kontrolü Aktivitelerinin Kullanımı - I .NET 3.0 ve .NET 3.5 Özel Bölümü Çağdaş Davulcu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor