1. Giriş:
WWF, Microsoft’un .Net Framework 3.0 ve 3.5 ile
kullanıma sunduğu işakışı uyumlu yazılımlar yapabilmeyi sağlayan yazılım
altyapısıdır. .Net Framwork içerisinde bir namespace, bir işakışı motoru ve
Visual Studio üzerinde tasarımı kolaylaştırmaya yönelik araçları içerir. Sunucu
ve istemci taraflı kullanılabilir. WWF sistemleri ve insanları ilgilendiren
işakışları ile ilgili farklı senaryoları destekleyecek bir yapıya sahiptir. WWF
temel olarak 4 bölümden oluşur:
i. Etkinlik Modeli
(Activity Model):
Aktiviteleri bir işin temel yapıtaşı olarak düşünebiliriz.
ii. İşakışı Tasarım Aracı :
Visual Studio içerisinde
görsel olarak işakışlarının tasarlanabileceği bir araç bulunmaktadır. Bu araç
sayesinde aktiviteler ve bunlar arasındaki ilişkiler görsel olarak
tasarlanablmektedir. Bu aracı bir başka windows uygulaması içerisinden de
kullanmak mümkündür. Bu konu ile ilgili detaylı bilgiye buradan ulaşabilirsiniz.
iii. İşakışı Çalışma
Zamanı Motoru (Workflow Runtime):
Tanımlanmış işakışlarını çalıştıran bir çekirdek motor olarak düşünülebilir.
iv. Kural Motoru (Rules Engine) :
Kurala dayalı işakışlarının çalıştırılmasına olanak sağlayan bir motordur.
Detaylı bilgiye buradan ulaşabilirsiniz.
2.
Hello World
Bir klasik olarak ‘Hello World’ uygulaması yapalım. Öncelikle
bunun için yeni bir proje oluşturalım. Tanımlı proje şablonlarından Workflow
altında bulunan ‘Sequential Workflow Console Application’ şablonunu seçiyoruz.
i. Aktivite sınıfının
hazırlanması
Oluşan projede visual studio bizim için bir workflow component i ekliyor ama
biz şimdilik bunu kullanmayacağız. Program.cs
içerisinde WorkflowDemo isimli bir sınıf tanımlıyoruz.
|
Tanımladığımız sınıfın daha önceden bahsettiğimiz aktivite
modeline uygun olarak bir aktivite sınıfından türemesi gerekiyor. Bunun için
tanımlı olan sınıflardan SequentialWorkflowActivity sınıfını kullanıyoruz.
En temel aktivite sınıflarından CodeActivity sınıfından oluşturduğumuz bir
nesne ile ekrana “Hello world” mesajımızı yazdırmak için bu nesnenin
ExecuteCode eventi içerisine ilgili kodu ekliyoruz.
Burada dikkat edilmesi gereken 2 konu bulunmakta. Öncelikle bu oluşturduğumuz
aktivite nesnesini WorkflowDemo sınıfının aktivite listesine eklememiz
gerekiyor. Bu sayede WorkflowDemo sınıfından bir nesne oluşturulup
kullanılırken bizim oluşturduğumuz kod parçası da çalıştırılabilir olacaktır.
İkinci önemli konu ise bu işlemi yapabilmek için aktivite sınıfının
özelliklerinden olan CanModifyActivities özelliğinin işlemden önce açılıp sonra
da kapatılması gerektiğidir.
ii. Aktivite
nesnesinin kullanımı
|
Oluşturduğumuz aktivite sınıfından bir WorkflowInstance
, yani örnek oluşturup bunu WorkflowRuntime ile çalıştırıyoruz.
iii. İş akışı tasarım
aracı kullanarak aynı işlemi yapalım
Önce projeye yeni bir SequentialWorkflow componenti ekliyoruz.
Oluşturduğumuz componente tasarım aracı yardımı ile bir CodeActivity ekliyoruz.
Daha sonra bu aktiviteye çift tıklayarak çalıştırlması gereken kod parçasını
ekliyoruz.
|
class Program |
Sonuç olarak bu örnekte WWF içerisinde kullanılabilecek en temel
işlevlerin nasıl kullanıldığını görmüş olduk.