|
Windows Workflow Foundation Giriş |
|
Gönderiliyor lütfen bekleyin... |
|
|
Microsoft, .NET Framework 2.0’a eklediği 4 yenilik ile oluşturduğu yeni yapının adını .NET Framework 3.0 olarak duyurdu.
Bu dört yapı Windows Presentation Foundation ( WPF ), Windows Communication Foundation ( WCF ), Windows Workflow Foundation ( WF )ve CardSpace’dir. Ben bu makalemde sizlere Windows Workflow Foundation ( Windows İş Akışı Altyapısı ) ‘ı anlatmaya çalışacağım.
WF, Windows platformunda çalışan uygulamalarda kullanılacak iş akışları için araç ve iş akışı motoru içeren programlama modelidir. WF , sıralı yönetimsel uygulamalar iş akışı, iş kuralına dayalı iş akışları, döküman merkezli işakışından tutun servis yönelimli uygulamalar için iş akışına kadar geniş bir yelpazede destek sağlayabilmektedir.
WF ’in bize sağlayacağı yararlardan bahsedersek, uygulama geliştirirkenözellikle büyük ölçekli projelerde bize sağlayacağı güçlü altyapı sayesinde, biz sadece üst kademede iş mantığına yoğunlaşıp, iş akışı için sadece kuralları belirleyeceğiz böylece işlerimizi daha kısa sürede bitirme imkanına sahip olabileceğiz. Gerek kısa süreçli gerek uzun süreçli tüm iş mantıklarında WF’ den faydalanabiliriz. WF, esnek yapısı sayesinde yeniden derlemeye gerek kalmadan iş mantığı yada kurallarını değiştirme imkanı sunar. Grafiksel tasarım arayüzünü kullanarak iş mantıklarımızı daha hızlı, daha esnek ve daha rahat hazırlayabiliriz.
WF’i Visual Studio 2005’te çalıştırabilmek için önce
http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=en
adresinden .NET Framework 3.0 ’ ı ,sonra
http://www.microsoft.com/downloads/details.aspx?familyid=5d61409e-1fa3-48cf-8023-e8f38e709ba6&displaylang=en adresinden “Visual Studio 2005 extensions for .NET Framework 3.0 (Windows Workflow Foundation)” ‘ı yüklememiz gerekmektedir.
Artık yeni bir WF uygulaması yapmaya hazır hale geldik.
VS 2005’i açıp yeni bir proje oluşturduğumuzda aşağıdaki ekran karşımıza gelecek.
Burada Workflow sekmesinde 6 adet şablon bulunmakta. Bunların 5 tanesi hazır şablondur. Bunlar sırası ile Sıralı İş Akışı Konsol Uygulaması , Sıralı İş Akışı Kütüphanesi, İş Akışı Faaliyet Kütüphanesi, Durum Makinesi İş Akışı Konsol Uygulaması, Durum Makinesi İş Akışı Kütüphanesi ‘ dir. Sonuncusu ise boş bir İş Akışı projesi açar. İlk 5’inden her hangi birisini yanlışlıkla açsak bile bu sorun olmaz. Mesela Workflow Activity Library seçelim.
Tasarım alanında bulunan aktiviteyi seçip özelliklerinde “Base Class”’ a tıkladığımızda çıkan ekrandan miras alınacak temel sınıfı seçebiliriz. Burada istersek framework’ ün sunduğu temel sınıfları istersek projemizde yer alan bir aktiviteden miras alabiliriz. Biz örneğimizde SequenceWorkflowActivity’ i seçelim. Böylelikle bir sıralı iş akışı yapabilecek duruma geldik.
Solution Explorer’ a baktığımız zaman dosyamızın uzantısının “cs” olduğunu görüyoruz. Bu, iş akışmızı C# ile kodlayacağımız manasına geliyor. Ama istersek sadece XAML yada hem XAML hem C# da kullanabiliriz.
Yukarıdaki şekilde de görebilceğimiz gibi, eğer XAML ‘i tek başına yada C# \ VB ile kullanırsak derlemek için önce Workflow derleyicisi kodları derler, ardından C# \ VB derleyicisi kodları derler , sonra .NET Assembly Workflow Instance’ ı oluşturur. Eğer sadece C# \ VB kullanırsak Workflow derleyicisini esgeçerek direk C# \ VB derleyicisi tarafından kodlar derlenecektir, sonra .NET Assembly Workflow Instance’ ı oluşturur.
Projemize yeni bir iş akışı eklemek isteğimizde
Sequential Workflow(code) ve Sequential Workflow(with code separation) olarak iki farklı şekilde seçmemiz mümkün. Burada dikkatimizi çeken nokta, 2. seçeneğin açıklamasında Sıralı İş Akışının XAML ile tanımlanacağı ama uzantısının XOML olduğudur. XOML, Extensible Object Markup Language manasına gelmekte olup aslında formatı XAML ‘ dir ve sadece WF iş akışı nesnesi olduğunu belirtmek maksadıyla kullanılmaktadır.
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.Runtime;
using System.Workflow.Activities;
namespace ActivityLibrary1
{
public partial class MyActivityWithXAML: System.Workflow.Activities.SequentialWorkflowActivity
{
public MyActivity()
{
}
}
}
--MyActivityWithXAML.xoml.cs--
|
<SequentialWorkflowActivity
x:Class="MyActivityLibrary.MyActivityWithXAML"
Name="MyActivityWithXAML"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"></SequentialWorkflowActivity>
|
--MyActivityWithXAML.xoml-- |
|
Yeni oluşturduğumuz iş akışı dosyasının kod kısmını incelediğimizde, normal cs dosyasından farkı olmadığını görüyoruz. Sadece InitializeConponent metodu sınıfın yapıcı metodunda bulunmuyor. Bunun sebebi ise iş akışı ile ilgili bilgilerin MyActivityWithXAML.xoml dosyasında tutulmasındandır. Solution Explorer’da MyActivityWithXAML.xoml dosyasının üstüne sağ tıklayıp Open With... -> XML Editor’ü seçtiğimizde aşağıdaki XAML formatlı xoml dosyası açılacaktır. Bu XML taglarını incelediğimizde öncelikle nesnemizin bir SequentialWorkflowActivity olduğunu, Tam Nitelendirilmiş Adının(FQN-Fully Qualified Name)’ MyActivityLibrary. MyActivityWithXAML olduğunu, nesnenin isminin MyActivityWithXAML olduğunu, xmlns olarak ise
http://schemas.microsoft.com/winfx/2006/xaml/workflow
olduğunu dolayısıyla bunun bir xaml formatlı bir iş akışı dosyası olduğunu anlıyoruz.
using System;
using
System.ComponentModel;
using
System.ComponentModel.Design;
using
System.Collections;
using System.Drawing;
using
System.Workflow.ComponentModel;
using
System.Workflow.ComponentModel.Design;
using
System.Workflow.ComponentModel.Compiler;
using
System.Workflow.ComponentModel.Serialization;
using
System.Workflow.Runtime;
using
System.Workflow.Activities;
namespace
ActivityLibrary1
{
public
partial
class
MyActivity :
System.Workflow.Activities.SequentialWorkflowActivity
{
public MyActivity()
{
InitializeComponent();
}
}
}
|
--MyActivityWithXAML.xoml-- |
MyActivity.cs dosyasını incelersek MyActivityWithXAML.xoml.cs dosyasından tek farkı InitializeComponent metodunun olması. Bu metodu da incelersek
[System.Diagnostics.DebuggerNonUserCode]
private
void InitializeComponent()
{
this.Name =
"MyActivity";
}
|
nesnenin Name özelliğine “MyActivity”’nin
atandığını göreceğiz. Metodun üzerindeki
DebuggerNonUserCode
attribute’u ise Debug ederken bu metodu kullanıcıya
göstermeden es geçmesini sağlar ve metodun içine girmez.
Sadece XAML kullanarak basitce konsoldan bir yazdırma
işlemini ise ![CDATA[]]
arasına normal C# kodalarını yazarak elde edebiliriz.
Bir iş akışı oluşturabilmek için bize gerekli olan 3 tane
temel isimuzayına ihtiyacımız vardır. Bunlar,
- System.Workflow.ComponentModel;
- System.Workflow.Runtime;
- System.Workflow.Activities;
- Faaliyet ve iş akışı oluşturmak için temel sınıfları,
arayüzleri ve temel modelleme kalıplarını sağlar.
- Bir iş akışı nesne örneğinin çalışması ve iş akışı
çalışma zamanı moturunun denetimi için sınıf ve arayüzleri içerir. Bu
isimuzayının en önemli sınıflerından birisi olan WorkflowRuntime sınıfı
uygulama etki alanıyla ilgili iş akışı çalışma zamanı motorunun denetimi,
yapılandırılması ve olaylara üyelikleri ile ilgili kullanılır.
WorkflowInstance sınıfı ise her iş akışı nesne örneğine bir vekil sağlar ve
bu sayede iş akışının işlemesini denetler.
- Bir iş sürecinin çalıştırılabilir örneğinin oluşturulması
ve çalıştırılması için iş akışına eklenen faaliyetleri tanımlar.
Özet olarak bu makalemizde Windows Workflow Foundation
nedir, WF ‘ i nasıl kullanabiliriz, ve ilk projeyi yarattığımızda neler ile
karşılaşacağımızı ele aldık. Bir sonraki makalemde geniş bir örnek ile WF’i
detaylı olarak anlatmaya çalışacağım.
Referanslar :
http://msdn.microsoft.com/msdnmag
http://www.codeproject.com
http://wf.netfx3.com/
http://blogs.msdn.com/pandrew
http://blogs.msdn.com/davegreen
Programming Windows Workflow Foundation: Practical WF Techniques and Examples
using XAML and C# --- K. Scott Allen
Erdem ÖZDEMİR
[email protected]
Makale:
Windows Workflow Foundation Giriş .NET 3.0 ve .NET 3.5 Özel Bölümü Erdem Özdemir
|
|
|
-
-
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
|
|