Makale Özeti

Akış kontrolü aktivitelerinin kullanımı ile ilgili yazımda sizlerle Paralel Activity, Delay Activity, Suspend Activitiy ve Terminate Activity kavramlarını paylaşacağım. Son üç yazımı okuyarak Out-Of-The-Box aktivitelerinden akış kontrolü grubunda olan bütün bileşenleri öğrenmiş ve uygulayabiliyor olacaksınız.

Makale

Akış kontrolü aktivitelerinin kullanımı - 3

 

Akış kontrolü aktivitelerinin kullanımı ile ilgili yazımda sizlerle Paralel Activity, Delay Activity, Suspend Activitiy ve Terminate Activity kavramlarını paylaşacağım. Son üç yazımı okuyarak Out-Of-The-Box aktivitelerinden akış kontrolü grubunda olan bütün bileşenleri öğrenmiş ve uygulayabiliyor olacaksınız.

 

 

 

Delay Activity

 

Workflow’unuzu milisaniye bazında bekleten aktivitedir. Kullanımı çok basit olduğu için Paralel aktiviteyi anlatırken uygulamasını yapacağım. Delay aktivitesini kullanmak için diyagram üzerine Toolbox’tan bir tane Delay Activity sürükleyip bırakın. Delay aktivitesini seçin ve özelliklerine gelin. TimeoutDuration özelliğine bir değer verin. Uygulamanızı çalıştırdığınızda Delay aktivitesinin TimeoutDuration özelliğine verdiğiniz değer kadar workflow’unuz duraklayacaktır.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Suspend Activity

 

Çalışan workflow’u beklemeye alır. Beklemeye alır almaz bir hata fırlatılır ve bu hata WorkflowRuntime sınıfının WorkflowSuspended olayında yakalanır. Bu noktada WorkflowInstance nesnesinin Resume metodunu çalıştırırsanız beklemeye alınan workflow tekrar çalıştırılır.

 

 

 

Suspend Tanımlaması:

 

  1. Uygulamanızın kod bölümüne geçin ve string tipinde HataMesaji Adında bir özellik tanımlayın ve get Accessor’ünde geriye “Hata Cikti” değerini döndürün.

 

 

  1. Diyagram üzerine bir tane Suspend aktivitesi sürükleyip bırakın.

 

 

  1. Suspend aktivitesinin özelliklerine gelin ve Error özeliğinin yanındaki butona tıklayın.

 

 

  1. Alçılan pencereden HataMesaji özelliğini seçin ve Suspend aktivitesi çalıştırıldığında hangi hata mesajının döndürüleceğini belirleyin

 

 

            Bu aşamadan sonra Suspend aktivitesinin çalıştığını kontrol etmemiz gerekiyor.

 

 

 

Uygulamamızı Test Edelim:

 

  1. Uygulamanız içerisindeki Program.cs dosyasını açın.
  2. Program.cs dosyasını açtığınızda aşağıdaki ekran görüntüsü ile karşılaşacaksınız.

 

 

  1. Burada workflowRuntime nesnesinin WorkflowSuspended olayını yakalayıp, Suspend aktivitesi çalıştığında hata mesajını konsola yazdırmak için aşağıdaki kodu yazın.

 

 

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

 

 

  1. Uygulama çalıştığında “Hata Çıktı!!!” mesajını göreceksiniz. Bu mesajı gördüğünüzde workflow bekletilmiş olacak. Uygulamanın çalışmaya devam etmesi için workflowRuntime nesnesinin WorkflowSuspended olayında

 

e.WorkflowInstance.Resume();

 

      kodunu yazmalısınız.

 

 

 

Terminate Activity

 

Bir akış aktivitesi olan Terminate Activity, uygulama içerisinde hata çıktığında iş akışını durdurur. Terminate aktivitesini daha önce yazdığım out-of-the-box aktiviteleri içerisinde açıklamıştım. Bu yazımda aktivitesi ile ilgili uygulamama yapmayacak olmamın nedeni, Suspend Activity ile aynı kullanım şekline sahip olmasıdır. Tek fark çıkan hata mesajını workflowRuntime nesnesinin WorkflowTerminated olayında yakalıyor olmamızdır.

 

 

 

Paralel Activity

 

Paralel aktivitesine ilk baktığınızda işleri asenkron olarak yapıyordur diye düşünürseniz yanılacaksınız. WWF içerisinde çalıştırılan her iş akışı için tek thread ayrılır. Tek thread içerisinde asenkron yapısını uygulayamazlar. Paralel aktivitesinin yaptığı iş ise iki ayrı dalda çalıştırılan işleri eşzamanlı olarak çalıştırmaktadır. Aşağıdaki şekli Apress yayınlarının Workflow Foundation üzerine çıkarttığı bir kitaptan aldım. Aşağıdaki iş akışını çalıştırdığınızda ilk önce 1. Sequence’in 1. aktivitesi çalışacaktır. Daha sonra 2. Sequence’in 1. aktivitesi çalışacaktır. Çalışma yönü oklar doğrultusunda olacaktır.

 

 

Paralel aktivitesinin yapısını biraz daha inceleyecek olursak her dalında bir tane sequence aktivitesi bulundurur ve sequence aktiviteleri içerisindeki aktiviteleri yukarıda açıkladığım sırayla çalıştırır.

 

 

Peki, araya bir tane Delay aktivitesi koysaydık çalışma şekli nasıl olacaktı?

 

 

 

Bu noktada yukarıdaki şekle bakacak olursanız Paralel aktivitesi sequenceler içerisindeki aktivitelerden Delay aktivitesi ile karşılaştığında o adımı atlıyor. Eğer yazılarımı düzenli takip ettiyseniz geldiğiniz seviyede yukarıdaki çizimlere bakarak uygulamasını çok rahat bir şekilde yapabilirsiniz.

 

Paralel aktivitesi ile ilgili;

 

  • Eş zamanlı çalıştırma işlemi yaparlar(asenkron değil!).
  • Alt aktivitelerin çalıştırma işlemi yapılırken belirli bir sıra izlenir.
  • Her dalı bir sequence aktivitesidir.

 

Sonuçlarını çıkarabiliriz.

 

 

Özet:

 

Bu bölümde Suspend, Terminate, Paralel ve Delay aktivitelerini tanımış oldunuz. Out-Of-The-Box aktivitelerinden sizin için seçtiğim bu 4 aktivitelerin tanımlanmasını ve uygulanmasını da yazı içeriside tecrübe ettiniz. Aslında sizlerle bu yazının son yazı olduğunu söylemiştim fakat içerisinde Replicator gibi güzel bir aktivite için ayrı bir yazı yazma kararı aldım. Bu ana kadar biri hariç bütün akış kontrolü aktivitelerini görmüş oldunuz. Artık kendi sequence iş akışlarınızı geliştirebilcek seviyeye geldiniz. Sonraki yazılarımda Replicator aktivitesi ile bu konuya son noktayı koyacak ve WWF uygulamalarınızı daha gelişmiş bir şekilde sunmanız için küçük çaplı WWF framework’ü geliştireceğim.