Makale Özeti

Bu yazımızda WF uygulamalarına giriş yapmış oluyoruz ve tasarım ekranı yardımı ile bir iş akışı aktivitesi nasıl oluşturup sonrasında bunu nasıl tetikleyebileceğimizi incelemiş oluyoruz.

Makale

Microsoft 'un yaklaşık 4 yıl önce yapmış olduğu vizyon değişikliği ile .Net 3.0 Framework sürümü ortaya çıktı. Bu sürümde çok fazla yenilik geliyordu. Özellikle yapılan geliştirmeler windows formların iyileştirilmesi ve görselleştirilmesi anlamında Windows Presentation Foundation (WPF), web servislerinin ve SOA mimarisinin daha etkili kullanılabilmesi için Windows Communication Foundation (WCF), web sayfalarında ve kimlik kontrolleri gerektiren formlarda daha güvenli bir şekilde kayıt işlemleri ve üye girişlerinin yapılabilmesi için Cardspace ve iş akışlarının yönetilebilmesi ve rahatlıkla kullanılabilmesi için Windows Workflow Foundation (WF) olarak gözümüze çarpmaktadır. Zaman ilerledikçe bu teknolojiler üzerinde yapılan gelişmeler ile çok daha stabil ve kullanılabilirliğini arttırarak tercih sebebi olmuşlardır. Özellikle .Net Framework 4.0 ile gelen yenilikler geliştiricileri oldukça memnun etmiştir.

Bu yazımızda ve bundan sonraki takip eden yazılarımızda Windows Workflow Foundation (WF) teknolojisini nasıl daha etkili bir biçimde kullanabiliriz konusunu inceliyor olacağız. İnternet üzerinde ve alınan kitaplardan incelendiği kadarıyla genellikle WF teknolojinin yetilerini ve neler yapılabileceği anlatılmaktadır. Bizim ana amacımız ise WF teknolojisini örnekler yardımı ile nasıl kullanabileceğimizi açıklamak olacaktır.

WF 'un kısaca hangi ortamlarda kullanılabileceğine değinmek gerekirse;
• Asp.Net ile hazırlanmış olan web uygulamalarında herhangi bir işlemin iş akışı yardımıyla tetiklenmesi ve o akışa bağlı olarak hareket edebilmesi esnasında,
• Windows From ile hazırlanmış olan uygulamalarda herhangi bir işlemin iş akışı yardımıyla tetiklenmesi ve o akışa bağlı olarak hareket edebilmesi esnasında,
• Biztalk Server ile hazırlanmış olan uygulamalarda,
• Microsoft Sharepoint Portal üzerinde hazırlanmış olan formlar üzerinde yapılan işlemler sonrasında tetiklenecek olan işlemler esnasında,
• Microsof CRM ve Dynamics üzerinde hazırlanmış olan formlar üzerinde yapılan işlemler sonrasında tetiklenecek olan işlemler esnasında
kullanıldığını gözlemleyebiliriz.

.Net Framework 4.0 'a doğru giderken, WF yapısında çok fazla değişiklik olduğunu gözlemleriz. Hem kullanımı kolaylaştıran hem de geliştiricilerin daha rahat geliştirme yapabilecekleri başarılı bir teknoloji durumunu almıştır. Ancak biz bu yazılarımızda .Net Framework 3.0 ve 3.5 ile kullanım yöntemlerinin anlatıyor olacağız. Çünkü Sharepoint ve CRM gibi teknolojilerin yeni sürümlerinden WF4.0 kullanılmayacaktır. Ülkemizde Sharepoint uygulama geliştiriciliğinin ve projelerininde arttığını ön planda tuttuğumuzda böyle bir karara varmış oluyoruz.

Daha önceki yazılarımızda WF ile ilgili mimari ve teknik bilgilere erişebilirsiniz. Biz yazımızda direk örnek yardımıyla başlıyor olacağız. Örneklerimizi geliştirirken Visual Studio 2010 IDE 'sinden yararlanırken framework olarak .Net 3.0 'ı seçiyor olacağız.

İnceleyeceğimiz ilk örnek bütün programcılık tekniklerinde en temel örnek olan "Merhaba Dünya" olacaktır. Hatırlayacağınız üzere bir önceki örneğimizde kod yardımı ile Workflow sınıfımızı oluşturarak kod yardımı ile kullanıp, sonrasında da bir iş akışını tetiklemiş ve kullanmış olduk.  Bu sefer ise Workflow 'un arayüzünden yararlanarak bir iş akışını nasıl tetikleyebileceğimizi ce kullanabileceğimizi inceliyor olacağız.

Visual Studio ortamında (VS2005 eklentiler yardımı ile, VS2008 ve VS2010 direk kullanım) yeni proje oluştur dedikten sonra Sequential Workflow Console Application seçeneğini seçiyoruz.



Sonrasında oluşturulan projenin tasarım ekranına toolbox yardımı ile Code bileşenini ekliyoruz.


Eklenmiş olan kontrol sonrasında özellikler ekranından ExecuteCode olayını yaklamak gerekmetedir. Ancak biz bu olayı yaklamadan önce bizim için otomatik olarak oluşturulan kodlara göz atalım. İlk olarak proje şablonunda oluşturulmuş olan program.cs dosyasına göz atıyoruz.
using System;
using System.Threading;
using System.Workflow.Runtime;

namespace WorkflowTasarim
{
    class Program
    {
        static void Main(string[] args)
        {
            using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
            {
                AutoResetEvent waitHandle = new AutoResetEvent(false);
                workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); };
                workflowRuntime.WorkflowTerminated += delegate(object sender,  WorkflowTerminatedEventArgs e)
               {
                   Console.WriteLine(e.Exception.Message);
                   waitHandle.Set();
               };

               WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowTasarim.Workflow1));
               instance.Start();

               waitHandle.WaitOne();
           }
        }
    }
}

Bir önceki örneğimizde de kullandığımız üzere WorkflowRuntime ile akışın oluşturulabilmesi ve başlatılabilmesi için gerekli süreçleri başlattıktan sonra WorkflowInstance yardımı ile akış tetiklenir ve işlem yapılır.

Şimdi ise code activity'i kullanmak için yapmamız gereken kısma geldi. Biraz önce code bileşenin execute_code olayının yakalanması esnasında yapacak olduğumuz işlemlerin sorunsuzca gerçekleşeceğinden bahsetmiştik. Şimdi bu işlem için tasarım ekranına eklemiş olduğumuz Code bileşenin üzerine sağ tıklama yaparak özelliklerine gidiyoruz. Karşımıza çıkan ekrandan Execute_Code olayına çift tıklanması sonrasında oluşan kod bloğunun içerisine "Merhaba Dünya" kodunumuzu yazarak çalıştırılması için hazır duruma getiriyoruz.

using System;
using System.Workflow.Activities;

namespace WorkflowTasarim
{
    public sealed partial class Workflow1 : SequentialWorkflowActivity
    {
        public Workflow1()
        {
            InitializeComponent();
        }

        private void codeActivity1_ExecuteCode(object sender, EventArgs e)
        {
            Console.WriteLine("Merhaba Dünya");
        }
    }
}

Hazırlamış olduğumuz bu basit akışı çalıştırdığımızda sonuç aşağıdaki gibi olacaktır.



Sonuç istediğimiz gibidir.

WF ile uygulama geliştirirken daha doğrusu herhangi bir teknoloji ile uygulama geliştirirken biz yazılımcılar için en büyük yardımcısı debug 'tır. WF ile uygulama geliştirirken kod üzerinden alışık olduğumuz şekilde debug yapabilmekle birlikte tasarım üzerine ekleyeceğimiz debug noktalarında da aktivite bazlı olarak debug edebilmemiz mümkündür. Ayrıca aktivite bazlı debug esnasında belirlenen noktaya akış yakalandıktan sonra arka planda yer alan kod parçasına girerek debuga burada devam edecek ve hazırlamış olduğumuz işlemler gerçekleşecektir.



Sonuç olarak bu yazımızda WF uygulamalarına giriş yapmış oluyoruz ve tasarım ekranı yardımı ile bir iş akışı aktivitesi nasıl oluşturup sonrasında bunu nasıl tetikleyebileceğimizi incelemiş oluyoruz.

Umarım yararlı olabilmiştir.

Turhal Temizer

info@turhaltemizer.com
http://turhal.blogspot.com