C#nedir?com
 
YAZAR HAKKINDA
Erdem Özdemir
Erdem Özdemir
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
2 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: anlatmaya derleyicisi foundation framework ilgili istersek makalemde metodu oldugunu oldugunu public sinifi sirali windows workflow .NET 3.x Erdem Özdemir
 
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 : Orta
Kategori : .NET 3.x
Yayınlanma Tarihi : 18.4.2007
Okunma Sayısı : 25179
Yorum Sayısı : 1     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜ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.
 
.net TV RSS 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.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer 'in Blogu
Conda install environment.yml Package 27.5.2020
Turhal Temizer 'in Blogu
Mac OS/X Removing CUDA 27.5.2020
Burak Selim Şenyurt
Sekiz Saatlik Sonsuz Döngü 27.5.2020
Burak Selim Şenyurt
Switch Case Kullanmadan Kod Yazılabilir mi? 27.5.2020
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Windows Workflow Foundation Giriş
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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.

<SequentialWorkflowActivity
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 x:Class="MyWorkflow">
<CodeActivity ExecuteCode="SayHello" />
    <x:Code>
    <![CDATA[
        private void SayHello(object sender, EventArgs e)
       {
            Console.WriteLine("Hello, workflow!");
       }]]>
    </x:Code>
</SequentialWorkflowActivity>

 

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,
  1. System.Workflow.ComponentModel;
  2. System.Workflow.Runtime;
  3. System.Workflow.Activities;
  1. Faaliyet ve iş akışı oluşturmak için temel sınıfları, arayüzleri ve temel modelleme kalıplarını sağlar.
  2. 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.
  3. 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
erdem.ozdemir@karash.biz

Makale:
Windows Workflow Foundation Giriş .NET 3.0 ve .NET 3.5 Özel Bölümü Erdem Özdemir
  • 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