Makale Özeti

Bu yazımda sizlere Replicator aktivitesinin kullanımından söz edeceğim. Out-Of-The-Box aktivitelerinin bana göre en önemli bileşenlerinden biri olan Replicator Activity, iterasyon işlemlerini iş akışı içerisinde yürütür. Kısaca foreach döngüsünün iş akışı içerisindeki sürümdür.

Makale

Replicator Activity

 

Bu yazımda sizlere Replicator aktivitesinin kullanımından söz edeceğim. Out-Of-The-Box aktivitelerinin bana göre en önemli bileşenlerinden biri olan Replicator Activity, iterasyon işlemlerini iş akışı içerisinde yürütür. Kısaca foreach döngüsünün iş akışı içerisindeki sürümdür.

 

Özellikleri:

 

ChildCompleted:

ChildCompleted olayı çalıştığında hangi metodun çalıştırılacağını belirtiriz.

ChildInitialized:

ChildInitialized olayı çalıştığında hangi metodun çalıştırılacağını belirtiriz.

Completed:

Completed olayı çalıştığında hangi metodun çalıştırılacağını belirtiriz.

ExecutionType:

Replicator aktivitesinin çalışma şeklini belirlediğimiz özeliktir. Replicator aktivitesinin iki türlü çalışma şekli vardır. 1- Sequence, 2- Paralel. Eğer çalışma şeklini Sequence olarak belirlerseniz, gelen koleksiyon yapısındaki elemanları teker teker ele alır ve işleme sokar. Paralel olarak belirlerseniz, gelen koleksiyon içerisindeki elemanların hepsini birden ortaya koyar ve hepsini aynı anda çalıştırmaya çalışır. Yani Paralel aktivitesi mantığı gibi… Paralel aktivitesinde işlemler tek bir thread altında yapıldığı için asenkron bir yapı olmadığını da unutmamak gerekir. Daha çok paralel çalışma tipi CustomActivity ler için geçerlidir.

InitialChildData:

Replicator aktivitesinin hangi yapıyı iterasyona sokacağını belirttiğmiz özelliktir. Burada belirteceğimiz yapının tipi IList olmalıdır. Replator aktivitesi kural gereği iterasyona sokacağı nesnenin IList olmasını ister. Böylelikle replicator aktivitesi çalıştığı anda IList koleksiyon yapısı içerisindeki elemanlarda dönmeye başlar.

Initialized:

Initialized olayı çalıştığında hangi metodun çalıştırılacağını belirtiriz.

UntilCondition:

İsteğe bağlı olan bu özellik, Replicator aktivitesinin UntilCondtion özelliğinde belirtilen koşul sağlandığında Replicator aktivitesi sonlanır.

CurrentChildData:

Replicator aktivitesi çalışırken o anda işleme soktuğu ya da sokacağı nesneyi bu özellik içerisinde tutar. Replicator aktivitesi alt aktivitesini çalıştırmadan önce onu kopyalar. Değişiklikleri kopya üzerinde yapar. Böylelikle işleme başlamadan veriler hangi durumdaydı? İşlem bittikten sonra ne durumda? Gibi sorulara da cevap verebilme fırsatı buluruz.

CurrentIndex:

Replicator aktivitesinin koleksiyon yapısı içerisindeki kaçıncı sıra numarasına sahip elemanı işleme soktuğunu ya da sokacağını verir.

 

 

 

Olayları:

 

ChildCompleted:

Replicator aktivitesinin alt aktivitesinin çalışma işlemi bittiğinde fırlatılan olaydır.

ChildInitialized:

Replicator aktivitesinin alt aktivitesinin kopyalanıp, alt aktivitenin çalışma işlemi başlamadan önce fırlatılan olaydır.

Completed:

Replicator aktivitesi işini bitirdiğinde fırlatılan olaydır.

Initialized:

Replicator aktivitesi çalışmaya başlamadan önce fırlatılan olaydır.

 

 

 

Replicator Aktivite Tanımlaması:

 

  1. Uygulamanıza Kisi adında bir sınıf ekleyin. Bu sınıfa Ad ve Soyad özelliklerini ekleyin ve ToString() metodunu ezin.

 

 

  1. Workflow’unuzun kod bölünme geçin ve KisiList adında bir DependencyProperty tanmlayın.

 

 

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

 

 

  1. Replicator aktivitesini seçin ve ExecutionType özelliğini Sequence olarak belirleyin.
  2. Replicator aktivitesini seçin ve InitialChildData özelliğinin yanındaki butona tıklayın.

 

 

  1. Butona tıkladığınızda açılan menüden KisiList özelliğini seçin. Böylelikle KisiList özelliği içerisindeki elemanların iterasyona sokulacağını belirtmiş oldunuz.

 

 

  1. Replicator aktivitesi içerisine bir tane CodeActivity sürükleyip bırakın ve ExecuteCode özelliğini Yazdir olarak belirleyin.

 

 

  1. CodeActivity1’in çalıştıracağı Yazdir metodunda aşağıdaki kodları yazın.

 

 

Buraya kadar bütün adımları izlediyseniz Replicator akticitesini tanımlamış oldunuz.

 

 

Replicator Aktivitesini 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 Workflow1 içerisinde tanımladığımız KisiList özelliğine değer atamamız gerekiyor. Değer atama işlemi ile uygulamayı çalıştırdığınızda KisiList iterasyona sokulacaktır.

 

 

  1. Yukarıdaki kodları yazıp Ctrl + F5 tuşlarına bastığınızda aşağıdaki çıktıyı alacaksınız.

 

 

 

Özet:

 

Bu bölümde Replicator aktivitesinin iterasyon yapısını nasıl çalıştırdığından söz ettim. Ayrıca Replicator aktivitesinin içerisinde ne tipte elemanlar tuttuğunu, özelliklerini ve olaylarını açıkladım. Uygulamasını yaptığınızda daha da kavrayabileceğiniz bir konu olan Replicator aktivitesi, iş akışı geliştirirken sık sık başvuracağınız bir aktivitedir. Bir sonraki yazımda şu ana kadar okuduğunuz yazılarımla neler yapabilirsiniz? Sorusunu cevaplayacağım.