Merhaba Arkadaşlar;
Bu makalemizde sizlere Windows WorkFlow Foundation ".Net Framework 3.0..da" kullabileceğiniz Temel ve Özel aktivitelerden bahsedeceğim.
Nedir bu Out-Of-The-Box Activiteleri ? Windows Workflow Foundation ile ilgili, yayımlanmış en çok makale, yazı, örnekleri, aslında bu konu ile ilgili olarak bulabilirsiniz. Bunun nedeni ise, bu bilgilerin Windows Workflow Foundation'da olmazsa olmaz / bilinmek zorunda olan konularıdır ;) Windows Workflow FOundation'u ve bu teknolojiyi ne kadar iyi kullanmak istiyorsanız, bu konuları ve aktiviteleri çok iyi bir şekilde bilmeniz ve tecrübe etmeniz gerekiyor. Visual Studio'nun ToolBox'ında bulunan u araçlar, Windows Workflow Foundation'un verimli kullanak istediğiniz noktada, ilk olarak bilinmesi gereken araçlardır ve Microsoft'un öneriside bu yöndedir.
1. Code Activities:

Adından da çok kolay anlaşılabilir bir aktivite çeşidimizdir. Kitabın aslında bu bölümüne gelene kadarda en çok kullanılan aktivitesi denilebilir. Daha önceki örneklerde kendi kodumuzu yazmak için kullandığımız bu aracın zaten amacı, istediğimiz kodu yazabilmektir. Bu aktivite ile yazdığımız kodlar, eş zamanlı olarak devreye girerek, çalışırlar. Bu aktivite işini bitirmeden iş akışımızın devam etmesi mümkün değildir. Burada geliştirilen kodların tekrardan kullanılması pek mümkün değildir, sadece kendi içinde kullanılabilir.
2. ConditionedActivityGroup Activity:

Belirlediğimiz bir koşul temeline dayalı olarak çalışan ve içerisine atadığımız aktiviteleri bu koşul düzenine göre devreye sokan aktivitemizdir. İçine atadığımız aktiviteleri çocuğu olarak kabul edebiliriz. Conditioned Activity Group “CAG” Child Activity olarak tanımladığımız aktiviteleri sırası ile devreye sokarak aktif hale getirir. ConditionedActivit Group kendi içerisinde WhenCondition adı verilen koşul yapısında bulunur. ConditionedActivit Group içerisine eklediğimiz her koşul için aslında When koşulunu implemente etmeliz. Seçime bağlı olarak kullanabileceğimiz UntilCondition adı verilen tanımlamalar mevcuttur. Runtime’da UntilCondition’nın çalışması durumunda, o anda çalışan bütün aktiviteler durdurulur.
3. Compensate Activity:

COM+ teknolojisine ait olan bu aktiviteyi tam olarak alamak için Compentanting Resource Managers bölümünü incelemelisiniz. Bu bölümü incelerken Compesante mantığını tam olarak algılamak gerekir. CompensanteActivity’i workflow içerisinde bir hata ile karşılaşıldığında, oluşan hatayı geri almak için kullanabilirsiniz. Bunu Transaction Rollback olarak tanımlayabiliriz. Bu aktiviteyi CompensationHandlerActivity ve CancellationHandlerActivity ile kullanabilirsiniz.
4. Fauld Handler Activity:

Fault Handler Activity’i bir Catch bloğu olarak tanımlayabiliriz. Catch bloğunda olduğu gibi, çalışma esnasında ortaya çıkan istisnai durumlar, hatalar ve ya izlenmesi gereken objeler olduğunda kullanılması gerekir. Bir durum ile karşılaşıldığında içeriğinde barındırdığı alt rutinler ile devreye girer. Bu aktivitenin nereyi izlemesi gerektiğini Fault Property’ine atanan değer ile belirleyebilirsiniz. Bu işlemi gerçekleştirebilmek için, aktivitemize sağ tuşla tıklayarak View Fault Handlers menüsü seçmek gerekir.
5. EventDriven Activity:

EventDriven Activity bizim için gerçekten en önemli aktivitelerden birisidir. Asıl işi, State Machine WorkFlow ile Squence WorkFlow arasında ki geçişi sağlamak, diğer bir görevi ise, içeriğinde bulunan alt aktiviteyi, tanımlanan olaylar çerçevesinde aktive etmektir. Genellikle State Machine aktiviteleri için kullanılmaktadır. Bu aktivite ile çalışırken dikkat edilmesi gereken bir durum söz konusudur. IEventActivity’i implemente edilmiş olması gerekir.
6. Delay Activity:

Milisaniye bazında çalışmasını istediğiniz bazı durumlar söz konusu olabilir. Bu gibi durumlarda, bu aktivite bizlere yardımcı olacaktır. Bu aktivite, belirlediğimiz süre boyunca iş akışımızı çalıştırmadan bekletir. Genel kullanım amacı, dışarıdan gelen isteklerin cevaplanması için gerekli olan zamanı bize sunar.
7. IfElse Activity:

Biz developerların en çok kullandığı koşul olarak tanımlasam her halde yanlış olmaz. IfElse Activity ile ilgili kitabın aslında ilk başında bir uygulama yapmıştık. Tekrar hatırlatmak ve tanımını yapmak amacı ile, workflow da bir koşul deyimi olarak kullanılır. Belirli bir koşul altında, gerçekleşen koşula göre ki en az bir koşul bulundurmak zorundadır ve bu bölüm IF olarak çalışır. Diğer bölüm ise ELSE durumunda aktive edilecek yerdir. İkinci durumda, her hangi bir koşul sunmak, normal bir if else bloğunda olduğu gibi zorunlu değildir. Bu bölümlerde farklı aktivitelerin tanımlanması da yapılabilir.
8. Paralel Activity:

İçerisinde minimum ilk Sequence Activity bulundurmalıdır. Paralel Activity, aynı anda birden fazla Sequence Activity’i biri birinden bağımsız olarak aktif olarak çalıştırabilir. İçerisinde barındırdığı aktivitelerin çalışmaları sonlandığında, ParalelActivity’nin de görevi bitmiş olur. Burada dikkat edilmesi gereken bir nokta söz konusudur, aynı anda çalışan aktivitelerin, aynı veri üzerinde işlem yapmayacak şekilde ayarlanması ve yönetilmesi gerekir.
Bu kısmı 3 bölüme ayıracağım arkadaşlar, toplamda Custom haric 22 aktivite var. Bu makalede 8 tanesinden bahsettim, kalanları diğer yazımıza artık :)
Kolaygelsin.
