Windows Workflow Foundation - Out-Of-The-Box Activities -2


Merhaba Arkadaşlar;

Out-Of-The-Box Aktivitelerimize, kaldığımız yerden devam ediyoruz ;)

9. Policy Activiy:

İş akışımız içerisinde bazen ve ya çoğu zaman “iş akışına bağlıdır” kurallar tanımlamamız gerekebilir. Bu gibi durumlarda kullanabileceğimiz bir aktivite çeşididir. Policy aktivitesi kural tabanlı “Role Base “ iş akışı tanımlamamıza imkan tanır. Bu gibi tanımlamalar yapmamız gerektiğinde IfElse aktivitesini kullanabildiğimiz gibi, Policy Activity’i de kullanabiliriz. IfElse varsa buna ne gerek var ? dediğinizi duyar gibiyim. Eğer tek bir yöntem olsaydı emin olun o zaman bir yerler eksik kalır ya da işimiz çok daha zorlaşırdı. Bunun dışında yine de Policy aktivitesinin farklı bir tarafı da söz konusu, iş akışımız içerisinde kontrol mekanizmalarına ihtiyacımız varsa ve akışın sonunda bir değişiklik yapılmayacaksa kullanılabilir.

10. Invoke Web Service Activity:

Bir web servisine ulaşmak ve çağırmak için kullanılır. Bu     aktiviteyi aktif olarak kullanabilmek için, uygulamamızın içerisinde bir web referans olması gerekmektedir. Bu web servisini çağırmak için bazı ayarlar yapılması gerekir. Web Referance’den referansımızı ekledikten sonra, InvokeWebService Activity’i eklememiz ve bu aktiviteye ait olan ProxyClass özelliğine değer atamamız, ve InvokeWebService aktivitesinin, MethodName özelliğine de, çağırmak istediğimiz metodun adını yazmamız gerekir. Bu işlemlerden sonra ancak bu aktiviteyi doğru bir şekilde kullanabiliriz.

11. Listen Activity:

 

Listen Activity akış aktivitesidir ve Satate Machine ile birlikte kullanıması  malesef mümkün değildir. Listen Activity içerisinde en az iki aktivite bulundurur ve sadece  EventDriven Activity bulundurabilir. Listen Activity içerisinde barındırdığı EventDriven event’larını  yakalamayı bekler.  Yakalan event haricinde bulunan EventDriven iptal edilerek sonlandırılır.

12. Replicator Activity:

 

Bildiğimiz foreach yapısına benzer. Tek aktiviteden, birden fazla oluşturarak aslında birer kopyasını çıkartır. Genellikle Data-Driven workflow’larda kullanılır. Bu aktivite hem Paralel hem de Sequential olarak tanımlana bilme özeliğine sahiptir.

13. Sequence Activity:

 

İçindeki aktiviteleri, bizim belirlediğimiz sıra ile yürütmeye yarayan aktivitedir. Maalesef çok yetenekli değildir, içinde sadece tek bir aktivite bulundurabilir.

14. State Activity:

Bu aktivite, State Machine WorkFLow yapısının en önemli yapısıdır denilebilir. State Machine WorkFlow’u bu aktivite ile kullanırız. Kendi içinde kendini barındırabilmektedir. State, StateInitialization ve StateFinalization da dahil olmak üzere üç farklı duruma sahiptir. StateInitialization başlangıç, StateFinalization bitiş durumunu belirtmektedir. State ise bunların haricindeki arada kalan durumlar için geçerlidir.

15. SetState Activity:

StateMachineActivity içerisinde kullanılan bu aktivite, önceden tanımlanmış olan State aktiviteleri arasında geçişi sağlamakla görevlidir. SetState aktivitesine ait olan TargetStateName özelliğine, geçiş yapmak istediğimiz State aktivitesinin değerini atayarak, hangi aktiviteye geçiş yapmasını istiyorsak bildirmiş oluruz.

16. StateInitialization Activity:

State’in başladığında, her hangi bir EventDriven aktivitesi çalışmadan akış içerisinde farklı işlemler tanımlamak istediğimiz durumlarda kullanabileceğimiz aktivitedir. Bu aktivite State aktivitesinin ilk giriş aşamasında çalıştırılmaktadır. Bu aktiviteyi sadece bir kez kullanabiliriz.

17. Suspend Activity:

Aktif olan iş akışımızda bir hata ile karşılaşıldığı durumda, iş akışımızı beklemeye almamız gerekebilir. Bu gibi durumda kullanılması gereken aktivite Suspend Activity’dir. Bu sırada gelen mesajlar sıraya alınarak, iİş akışının istemci tarafındaki WorkflowRuntime objesine ait WorkflowSuspended event’ı fırlatılmış olur. Bu sayede nerede hata olduğunun analizi yapılıp nedeni bulunabilir. Ancak bu iş akışının devam edebilmesi için tekrar başlatılması gerekir. Bu işlemi yapmak içinde WorkflowRuntime Class’ına ait olan Resume metodunu kullanabiliriz.

18. Throw Activity:

İş akışı içerisinde yakaladığımız hatayı, diğer bir aktiviteye bildirmek için kullanılır. Normalde kullandığımız Catch bloğunda ki throw ifadesine benzetebiliriz. Bu aktiviteyi, daha önce açıkladığım View Fault Handler bölümünde kullanmak en doğru karar olacaktır.

19. Transaction Scope Activity:

İçinde barındırdığı aktiviteleri, aynı transaction içinde çalıştırarak, bunların tek bir aktivite gibi çalışmasını sağlar. Runtime esnasında bir hata ile karşılaşıldığında, eğer bir işlem gerçekleştirilmişse bu işlemleri geri alır. Aktiviteleri ilk başladıkları duruma geri döndürür.

20. Terminate Activity:

 

Suspend Activity gibi bir hata ile karşılaşıldığı durumda kullanabiliriz, ancak bunu SuspendActivity ile karıştırmamamız gerekir. Nedeni ise SuspendActivity’nin akışı bekletmesidir. TerminateActivity ise iş akışının tamamen durmasını sağlar. Bunun yanı sıra TerminateActivity’nin bir güzel özelliği ise log tutmasıdır. İş akışı sonlandığı durumda, WorkflowRuntime objesinin WorkflowTerminated event’ı ile yakalamak mümkün olabilir.

21.  While Activity:

 

Fazle söze gerek yok bence :) Standart kullandığımız While deyimini, aynı şekilde bu teknolojide de kullanabiliriz.

22. CallExternalMethod Activity:

 

Genel olarak iş akışı dışından bir metodun çağırılması gerektiği durumlarda kullanılır. Bu aktivite bir UI üzerinden çağırılacak bir metot tanımlaması yapmamıza olanak tanır.

Son olarak ve tekrar;

NOT: Eğer Windows Workflow Foundation teknolojisini kullanacaksanız, yukarıdaki aktiviteleri çok iyi bilmelisiniz. Bu teknolojinin temel yapıları bunlardır. Bu aktiviteleri ne kadar iyi yönetebilirseniz WF konusunda o kadar iyi, iş akış tasarımını yapabilirsiniz demektir.

 

 







Blog Posts' Cloud