Ana içeriğe atla

WF - Conditions

.Net Frameowork 4.0 ile Windows Workflow Foundation iş akışı yapısının 4 sürümünün çıkışı çok yaklaşmışken biz WWF 3.x sürümleri yardımı ile iş akışı süreçlerini örnekler yardımı ile incelemeye devam ediyor olacağız. Bu güne kadar iş akışına temel bir giriş yaptık ve araç kutusunda yer alan iş akışı bileşenlerini nasıl kullanabileceğimizi tek tek incelemeye başladık. Bu inceleme işlemlerini örnekler ile zenginleştirerek ise bizlerin kullanımı esnasında dikkat edecek olduğumuz noktalara da değinmeye çalıştık. Bu formatta devam ederek Windows Workflow Foundation ile Condition (Koşul) kavramını inceliyor olacağız.

Condition denildiği zaman aklımıza While ve IfElseBranchActivity bileşenlerinde süreci durduracak ya da başka bir işlem yapmamıza olanak tanıyacak bir kriter olarak gelmektedir. bir önceki Parallel Activity yazımızda While döngüsüne denk gelen aktivite bileşenini kullanırken kısmen bu özelliği nasıl kullanabileceğimize kısaca göz atma fırsatı bulduk. Ancak Condition 'ı tamamen nasıl kullanabileceğimizi bu yazımızın içerisinde kullanıyor olacağız.

Şimdi Condition yapısını örnek üzerinde inceleyelim. Bu örneğimizi yaparken Visual Studio 2010 ide sini ve .Net Framework 3.0 sürümünü kullanıyor olacağız.

Uygulamayı geliştirmek için Sequential Workflow Console Application tasarımında proje oluşturduktan sonra ekrana bir adet While aktivitesi sürüklüyoruz.

WF,Conditions
Tasarım ekranı üzerine sağ tıklama yaptıktan sonra özellikler ekranından Condition değerleri verebileceğimiz bölüme ulaşabilmemiz mümkündür. Kullanabileceğimiz Condition tipleri iki adettir. Bunlar;
WF,Conditions şeklinde yer almaktadır. Bu koşul tiplerinden en hızlı çalışanı ve en çok tercih edileni Code Condition 'dır. Bizde koşulları incelerken ilk olarak kod üzerinden inceliyor olacağız.

Bu işlem için kod tarafına geçerek koşul olarak kullanacak olduğumuz rakam artışını sağlayan method hazırlıyoruz.

private int count;
private void ContinueLooping(object sender, ConditionalEventArgs args)
{
    args.Result = (count < 10);
}

Condition olarak kullanacak olduğumuz metodu hazırladıktan sonra tasarım ekranında While aktivitesinin içerisine ve aktivitenin sonuna olmak üzere iki tane kod aktivite ekliyor ve aşağıdaki kod parçalarını yazıyoruz.

private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
    Console.WriteLine("Merhaba {0}",count);
    count++;
}

private void codeActivity2_ExecuteCode(object sender, EventArgs e)
{
    Console.ReadLine();
}

Şimdi ise While Aktivitesine koşulu eklemeye sıra geldi. Bunun için özellikler ekranında condition özelliğine code condition seçeneğini seçtikten sonra Conditions özelliğine bizim oluşturmuş olduğumuz ContinueLooping() 'i gösteriyoruz.

WF,Conditions

Yapmış olduğumuz bu işlemler sonrasında koşulları da aktif olarak kullandığımız uygulamanın çalıştığı anki ekran görüntüsü aşağıdaki gibi olacaktır.

WF,Conditions

Kod yardımı ile oluşturmuş olduğumuz koşulu işlediğimizde sorunsuzca çalıştığını görmüş olduk. Kod koşulları dışında kullanabileceğimiz bir diğer seçenek ise kural bazlı koşullar (rule conditions) dır. Bu seçeneği kullandığımız durumlarda bir öncekinden farklı olarak koşulları girebileceğimiz bir ekran karşımıza çıkacak ve kriterimizi buraya girmiş olacağız. Bu yapmış olduğumuz değişiklikleri ve eklentileri arka plan Workflow Foundation xml içerisinde saklayarak bizim While ya da ifElseBranch aktivitelerini kullanacağımız durumlarda kullanmamıza olanak tanıyacaktır.

Kural bazlı aktiviteleri kullanmak için ilk yapılması gereken koşul kullanılacak olan aktivinin özelliklerinden ki bu bizim örneğimiz için while aktivitesi oluyor, Condition özelliğini Rule Condition olarak belirtiyoruz.

WF,Conditions

Condition tipi seçme işlemini tamamladıktan sonra ConditionName özelliğine istediğimiz herhangi bir değer verdikten sonra sağ tarafında yer alan butona tıklayarak kriterleri girecek olduğumuz ekranın açılmasına olanak tanıyoruz.

WF,Conditions

Yukarıdaki ekranda yapmış olduğumuz işlemlerden de görmüş olduğunuz üzere daha önceki örneğimizde kod yardımı ile oluşturmuş olduğumuz sayacın 10 dan ufak olana kadar çalışmasını sağlayan bir metot hazırlamış ve kullanmıştık. Bu kullanımda ise bu tür işlemler yapılmasına gerek yoktur. Eklenmiş olunan kriterlere istenen değerler atanarak While aktivitesinde sorunsuzca kullanılabildi. Ayrnıca karşımıza çıkan bu ekranın diğer özelliklerinden biri de başka kriterler ekleyebilir, bu kriterleri düzenleyebilir, silebilir ya da isimlerini değiştirebiliriz.

Şimdi ise yapmış olduğumuz işlemler sonrasında bakalım ekran görüntüsü ya da çalışma mantığında değişen bir şey olmuş mu?

WF,Conditions

Gördüğümüz kadarıyla herşey sorunsuz gözüküyor. Bu da bize hem Code Condition hem de Rule Condition ile elde ettiğimiz sonuçların aynı olduğunu göstermektedir. Aralarında en büyük fark kullanım şekillleridir. Ancak dikkat edeceğiniz üzere kullanım şekilleri farklı olmakla birlikte aslında yazılan kod parçaları ve işlem adımları birbirlerine çok benzerdir.

Şimdi üzerinde denemeler yapmış olduğumuz örneği biraz daha karmaşık bir duruma getirirken hem de ifElse aktivitesinde de koşulları nasıl kullanacağımıza göz atıyor olalım.

Yapacak olduğumuz işlem için tasarım ekranında şu şekilde bir değişiklik yapmamız gerekmektedir. While aktivitesinin içerisine bir Sequence aktivite ekledikten sonra onun içerisine de ifElse aktivite ekliyoruz. Sonrasında ise ifElse aktivitesinde olacak sonuçları gözlemleyebilmek için Code Activity 'ler ekleyerek tasarım ekranında yapılacak olan değişikleri tamamlıyoruz.

WF,Conditions
Tasarım ekranında yapacak olduğumuz değişiklikleri tamamladıktan sonra sıra koşulları belirlemeye geldi. Bunun için ise ifElse aktivitesinin özelliklerinden Condition seçeneğine Rule Activity değerini atadıktan sonra aktivitenin 5 ten ufak olan değer için merhaba yazmasını diğerleri için ise Hoşçakal yazmasını sağlayacağız. Hoşçakal yazması için sağ taraftaki kod aktivitesine Console.WriteLine("Hoşçakal"); count++; kodları yazılır.

WF,Conditions

Yapmış olduğumuz işlemler sonrasında yapmış olduğumuz işlemler konusunda istediğimizi alabilmiş miyizi kontrol edebilmek için uygulamayı çalıştırıyor ve sonuçları gözlemliyoruz.

WF,Conditions

Sonuç oldukça başarılı :)

Bu yazımızda Workflow Foundation 'da Condition kavramını inceleye çalıştık. Condition tiplerinden hem Code Condition olarak nasıl yapabileceğimizi hem de Rule Condition olarak nasıl kullanabileceğimizi örnekler yardımı ile inceledikten sonra While ve ifElse aktiviteleri üzerinde Condition tipleri yardımı ile örnekler yaparak yazımızı tamamladık.

Umarım yararlı olabilmiştir.

Turhal Temizer

info@turhaltemizer.com

Yorumlar

Bu blogdaki popüler yayınlar

SharePoint 2010 - Content Query for Blog Posts

I hope this post will help many of you feel comfortable with using the Content Query Web Part. In this post I will walk you through the process of creating a content query web part and configuring it to show custom field types. I will also give details on how to use XSLT to stylize and format the data being pulled. I will be using the following scenario as an example. Say that you had a site collection with a top level publishing site. This publishing site would display a the most recent blog posts from all blog sites within its own site collection. To solve this problem we will use a Content Query Web Part and a customized ItemStyle.xsl using XSLT. Please note that the “SharePoint Server Publishing Infrastructure” needs to be enabled at the site collection to display the content query web part. Step 1: Add a Content Query Web Part to Page Navigate to the site that you want the blog posts to show up and click on edit page. Under Editing Tools in the Ribb

Olasılıksız - Kitap Yorum

Olasılıksız hayatımda okuduğum en iyi kitaptı. Tek çırpıda hiç sıkılmadan, eğlenerek okudum bu kitabı, tavsiyem sizinde okumanız. Kitabın kapağı ve içeriği ile ilgili kısa bilgi aşağıdadır. Olasılık, tahmin, düşünceler, nöbetler, karışıklıklar, ileriyi görebilme zannı, dejavu ve tabii ki olasılıksız şeyler. Bu kelimelerle içli dışlı olabileceğiniz, bütün bu kelimelerin yaşamdaki yerini kavrayabileceğiniz müthiş bir uyarlama. Adam Fawer' ın ortaya çıkardığı bu uyarlama romanın müthiş bir çalışmanın ve araştırmanın sonucu ortaya çıktığının kitabın başından sonuna kadar farkındasınız. Bu uyarlamasını, derin araştırmalarıyla birleştirip romanı tekdüzelikten çıkarıp müthiş bir yere koyduğu için de Fawer' a müteşekkir oluveriyorsunuz. Sıkıcı diye nitelendirebileceğiniz teorik bilgileri bile bir çırpıda okuyuveriyorsunuz. Teorik bilgiler dahi olaylarla sonuna kadar bağlantılı aktarılmış. Tekdüzelikten çıkmış bir roman; olasılıksız. Her an olayın kurgusunun değişmesi olasılık dahilind

.Net 3.5 SP1 – Full Install Packages (Tam Kurulum)

.Net Framework 3.5 SP1 ‘i bilgisayarınıza kurmak istediğinizde normal şartlar altında Microsoft ‘un sitesinde 2.7 mb ‘lik bir dosya indirir ve kurulum işlemlerinizi bu dosya üzerinden yaparsınız. Ancak bu indirmiş oluğunuz dosya yaklaşık 220 mb ‘lik veriyi internetten indirerek kurulum yapmaktadır. İnternet çıkışına izin verilmeyen kurumlar ve kuruluşlar için bu durum bir sıkıntı oluşturmaktadır. Bu sebepten ötürü aşağıdaki link yardımı ile tam yükleme paketini indirdikten sonra hiç internet ihtiyacınız olmadan .Net 3.5 SP1 ‘i kurabilmeniz mümkün olacaktır. Link