Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
.NET 3.x
YAZAR HAKKINDA
Çağdaş Davulcu
http://www.csharpnedir.com/
İletişme geçmek için
tıklayın
.
6
Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için
tıklayın
.
Yayınlanan diğer makaleleri için
tıklayın
.
İlgili etiketler:
akisini
aktivite
aktivitedir.
aktiviteler
aktiviteleri
aktivitesi
aktivitesini
aktivitesinin
altinda
bulunan
herhangi
machine
uygulama
workflow
workflow’unuz
.NET 3.x
Çağdaş Davulcu
YAZI HAKKINDA
Türü
:
Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi
:
Başlangıç
Kategori
:
.NET 3.x
Yayınlanma Tarihi
:
15.1.2008
Okunma Sayısı
:
23285
Yorum Sayısı
:
0
yorum yaz
SİTE İÇİ ARAMA
Üye
GİRİŞİ
Üye girişi için
tıklayın
.
Kullanıcı Adı
Şifre
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
Şifremi / Kullanıcı Adımı unuttum.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
Serbest KÖŞE
(?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Burak Selim Şenyurt
Bellek Yönetiminde Verimlilik için İpuçları (Rust Odaklı)
8.5.2025
Burak Selim Şenyurt
Rust ve Güvenli Bellek Yönetimi Hakkında
8.5.2025
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
Çağdaş Davulcu
/
.NET 3.x
/
Windows Workflow Foundation Out-Of-The-Box Aktiviteleri
Windows Workflow Foundation Out-Of-The-Box Aktiviteleri
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
Windows Workflow Foundation
ile uygulama geliştirmeye başlamadan önce
Toolbox
üzerinde bulunan ve
Out-Of-The-Box
aktiviteleri olarak adlandırılan aktiviteler ile ilgili fikriniz olması gerekir. Aslında Microsoft tarafından tam olarak söylene şu: “Daha verimli Workflow Foundation uygulamaları geliştirmek istiyorsanız, öğrenmeye
Out-Of-The-Box
aktivitelerinden başlayın”.
Bu yazımızda sizlere
Out-Of-The-Box
aktivitelerinden söz edeceğiz ve
Out-Of-The-Box
aktivitelerini gruplandıracağız.
Out-Of-The-Box Aktiviteleri
Code Activity:
Code Activity
workflow içerisine kendi kodumuzu eklemeye yarayan aktivite türüdür.
Code Activity
’i kullanarak yazdığımız kodlar eşzamanlı bir şekilde çalışırlar ve bu nedenden dolayı workflow’un çalışmaya devam etmesi için
Code Activity
’nin sonlanması gerekmektedir.
Code Activity
bir bakıma
Custom Activity
olarak ta düşünülebilirler.
Code Activity
içerisinde yazılan kodların tekrar kullanımları çok düşüktür hatta sadece o workflow içerisinde kullanılabilirler. Son olarak
Code Activity
iş akışınız içerisndeki Business Logic’i enkapsüle edilen yapılardan biridir.
Compensate Activity:
Compensating Activity
ile ilgili ayrıntılara girmek isterseniz ilk önce
Com+
teknolojinsin bir bölümü olan
Compensating Resource Managers
bölümüne göz gezdirerek
compensate
mantığını öğrenmeniz sizin için iyi olacaktır.
CompensateActivity
’i workflow içerisinde bir hata ile karşılaştıktan sonra gerçekleştirilen işlemleri geri almak için kullanırız. Bunu hata çıkarak sonlanan
transaction
’ın
RollBack
edilmesi gibi de algılayabilirsiniz.
Compensate Activity
’i sadece
CompensationHandlerActivity
,
CancellationHandlerActivity
ve k içerisinde kullanabilirsiniz.
Conditional Activity Group:
İçerisine eklediğimiz aktiviteleri belirli bir koşul temelinde çalıştıran aktivite türüdür. Aslında içerisine eklenen aktiviteleri
Child Activity
olarak adlandırırız ve
CAG
’ın yaptığı şey de tanımlanmış
Child Activity
serisini sırayla çalıştırmaktır.
Conditional Activity Group
,
CAG
olarak bilinir.
CAG
’ın içerisinde bulunan tüm aktivitelerinde
WhenCondition
adı verilen koşul yapısı bulunur. Bizlerin
CAG
içerisine eklediğimiz her aktivite için
When
koşulunu implement etmemiz gerekir. Bunun haricinde
CAG
içerisine eklenmiş her aktivitenin opsiyonel olan ve adına
UntilCondition
denilen koşullar bulunmaktadır. Çalışma esnasında
Until
koşulu yerine getirildiğinde, o sırada çalışan tüm aktiviteler iptal edilir.
Delay Activity:
Workflow’unuzu milisaniye bazında bekletme işlemini yapan aktivitedir. Workflow’unuz çalıştırma işini yapmadan önce belirlediğiniz süre boyunca bekletilir.
Delay Activity
genelde workflow’unuz içerisindeki uzun sürebilecek olan akışlarda, dışarıdan çağrılan nesnelerin işlemlerini tamamlamasını beklediğimiz durumda kullanılır.
EventDriven Activity:
EventDriven Activity beklide WWF’in en önemli aktivitelerinden biridir. Öncelikli görevi
State Machine Workflow
ile
Sequence Workflow
arasındaki geçişi sağlamaktır. Diğer yaptığı iş ise içerisinde barındırdığı alt aktiviteleri belirtilen olay gerçekleştiğinde çalıştırmaktır. Daha çok
State Machine Workflow
senaryolarında geçerlidir. Son olarak
EventDriven Activity
ile çalışırken,
EventDriven Activity
’e ekleyeceğimiz al aktivitelerin
IEventActivty
interface’ini implement etmiş olmasına dikkat etmeliyiz. Bizlere sunulan aktiviteler içerisinde
HandleExternalEvent
ve
Delay
aktiviteleri bu interface’i implement emiştir.
Fault Handler Activity:
Fault Handler
aktivitesi C# içerisindeki catch bloğu gibi çalışan bir aktivitedir. Temel olarak hataları, istisnai durumları ya da özel olarak belirttiğimiz nesneleri izler. Hata çıktığında içerisinde barındırdığı alt aktiviteleri çalıştırır.
FaultHandler
aktivitesinin hangi hatayı izlemesi gerektiğini
Fault
özelliğine değer atayarak belirleyebiliriz. Workflow’unuz içerisine
FaultHandler
aktivitesinden ekleyebilmeniz için, aktiviteniz üzerine sağ tuş ile tıklayıp
View Fault Handlers
menüsünü seçmeniz gerekmektedir.
IfElse Activity:
Workflow içerisindeki koşuk aktivitesidir. Yaptığı şey belirli bir koşul altında bulunan koşul bölümlerinden birini çalıştırmak. Altında bulunan ilk bölüm mutlaka bir koşul bulundurmalıdır. Aslında ilk bölüm kodumuzun If bloğunu temsil eder. Altında bulunan son bölüm ise else bloğunu temsil eder. Burada koşuk tanımlamamız zorunlu değildir.
IfElse
aktivitesi içerisindeki alt bölümlerde farklı akışlar tanımlamak mümkündür.
Invoke Web Service Activity:
Dışarıdaki bir web servisi çağırmak için kullanılan aktivitedir. Bu aktiviteyi kullanabilmeniz için projeniz içerisine bir adet web reference eklemeniz gerekmektedir. Web reference’ı ekledikten sonra
InvokeWebServie
aktivitesinin
ProxyClass
özelliğine değer atayın ve
InvokeWebServie
aktivitesinin
MethodName
özelliğine web servisin çağırmak istediğiniz metodun adını yazın. Bu şekilde workflow’unuz içerisinden herhangi bir web servisini çağırabilirsiniz.
Listen Activity:
En az iki aktiviteden oluşması
Listen Activity
, içerisinde sadece
EventDriven Activity
tutabilir.
Listen Activity
barındırdığı
EventDriven
aktivitelerinin olaylarını yakalamalarını bekler. Altında bulunan
EventDriven
akitivelerinden biri kendi olayını yakaladığında diğer
EventDriven
bölümleri iptal edilir.
Listen Activity
bir akış akış aktivitesidir ve
State Machine Workflow
uygulamaları içerisinde kullanılmaz.
Paralel Activity:
İçinde en az iki tane
Sequence Activity
bulunduran
Paralel Activity
, aynı anda birden fazla
Sequence Activity
’nin bağımsız olarak çalıştırılmasını sağlar.
Paralel
aktivite içinde bulunan
Sequence
aktivitelerinin hepsinin çalışması bittiğinde,
Paralel Activity
de görevini tamamlamış olur. Burada dikkat edilmesi gereken nokta birden fazla
Sequence
’in aynı veriye erişmeye çalışmasının problem oluşturabileceğiz.
Policy Activity:
Workflow içerisinde kurallar tanımlayabildiğimiz aktivitedir.
Policy
aktivitesi bizlere kural tabanlı iş akışı tanımlama imkânı sunar. Genelde proje içerisinde koşul tabanlı bir durumla karşılaştığımızda
IfElse
aktivitesi ya da
Policy
aktivitesi kullanırız. İçerisinde akış geçen durumlarda
IfElse
aktivitesi kullanarak mevcut akışın farklı bir yöne doğru ilerlemesini sağlarız. Akış içerisinde küçük kontrol mekanizmaları kullanacaksak ve koşul sonunda akış içerisinde bir değişiklik olmayacaksa
Policy
aktivitesini kullanmamız doğru olur.
Replicator Activity:
Replicator Activity
C# içerisindeki foreach deyimine benzer. Tek bir alt aktiviteden birden fazla kopya oluşturur ve kopyaları çalıştırır. Bir veri koleksiyonu içerisindeki nesne tabanlı alt aktiviteden birden fazla örnek oluşturur ve bu örnekleri çalıştırır. Asıl kullanım yeri
Data-Driven
iş akışlarıdır.
Replicator
Activity
işleri hem
Sequential
hem de
Paralel
olarak yapabilme özelliğine sahiptir.
Sequence Activity:
İçerisinde bulundurduğu aktiviteleri belirlediğimiz sıra ile çalıştırmaya yarayan aktivite türüdür. Yalnız tek bir alt bölüm bulundurabilir yani
IfElse
aktivitesi gibi istediğimiz kadar alt bölüm ekleyemeyiz.
SetState Activity:
State Machine Workflow
içerisinde kullanılan
SetState Activity
, daha önceden tanımladığımız
State
aktiviteleri arasındaki geçişi sağlayan aktivitedir.
SetState
aktivitesinin
TargetStateName
özelliğine geçiş yapılacak
State
aktivitesinin değerini vererek,
SetState
aktivitesini yönlendirmiş oluruz.
State Activity:
State Activity
,
State Machine
Workflow yapısının en önemli parçasıdır. Biz
State Machine Workflow
yapılarını
State
akitivileri ile kurarız. Kendi içinde de
State Activity
barındırabilme özelliğne sahiptir.
StateInitialization
,
StateFinalization
ve
State
olmak üzere 3 ayrı duruma sahiptir.
StateInitialization
başlangıç durumunu ifade eder.
StateFinalization
bitiş durumunu ifade eder.
State
ise ara durumları ifade eder.
State
aktiviteleri arasındaki gezinimi
StateInitialization
aktivitesi,
StateFinalizatin
aktivitesi ve
EventDriven
aktivitesi ile yaparız.
StateInitialization Activity:
State
başladığında herhangi bir
EventDriven
aktivitesi çalışmadan iş akışımız içerisinde bazı işler yapmak istersek burada
StateInitialization
aktivitesini kullanırız.
StateInitialization
aktivitesi tam olarak
State
aktivitesine ilk girildiğinde çalışmaktadır. Bu aktiviteyi
State
aktivitesi içerisinde sadece bir kere kullanabilirisiniz.
Suspend Activity:
Çalışan iş akışı içersinde hata çıktığında, iş akışını beklemeye alabiliriz. Bu sırada iş akışına gelen mesajlar sıraya alınır. İş akışının sunulduğu istemci tarafında
WorkflowRuntime
nesnesinin
WorkflowSuspended
olayı fırlatılır. Böylelikle bir iş akışının ne zaman beklemeye alındığını görebilir ve hatanın çıkma nedenini anlayabiliriz. İş akışının çalışmaya devam etmesi için de iş akışını yeniden başlatmamız gerekmektedir. Bu işi
WorkflowInstance
sınıfının
Resume
metodunu çalıştırarak yaparız.
Terminate Activity:
Bir akış aktivitesi olan
Terminate Activity
, uygulama içerisinde hata çıktığında iş akışını durdurur.
Suspend Activity
ile karıştırmamak gerekir. Çünkü
Suspend
aktivitesi iş akışı içerisinde ciddi bir hata ile karşılaşıldığında iş akışını bekletir.
Terminate Activity
ise iş akışını durdurur yani sonlandırır. Aynı zamanda bu aktivite çıkan hatayı loglar. Çalışan iş akışının sonlandığını
WorkflowRuntime
nesnesinin
WorkflowTerminated
olayı ile yakalamak mümkündür.
Throw Activity:
Hata yakalama aktiviteleri grubunda olan
Throw Activity
, iş akışı içerisinde çıkan hatayı başka bir aktiviteye bildirmek için kullanılır.
Throw
aktivitesini
catch
bloğu içerisinde hata fırlatmak için kullandığımız throw anahtar kelimesine benzetebiliriz.
Throw
aktivitesini herhangi bir aktivitenin
View Fault Handler
bölümü içerisinde kullanmak doğru olacaktır.
Transaction Scope Activity:
Akış aktiviteleri grubunda olan
Transaction Scope Activity
, içerisindeki aktiviteleri aynı
transaction
kapsamı altında çalıştırarak, bu aktivitelerin tek bir iş gibi çalışmasını sağlar. Çalışma esnasında
Transaction Scope
kapsamındaki aktivitelerin herhangi birinde bir problem ile karşılaşılırsa gerçekleştirilen işlemler geri alınır ve kapsam içerisindeki aktiviteler işe başlamadan hangi durumda iseler o duruma getirilirler.
While Activity:
C#’tan da bildiğimiz
While
deyimi,
Windows Workflow Foundation
içerisinde
While Activity
olarak karşımıza çıktı.
While
aktivitesinin koşulu
true
olduğu sürece, içerisine yerleştirdiğimiz aktiviteleri çok hızlı bir şekilde çalıştırmak için tasarlanmış bir aktivitedir.
While
aktivitesinin çalışma koşulu
Policy
aktivitesi ile ya da
Code
aktivitesi ile sağlanabilir.
Aktivitelerin Gruplandırılması
Yukarıda açıkladığımız aktiviteleri gruplandıracak olursak aşağıdaki gibi bir çıktı elde ederiz:
•
Olay yakalama
º EventDriven Activity
º Listen Activity
•
Akış kontrolü
º ConditionalActivityGroup
º IfElse Activity
º IfElseBranch Activty
º Paralel Activity
º Replicator Activity
º Sequence Activity
º Suspend Activity
º Terminate Activity
º While Activity
•
Hata yakalamak
º Fault Handler Activity
º Throw Activity
•
Özel iş akışı mantığı
º Code Activity
•
Web servisleri
º InvokeWebService Activity
•
Kurallar
º Policy Activity
•
Durum Yönetimi
º SetState Activity
º State Activity
º StateInitialization Activity
º StateFinalizationActivity
•
Yerel servis iletişimi
º HandleExternalEvent Activity
•
Transaction
º CompensateActivity
º TransactionScope Activity
Benim düşüncem Windows Workflow Foundation ile ilgili uygulama geliştirmeye başlamadan önce bilinmesi gereken en önemli şey aktiviteleri tanımaktır. Bu yazı içerisinde aktiviteler ile uygulama geliştirecek seviyeye gelmeyeceksiniz. Bir sonraki yazımda kendinizi tamimiyle Windows Workflow Foundation içerisinde bulacağınız “Sequential Workflow Uygulamaları” için gerekli alt yapıyı sağlamak için bu makaleyi yazdım. Şimdiden Out-Of-The-Box aktivitelerini karıştırsanız iyi olur.
Çağdaş Davulcu
cagdas.davulcu@hotmail.com
Makale:
Windows Workflow Foundation Out-Of-The-Box Aktiviteleri .NET 3.0 ve .NET 3.5 Özel Bölümü Çağdaş Davulcu
Yazılan Yorumlar
Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için
tıklayın
.
Üye değilseniz
Üyel Ol
linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
Bu Konuda Son 10
Eklenen Son 10
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl