Makale Özeti

Microsft’un .Net Framework 3.0 ile getirdiği Windows Workflow Foundation, yazılım mimarlarının, analistlerin ve kernel developerların projelerindeki iş akışlarını belirlemekte zorlandığı noktalarda bir kurtarıcı gibi devreye giren ve Enterprise uygulamalarda işlerin ölçeklenebilmesini sağlayan bir teknolojidir. Bu yazı içerisinde Workflow kavramı ve Windows Workflow Foundation konularının mantığından söz edeceğim.

Makale

Workflow kavramı ve Windows Workflow Foundation

 

Microsft’un .Net Framework 3.0 ile getirdiği Windows Workflow Foundation, yazılım mimarlarının, analistlerin ve kernel developerların projelerindeki iş akışlarını belirlemekte zorlandığı noktalarda bir kurtarıcı gibi devreye giren ve Enterprise uygulamalarda işlerin ölçeklenebilmesini sağlayan bir teknolojidir. Bu yazı içerisinde Workflow kavramı ve Windows Workflow Foundation konularının mantığından söz edeceğim.

 

Sizlere WWF teknolojisi ile ilgili bilgi vermeden önce İş Akışı(Workflow) kavramından söz etmek istiyorum. Nasıl veri tabanı ile ilgili bir şeyler öğrenmeye başlamadan veri nedir öğrenmemiz gerekiyorsa, Windows Workflow Foundation ile ilgili bir şeyler öğrenmeden önce Workflow kavramını öğrenmemiz gerekir.

 

Workflow ile ilgili bölümü okumaya başlamadan önce Microsoft tarafından geliştirilen Windows Workflow Foundation (WWF), uygulama çalışırken iş akışını real-time olarak değiştirebilme imkânını sunmuştur. Özellikle Content Management uygulamalarının vazgeçilmeyecek teknolojisi olacaktır. Windows Workflow Foundation konusu ile ilgili tüm detayları sizlerle paylaşmadan önce özellikle bilmeniz gereken kavram iş akışıdır. Aşağıdaki bölümü Windows Workflow Foundation’ın abc’si gibi düşünerek okumanızı tavsiye ederim. Aşağıda sizlerle paylaştığım bilgiler yaklaşık 5 wwf kitabı, MSDN ve Microsoft uygulama geliştirme ekiplerinde çalışan kişilerin kaynaklarını araştırarak edindiğim bilgilerin harmanlanmasından oluşmaktadır.

 

İş Akışı (Workflow) Nedir?

 

Türkçe karşılığıyla iş akışı anlamına gelen Workflow, tasarımınız içerisinde bulunan öğelerin bir iş içerisinde bulunabileceği durumları gösterir. Workflow bir öğenin aktörler arasındaki dolaşımı esnasında izleyebileceği adımların bir araya gelmesidir. Genelde bu işlemler iş dünyasında geçerli olan ve tamamlanma kıstasına sahip adımlardan oluşur. Kısaca adımlar, kurallar ve kararlar bütünüdür.

 

 

Örnek1: “Pizza siparişi verme işlemi…”

 

1-     Kasiyere sipariş vermek istediğiniz pizza türünü söylersiniz.

2-     Kasiyer verdiğiniz sipariş bilgilerini pizza yapma işiyle ilgilenen kişiye bildirir.

3-     Pizza malzemeleri hamur üzerine eklenir.

4-     Pizza fırına koyulur.

5-     Pizza pişer.

6-     Pizzayı yapan kişi pizzayı kasiyere verir.

7-     Kasiyer pizzayı bize verir.

 

Burada akış kasiyer ile başlar, daha sonra pizzayı yapacak kişi ile devam eder. Tekrar kasiyere döner ve son olarak pizza elimizdedir.

 

 

Örnek2: “Bir iş yerinde çalışan kişinin avans istemesi işlemi…”

 

Senaryo1:

 

1-     Kişi yetkilisinden avans ister.

2-     Yetkili kişi bu isteği değerlendirir.

3-     Eğer yetkili kişi bu isteği uygun görürse muhasebe bölümünden o kişinin avans alıp alamayacağını sorgular.

4-     Eğer o kişi avans alabilecek seviyedeyse muhasebe bölümü kişinin istediği avans miktarını kişinin hesabına yatırır.

5-     Kişinin hesabına para yatırıldıktan sonra o kişinin yetkilisine bu işlem bildirilir.

6-     Bu işlem avans isteyen kişiye bildirilir ve işlem sonlanır.

 

Senaryo2:

 

1-     Kişi yetkilisinden avans ister.

2-     Yetkili kişi bu isteği değerlendirir.

3-     Yetkili kişi bu isteği geri çevirir.

 

Senaryo3:

 

1-     Kişi yetkilisinden avans ister.

2-     Yetkili kişi bu isteği değerlendirir.

3-     Eğer yetkili kişi bu isteği uygun görürse muhasebe bölümünden o kişinin avans alıp alamayacağını sorgular.

4-     Muhasebe bölümü bu işlemin o anda uygun olmadığını söyler.

5-     Yetkili kişi muhasebe bölümünün uygun olmadığı gerekçesiyle avans isteyen kişiye avans alamayacağını söyler.

 

Buna benzeyen daha birçok senaryo oluşturulabilir. Sadece yukarıda belirttiğim 3 senaryoyu inceleyecek olursak, ana işin “avans isteme” olduğunu çok rahat bir şekilde görürüz.

                                     

Avans isteme işi içerisindeki akışı senaryolardan çıkarabiliriz. İş akışı çözümlemesi içerisindeki yaklaşımımız bu iş içerisindeki durumları açığa çıkarmak olmalıdır. Yukarıdaki avans isteme senaryosunda avans durumlarını aşağıdaki gibi belirleyebiliriz.

 

Avans Durumları:

1-     Talep Edildi

2-     Yetkili Değerlendirmesinde

3-     Muhasebe Değerlendirmesinde

4-     Onaylandı

5-     Geri Çevrildi

 

 

Yukarıda belirttiğim iki örnekte de iş akışı, insanlar arasındaki etkileşim üzerine kurulmuştur. Bu durum her zaman insanlar arasındaki etkileşim için olmayabilir. İş akışı içerisinde iki dağıtık uygulamanın birbirleri arasındaki etkileşimi de olabilir. Bunlara en güzel örnek içerik yönetimi uygulamalarıdır.

 

 

 

İş Akışı Tipleri

 

İş akışı kavramının ne olduğu üzerine konuştuktan sonra uygulamamız içerisinde tanımlayacağımız iş akışlarının tiplerini de belirlememiz gerekir. Bu bölümde iş akışını belirlerken kullanacağımız Ordered Workflow(Sequential Workflow), Event-Driven Workflow(State Machine Workflow) ve Data-Driven Workflow iş akışı tiplerini göreceğiz.

 

 

1- Ordered Workflow(Sequential Workflow)

 

Karşımıza daha çok Sequential(sıralı) Workflow adıyla çıkacak olan iş akışı tipinin özelliği içerisinde bulundurduğu aktiviteleri(activity) sıralı(adım adım) olarak çalıştırmasıdır. Ordered Workflow’lar bir tetikleyici ile başlayan ve bir daha önceden tanımlanmış bir adımdan diğer bir adıma geçerek ilerleyen iş sırası olarak da tanımlanabilir. Bu iş içerisinde kontrol ya da karar yapısı içerebilir. If bloğu ya da while döngüsü gibi…

 

 

Elimizde müşterimize yollayacağımız bir dokümanın olduğunu varsayalım. Bu dokümanın ilk önce A kişisinin dokümanı gözden geçirmesi, B kişisinin onaylaması ve C kişisinin de bu dokümanı müşterimize yollaması gerekiyorsa Sequential Workflow ideal bir seçim olacaktır.

 

2- Event-Driven Workflow(State Machine Workflow)

 

Çoğunlukla finite state machine(FSM) olarak adlandırılır. Bir başlangıç durumundan belirli bir olay ya da aktiviteyi temel alarak başka bir duruma geçme şeklinde çalışan mekanizmaya sahiptir.  Belirli bir durum içerisinde fırlatılan daha önceden tanımlanmış bir olay, mevcut durumu önceden tanımlanmış başka bir duruma geçirerek uygulama içerisindeki etkileşimi sağlar. State Machine Workflow’da amaç mevcut durumu değiştirmektir. Bir uyarıda bulunmak gerekirse, State Machine Workflow içerisinde bir durumun değişmesi için önceden tanımlanmış olayın fırlatılması zorunluluğu vardır. Event-Driven Workflow kavramı da oradan gelmektedir.

 

 

Yukarıdaki State Machine Workflow’u inceleyelim. Siparişin oluşturulması ile WaitinForOrder durumundan OrderOpen durumuna geçiliyor. Sipariş güncellenirse OrderOpen, sipariş işleme sokulursa da OrderProcessed durumuna geçiliyor. Fark ettiyseniz olaylar ve olaylar gerçekleştiğinde devreye giren aktiviteler aracılığıyla mevcut durum değiştiriliyor. Amacım State Machine Workflow tipine bir giriş yapmak. Bu konuya daha sonra tekrar döneceğim.

 

 

3- Data-Driven Workflow

 

Sizlere Data-Driven Workflow mantığını bir senaryoyu örnek göstererek anlatacağım. En uygun senaryo “Stok Eksiği” senaryosu:

 

“Seri üretim hattı üzerinde küçük aletler yapılıyor ve kullanılan program stoklarda yeteri kadar malzemenin olduğunu söylüyor. Stok yöneticisi depoya üretimde kullanılan malzemeleri getirmeye gittiğinde yeteri kadar stok olmadığını yani stoklarda eksik olduğunu görüyor.”

 

Yukarıdaki senaryoda yaşanan problemler eğer Data-Driven Workflow yöntemi ile belirlenerek geliştirilmiş olsaydı bu durumun neden kaynaklandığını anlayabilir, hatta bu durum oluşmadan önlemleri alınabilirdi.

 

Örneğin stoklarda kullanılan malzemelerden birkaçının bozuk çıkma ihtimali durumunda ne yapılacağının kestirilmesi ya da stoklardaki malzemenin belirli bir kritik seviye altına indiğinde uygulamanın nasıl davranması gerektiği senaryolarına göre uygulamanın davranış şekillerini belirlemek. (Örn: tedarikçi firmaya otomatik olarak sipariş verme, stok yöneticisine bu durumu haber verme ya da stok yöneticisinin belirli aralıklarla stok miktarını raporlama görevlerinin eklenmesi gibi…).

 

Fark ettiyseniz Data-Driven Workflow, Sequential Workflow ya da State Machine Workflow gibi fiziksel olarak açıklayabileceğimiz bir iş akışı değil. Kavramsal bir konu ve iş akışlarını geliştirirken göz önünde bulundurmamız gereken bir durumdur.

 

 

 

.Net Framework 3.0

 

Microsoft’un geliştirmiş olduğu Windows Workflow Foundation(WWF) .Net Framework 3.0’ın bir parçasıdır. Diğer .Net Framework 3.0 teklonojileri ise Windows Presentation Foundation, Windows Communication Foundation ve Windows CardSpace’dir. WWF asıl olarak Microsoft Vista işletim sistemi için geliştirilmiştir fakat Windows XP, Windows Server 2003 gibi işletim sistemleri WWF’i desteklemektedir. .Net Framework 3.0, .Net Framework 2.0 tabanlıdır.

 

 

.Net Framework 2.0

 

.Net Framework 3.0

 

 

 

  • Windows Workflow Foundation(WWF,  “WinOE” takma adı ile biliniyor)
  • Windows Presentation Foundation(WPF, “Avlon” takma adı ile biliniyor)
  • Windows Communication Foundation(WCF, “Indigo” takma adı ile biliniyor)
  • Windows CardSpace(WCS, “InfoCard”)

 

 

 

Windows Workflow Foundation

 

Günümüzde geliştirilen uygulamalarda akışların yönetimini tasarım seviyesinden çok kod içerisinden yapmaktaydık. WWF ile iş akışı kavramı tasarım seviyesine çekilerek yazılım mimarlarının, proje yöneticilerinin ve kernel developerların daha görsel iş akışı tasarımları yapabilmelerini sağlamak isteniyor. Görsellik ile bu kişilerin analiz yapma becerilerini ön plana çıkararak geliştirilen uygulamaların başarı oranını da yükseleceği de tahmin edilmekte.

 

Eğer belirli bir iş akışı ile ilerleyen bir uygulama geliştiriyorsanız, uygulamanız içerisindeki kuralları yönetecek olan WWF’i kullanabilirsiniz. Eğer uygulamanız insan etkileşimlerini kapsayan serilerden oluşuyorsa, WWF’in state machine diyagramlarını kullanarak bildirim(declarative) programlama stili ile uygulamanızı geliştirebilirsiniz. Eğer size yüksek esneklikte özelleştirilebilir bir uygulama gerekiyorsa, iş akışlarının doğasından gelen bildirim(declarative) mantığı, çalışma akışı ile iş akışını birbirinden ayırmanız için bir silah olabilir.

 

Not: .Net Framework 3.0 ile eskiden daha çok kullanılan impreative programlamanın yerini declarative programlamanın aldığı açık olarak görülmektedir.

 

Ayrıca Windows Workflow Foundation ile Microsoft’un geliştirmiş olduğu diğer ürünler ile iletişim sağlayabilir ve dağıtık uygulamalar da geliştirebilirsiniz. Microsoft Biztalk Server ve Share Point Services WWF ile birlikte çalışmaya tasarlanmışlardır.

 

Neden Windows Workflow Foundation Kullanalım?

 

·        Yeni iş akışları geliştirmek için bizlere esnek ve güçlü bir framework sunar. Böylelikle sizler de zamanınızı ve enerjinizi kendi framework ünüzü oluşturmak için harcarsınız.

 

·        Kendi uygulamanızın tutarlı olmasına katkıda bulunur. Yeni bir uygulama geliştirirken ya da mevcut bir uygulamaya bakım yaparken kendi içerisindeki programlama modelinin tutarlılığı ve bizlere sunduğu araçlar, verimliliğinizi arttırır.

 

·        Sequential ve State Machine iş akışı tiplerini destekler. Bu başlık ile ilgili yazım içerisinde yeterince açıklama yaptığımı düşündüğüm için daha fazla açıklama yapmayacağımJ.

 

·        Workflowların kalıcılığını destekler. WWF içerisinde tanımladığınız bir workflowu belirli bir noktada kaydedip daha sonra tekrar uygulamanı içerisine yükleyebilirisiniz. Not: Workflowların serialize olabildiğini biliyor muydunuz?

 

·        Windows Workflow Foundation Domain-Specific model kullanılarak problem çözmeyi destekler. Microsoft sizi kendi özel activite bileşenlerinizi geliştirmeniz için teşvik eder. Özelleştirilmiş bileşenler sizin problemlerinizi adreslerler ve uygulamayı geliştirdiğiniz alanlar altında sizin sunduğunuz ortak çözümlerle çözülürler.

 

·        Workflowlar genişletilebilir bir temel üzerine kurulmuştur. Sizlere sunulan mevcut aktiviteleri kullanarak kendi aktivitelerinizi geliştirebilirsiniz.

 

·        Tasarım zamanında ya da çalışma zamanında kaynak kodda hiçbir değişiklik yapmadan iş akışını değiştirebilirsiniz.

 

Bunların sizi ikna etmeye yetecek kadar fazla olması nedeniyle madde sayısını arttırmıyorum J.

 

 

 

 

Özet:

 

Sizlerle bu yazı içerisinde iş akışı kavramından, günümüz iş dünyasında kullanılan iş akışı tiplerinden söz ettim. İş akışı tipleri içerisinde Sequential, State Machine ve Data-Driven Workflow kavramlarını sizlere aktarmaya çalıştım. .Net framework 3.0’ın .Net framework 2.0 tabanlı olduğundan söz ettim. Son olarak WWF’in ne olduğundan ve Neden WWF kullanmamız gerktiğinden söz ettim. Not: Bu yazı içerisinde kullandığım resimleri MSDN 2008 içerisinde bizlere verilmiş örnek uygulamalardan aldım.