Makale Özeti

Akış kontrolü aktivitelerinin kullanımı yazımın birinci bölümünde IfElse, IfElseBranch ve ConditionalActivityGroup aktivitelerini açıklamıştım. Bu bölümde ise While, Sequence ve InwokeWorkflow aktivitelerinin kullanımlarını anlatacağım. InvokeWorkflow aktivitesi, WWF teknolojisi ile kendi framework’ünü geliştirmek isteyecek kişilere yeni fikirler sunacaktır.

Makale

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

 

Akış kontrolü aktivitelerinin kullanımı yazımın birinci bölümünde IfElse, IfElseBranch ve ConditionalActivityGroup aktivitelerini açıklamıştım. Bu bölümde ise While, Sequence ve InwokeWorkflow aktivitelerinin kullanımlarını anlatacağım. InvokeWorkflow aktivitesi, WWF teknolojisi ile kendi framework’ünü geliştirmek isteyecek kişilere yeni fikirler sunacaktır.

 

 

 

While Activity

 

C# sözdizimi içerisinde while anahtar kelimesi ile kullanılan While aktivitesi, WWF teknolojisi altında bütün programlama dillerinde olduğu gibi döngü görevindedir. While aktivitesinin Conditon özelliğinde belirteceğiniz koşul gerçekleştiği sürece While aktivitesi içerisinde bulundurduğu aktiviteyi çalışıracaktır. While aktivitesi Sequence aktivitesi gibi içerisinde birden fazla aktivitenin belirli bir akış içerisinde bulunmasını desteklemez. While aktivitesi içerisine sadece bir tane aktivite koyabilirsini. Eğer birden fazla aktiviteyi while aktivitesi aracılığıyla çalıştırmak istiyorsanız, bir sonraki aşamada göreceğiniz Sequence akitivitesini While aktivitesi içerisine sürükleyip bırakmalısınız.

 

While Activity Tanımlaması:

 

  1. Uygulamanızın kod bölümünü açın ve int tipinde Sayac adında ve değeri 0 olan bir field tanımlayın.
  2. Toolbox’tan While aktivitesi alın ve diyagram üzerine bırakın.

 

 

  1. While aktivitesinin koşulunu belirlemek için While aktivitesini seçin ve özelliklerinden ister Code Condition ister Declarative Rule Condition kullanarak Sayac değerinin 10’dan küçük olduğunu denetleyin. Ben genel olarak Declarative Rule Condition kullanmayı tercih ediyorum.

 

 

While aktivitesinin koşulunu tanımlamamıza rağmen hala uyarı ile karşılaşıyoruz. Bunun nedeni while aktivitesi içerisine çalıştırılacak aktivite koymamamızdandır.

 

 

  1. While aktivitesi içerisine bir tane Code aktivitesi sürükleyip bırakın. CodeActivity1’in ExecuteCode özelliğine Say yazın ve Enter butonuna basın. Sizin için yazılan Say metodu içerisine aşağıdaki kodları yazın.

 

 

  1. Yukarıdaki adımları izlerseniz, While aktivitesinin tanımlama işlemini tamamlamış olacaksınız.

 

 

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. Ctrl + F5 tuşlarına basarak uygulamanızı çalıştırın.

 

 

Uygulamanızı çalıştırdığınızda While aktivitesi çalışacaktır. While aktivitesi içerisine koyduğunuz Code aktivitesi, While aktivitesinde belirlediğiniz koşul gerçekleştiği sürece çalıştırılacaktır. Koşul bölümünde başlangıç değeri 0 olan Sayac değişkenin 10’dan küçük olması kontrol ediliyordu. Böylelikle yukarıdaki gibi bir çıktı ile karşılaştık.

 

 

 

Sequence Activity

 

Sequence aktivitesi tek dal üzerine istediğimiz kadar aktivite ekleyebilmemizi sağlayan aktivite türüdür. WWF ile uygulama geliştirirken içerisine tek bir aktivite eklenebilen aktiviteler ile karşılaşacaksınız(örn: While Aktivitesi). Bu durumda Sequence aktivitesi içerisine istediğiniz kadar alt aktivite ekleyip, içerisinde birden fazla alt aktivite bulunduran sequence aktivitesini de bir aktivite olarak herhangi bir aktivite içerisine ekleyebilirsiniz.

 

 

 

Sequence Activity Tanımlaması:

 

  1. Uygulamanızın kod bölümüne geçin, int tipinde Sayac adında ve değeri 0 olan bir field tanımlayın
  2. Diyagram üzerine While aktivitesinden sürükleyip bırakın ve while aktivitesinin koşulunu belirleyin.(Bir önceki uygulama ile aynı koşulu belirliyorum.)
  3. While aktivitesi içerisine birden fazla aktivite yerleştirebilmek için Toolbox’tan bir tane Sequence aktivitesini sürükleyip While aktivitesi içerisine bırakın.

 

 

  1. Bu aşamadan sonra sequence aktivitesi içerisine istediğiniz kadar alt aktivite sürükleyip bırakabilirsiniz. Şimdi SequenceActivity1 içerisine bir tane IfElse aktivitesi sürükleyip bırakın.

 

 

  1. IfElseBranchActivity1’in Condition özelliğini

 

(this.Sayac % 2) == 1 olarak belirleyin.

 

 

  1. IfElseBranchActivty1’in içerisine Code aktivitesi sürükleyip bırakın.
  2. IfElseBranchActivty2’nin içerisine Code aktivitesi sürükleyip bırakın.

 

 

  1. CodeActivity1’in ExecuteCode özelliğine Code1Calistir, CodeActivity2’nin ExecuteCode özelliğine Code2Calistir değerlerini yazınız.
  2. Aşağıdaki kodu yazarak Code aktivitelerini işleyiniz.

 

 

  1. IfElseActivity1’in bitimine bir Code aktivitesi daha ekleyin ve Name özelliğini caSayaciArttir olarak belirleyin.

 

 

  1. ExecuteCode özelliğini SayaciArttir olarak belirleyin ve SayaciArttir metodu içerisine aşağıdaki kodları yazın.

 

 

Buraya kadar Sequence aktivitesinin tanımlama işlemini yapmış oldunuz. Bu diyagram bir While aktivitesi içerisindeki Sequence aktivitesinde yaptığımız kontrol mekanizması sonucu Sayac değişkenin o anki değerinin tek sayı mı yoksa çift sayı mı olduğunu belirliyor.

 

 

 

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. Ctrl + F5 tuşlarına basarak uygulamanızı çalıştırın.

 

 

Sayac değişkenin o anki değerinin tek mi yoksa çift mi olduğunun belirlendiğini yukarıdaki ekran görüntüsünden rahat bir şekilde anlıyoruz.

 

 

 

InvokeWorkflow Activity

 

InvokeWorkflow aktivitesini daha önceden tanımladığımız workflow’u başka bir workflow içerisinden çalıştırmak için kullanırız. Kendi workflow framework’ünüzü oluşturduğunuzda çok işinize yarayacak bir aktivitedir.

 

InvokeWorkflow aktivitesi çağırılan workflow yapısına göre değişiklikler gösterebilir. Örneğin çağıracağınız workflow dışarıdan parametre alıyorsa InvokeWorkflow içerisinde bazı işlemler yapmanız gerekecektir. Bundan sonraki tüm yazılarımda kullanacağım özellikleri DepencencyProperty olarak tanımlayacağım. Bu workflowlar arasında sıkı bağ kurmamı sağlayacak.

 

 

 

Çağırılacak Worflow’un Tanımlanması:

 

  1. Solution Explorer penceresinde projeniz üzerine sağ tuşla tıklayın ve Add à Sequential Workflow bölümünü seçin.

 

 

  1. Workflow’un adını Workflow2 olarak bırakın ve Add butonuna basın.
  2. Açılan bölümde diyagram üzerine bir tane Code aktivitesi sürükleyin. Cod aktivitesinin ExecuteCode özelliğini “Calis” olarak değiştirin.

 

 

  1. Şimdi dışarıdan parametre olarak alacağımız değer için bir tane DependencyProperty tanımlayın.

 

 

Not: Bu tanımlamayı Workflow2 içerisinde yaptık.

 

  1. Calis metodu için aşağıdaki kodu yazın.

 

 

  1. Son durum aşağıdaki gibi olacaktır.

 

 

 

 

InvokeWorkflow Tanımlaması:

 

  1. Workflow1.cs dosyasını açın.
  2. Diyagram üzerine InvokeWorkflow aktivitesi sürükleyip bırakın.

 

 

  1. Buradaki uyarı InvokeWorkflow aktivitesinin hangi workflow’u çağıracağını belirtmememizden kaynaklanmaktadır. InvokeWorkflow aktivitesinin özelliklerine gelin ve TargetWorkflow özelliğinin yanında gözüken butona tıklayın.

 

 

  1. Açılan pencereden Workflow2’yi seçin.

 

 

  1. OK butonuna basarak pencereyi kapatın. Uygulamayı derleyin ve aşağıdaki ekran görüntüsüne sahip olacaksınız.

 

 

  1. InvokeWorkflow aktivitesinin özelliklerine tekrar gelin. Özelliklerinde Wokflow2 içerisinde tanımladığımız Mesaj özelliğini göreceksiniz.

 

 

  1. Mesaj özelliğine “Çağdaş” değerini verin. Bu Workflow2’yi “Çağdaş” değeriyle çalıştıracağı anlamına geliyor.

 

 

Buraya kadar workflow1 içerisinden InvokeWorkflow aktivitesi aracılığıyla çağrılacak Workflow2 workflow’unu tanımladık. Workflow2 içerisinde DependencyProperty olarak Mesaj özelliği tanımladık. Workflow1 içerisndeki InvokeWorkflow aktivitesini kullanarak Workflow2’yi çağırdık.

 

 

 

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. Ctrl + F5 tuşlarına basarak uygulamanızı çalıştırın.

 

 

            Uygulamanın doğru çalıştığını göreceksiniz.

 

 

 

Özet:

 

Bu bölümde While, Sequence ve InvokeWorkflow 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 Paralel, Delay, Replicator, Suspend, Terminate aktivitelerini anlatacağım. Takıldığınız noktalarda daha önceki yazılarıma bakarak eksiklerinizi giderebilirsiniz.