Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Ali Hıdımoğlu
Ali Hıdımoğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
7 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: akisini border=0 cellpadding=5 cellspacing=0 ekleyelim. oradan programimiza projemize projemizi studio verilerimizi visual windows workflow yolunu .NET 3.x Ali Hıdımoğlu
 
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 : Başlangıç
Kategori : .NET 3.x
Yayınlanma Tarihi : 9.10.2007
Okunma Sayısı : 26331
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Ş
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 21.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 21.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 21.11.2024
  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
Workflow Foundation - Temel İşlemler
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Windows Workflow Foundation teknolojisi çalışmalarımıza tanımlama, çalıştırma ve kontrol gibi özellikler getiren bir alt yapı, Windows temelinde yer alan dağıtılmış iş koordinasyonu sistemine benzer bir yapıya sahip olan bir teknolojidir. Aralarındaki fark ise; her program dağıtılımış iş koordinasyonunu kullanmayabilir, fakat her programda bir iş akış yapısı olmalıdır - neredeyse tüm programlarda.

İş akışlarına değinmek gerekirse genelde adım adım ilerlenen bir yapıya sahip. Her adımın içerisinde kendi kuralları ve açıklamaları vardır. Bunu şöyle düşünelim bir lokantaya gittiniz ve sipariş verdiniz, garsonun gelmesi ve size olan tavrı o adımın bir koşuludur. Aynı şekilde siparişin aşçıya iletilmesi ve hazırlanması da kendi içerisinde koşullar ve tanımlamalar gerektirir. Bu bir iş akışını basit şekilde kafanızda canlandırmışsa sistemin kendi projelerimizde, görsel temalarla birleşerek oluşturulduğunu, hangi adımda ne gibi hatalarla karışlaştığınızı, hangi sorunları nerede nasıl çözebileceğinizi gösteren bir sistem istiyorsanız işte bu konumuz olan Windows Workflow Foundation’dır.

Bu makaleler dizisinde açıklayıcı anlatım yerine, örnek temelli anlatıma değinmeyi planlıyorum. Basit örneklerden yola çıkarak projelerimizi daha karmaşık hale getireceğiz ve bu sırada WF’nin getirmiş olduğu yeniliklere sıkça değineceğiz. Makale içerisinde “Workflow” kelimesini “iş akışı” olarak gündeme getireceğim ki anlatım daha basit olsun.

Projelerimiz içerisinde genel olarak C# kodu ile programlarımızı yazacağız. Fakat dosyaların temel yapısında yine .net 3.0 ile birlikte gelen XAML(Genişletilebilir Uygulama İşaretleme Dili) yapısını kullanacağız. Bu yapı temelinde XML (Genişletilebilir İşaretleme Dili) yapısının daha da gelişmiş bir versiyonu.


Bilgisayarımızda Olması Gerekenler:

- Windows Vista ya da XP SP2 kurulu bir PC
- Visual Studio 2005 (C# ve SQL Express içermeli) ya da Visual Studio 2008 Beta 2
- Windows Workflow Foundation SDK

Malzemelerin bir kaçını buradan bulabilirsiniz. VS 2005 için Eklenti paketleri ve Vista SDK bulunmakta http://msdn2.microsoft.com/en-us/netframework/bb264589.aspx İlerleyen örneklerde örneklere özel malzemeleri size bildireceğim. Örneklerimizde bazı konularda ek dosyalar bulunmakta bunu makalemiz içerisinde yüklenebilir halde bulabilirsiniz.
Bu örnekte bulacaklarımız:

- “Merhaba Dünya!” Programına giriş yapacağız
- Parametreler ile Workflow (iş akışımız)’umuza veri çağıracağız.

Amaçlarımız:

- VS2005 ile sıralı iş akışlarına WF ile değinmiş olmak,
- VS2005 hata ayıklama ile iş akışlarımızı incelemek,
- İş akışımıza veri çağırmak,
- Aktif bir iş akışına bir olay çağırmak,

Alıştırma 1 – “Merhaba Dünya!” iş akışı yaratalım :

Daha önce anlatılmış bir konu olabilir. Fakat diğer konuları bu örnek üzerinden geliştirip inceleyeceğimiz için bu kısmı hızlı ve fazla ayrıntıya girmeden değineceğim. Bu projemizde basit olarka bir uyarı mesajı verip Windows Formlarını projemizde nasıl kullanacağımıza da değinmiş olacağız.

Yeni bir proje açalım:   

- Visual Studio 2005 ya da elimizde varsa Visual Studio 2008 Beta 2’yi açalım
- File > New > Project yolunu izleyerek yeni proje yaratma ekranına gelelim ve oradan Visual C# > Workflow yolunu izleyelim.
- Önümüze gelen ekrandan Sequential Workflow Console Application seçelim ve projemize “MerhabaDunyaAkisi” adını verip Masaüstümüze projemizi yaratalım.



- Projemizi yarattıktan sonra Workflow1.cs dosyasını göreceğiz. Bu dosya şimdilik bir işimize yaramayacağından dosyamızı silelim.
- Solution Explorer kısmından projemize ("MerhabaDunyaAkisi") sağ tıklayarak, Add > New Item yolunu izleyelim ve projemize Sequential Workflow (with code separation) dosyasını ekleyelim. İsmi Workflow1.xoml olan bir dosya projemize eklendi.
- Bu dosya Workflow1.xoml ve Workflow1.xoml.cs adı altında iki dosya bulundurmakta bunlardan ilki XML yapıyı taşımakta, ikincisi ise C# kod tabanını barındırmaktadır.

Kod aktivitesi yaratalım:  

- Solution Exlorer dan yarattığımız Workflow1.xoml dosyasına çift tıklayarak dizayn kısmında açalım.
- Toolbox (araçkutusu) paneline giriş yapıp oradan kullanabileceğimiz aktivitelere bir göz atalım. Ve oradan Code(Kod) aktivitesini tutup projemizin Drop Here(Buraya sürükleyin) kısmına atalım.
- Code aktivitesinin hemen üstündeki uyarıya tıkladığımızda bize o uyarının sebebiniz verecektir oradan uyarımıza – ExecuteCode - tıklarsak Property(özellikler) ekranı açılacaktır.
- ExecuteCode kısmına codeActivity1_CodeHandler yazıp Enter tuşuna basıyoruz ve hemen Code aktivitesinin handler(işleyici) sini açmış oluyoruz. Direk kod tabanlı açılan yapıda fonksiyonumuzun içine aşağıdaki komutu yazalım. Farkettiğiniz üzere bu fonksiyon kod tabanlı yapıda yapılan aktiviteleri yakalayıp fonksiyonumuzu çalıştırıyor.

Console.WriteLine("Merhaba Dünya!");

- Ctrl + Shift+ B ya da Build > Build Solution seçeneği ile projemizi derleyelim.
Yeni iş akışımızı hata ayıklama sistemi ile çalıştıralım:  

- Ekranımızın üst kısmından Workflow1.xoml sayfasına geçip Code aktivitesine sağ tıklayıp Breakpoint > Insert Breakpoint diyelim ve aktivitemizin yanında kırmızı bir daire görelim.
- F5 Tuşuna basıp projemizi çalıştıralım.
- İş akışı ara yüzünde ConsoleTestHost çalışacak ve Code aktivitesinin sarı bir kutucukta bulunduğunu göreceğiz. Bu bizim programımızın derleyicisinin Code aktivitesinde durduğunu gösteriyor.
- F11 ya da Debug > Step Into seçeneği ile Handler fonksiyonumuzu çalıştıralım.
- Gördüğümüz gibi fonksiyonumuza giriş yapıyor yine F11’e basarak bir adım daha ilerleyelim ve göreceğimiz gibi programımız “Merhaba Dünya!” yazıp iş akışını bitirecektir.



Alıştırma 2 - Parametreler ile Workflowumuza veri çağırmak  

Bu alıştırmamızda “MerhabaDunyaAkisi” dosyamızı kullanıp veri göndereceğiz fakat bunu yaparken Windows Forms kullanıp verilerimizi Windows Forms dosyalarından çekeceğiz. Aslında yaptıklarımız çok zor olmayacak fakat veri alışverişlerini algılamamızı sağlayacağına inanıyorum. Workflow sisteminde iki temel veri akışı mantığı var bunlardan biri Parameters(parametreler) ve Events(olaylar) yöntemleri bu alıştırmada parametre kavramından değineceğiz ilerde geleceğimiz olaylar yöntemi ile veri aktarımına şimdilik bu alıştırmada değinmiyoruz.

İş akışımıza parametrelerimizi tanıtalım   

- Şimdi önceden yapmış olduğumuz - ya da ekte sunmuş olduğum “MerhabaDunyaAkisi” buradan indirip – projesini açalım ve oradan Workflow1.xoml.cs dosyasına girelim.
- Workflow1 sınıfımız içerisine yeni bir property ekleyelim bunun için pro yazıp Tab duşuna ardı ardına iki defa basalım. (bknz: snippet kullanımı) Projemize “ad” ve “soyad” adı altında iki tane string özelliği ekleyelim.

         private string ad;
         public string Ad
         {
             get { return ad; }
             set { ad = value; }
         }
         private string soyad;
         public string Soyad
         {
             get { return soyad; }
             set { soyad = value; }
         }
Code aktivitesini düzenleyelim   

- Projemiz içerisinde Windows Formlarından yararlanacağımız için Forms referansını eklememiz gerek. Bunun için Solution Explorer’ımızda projemizin ismine sağ tıklayarak Add Referance sekmesine tıklayalım.
- Buradan .net kısmından System.Windows.Forms referansını projemize ekleyelim. (v.2.0)
- Şimdi kod ekranımıza tekrardan gelip codeActivity1_CodeHandler fonksiyonumuza şu kodu yazalım.

private void codeActivity1_CodeHandler(object sender, EventArgs e)
{
     System.Windows.Forms.MessageBox.Show("Merhaba: " + ad + " " + soyad);
}
Yarattığımız iş akışını çalıştıralım   

- Projemize yarattığımız iş akışını test etmek amacı ile basit bir Windows Forms uygulaması ekleyelim bunun için File > Add > New Project yolunu izleyerek Visual C# seklemsinden WinFormTestHost adında bir Windows Application ekleyelim. ( VS 2008 Orcas Beta 2 kullanan arkadaşlar için projemizi ilk yaratırken 3.5 Framework kullandık fakat bazı hatalar var sanırım sisteminde Windows Application açarken 3.0 Framework seçersek hatasız sistemi çalıştırabiliriz.)
- Projemizi ekledikten sonra proje içersindeki Program.cs ve Form1.cs dosyalarını silelim. Solution Explorer içerisinden Windows programımıza sağ tıklayarak Add > Existing Item yolunu izleyelim ve çıkan ekrandan bu linkte vermiş olduğum WinFormTestHost projesindeki Program.cs , Form1.designer.cs, Form1.resx, Form2.cs dosyalarını yükleyelim. Bunu yapıyoruz çünkü o dosyalarda konumuzun dışında birkaç nokta bulunmakta bunlara girerek konunun bütünlüğünden sapmak istemiyorum.



- Bu dosyalar dan Form1.cs içerisine bakarsak

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.Workflow.ComponentModel;
using System.Workflow.Runtime;
using System.Workflow.Runtime.Hosting;


namespace WinFormTestHost
{
   public partial class Form1 : Form
{
        // yeni bir iş akışı çalışması ekliyoruz
        private WorkflowRuntime wr;
        private string workflowAssembly = "";
        private string workflowTypeName = "";


        public Form1()
        {
            InitializeComponent();

            // yarattığımız iş akışını tanıtıyoruz
            workflowAssembly = "MerhabaDunyaAkisi";
            workflowTypeName = "MerhabaDunyaAkisi.Workflow1";
        }
        private void btnAkisBaslat_Click(object sender, EventArgs e)
        {
            //iş akışı tanımlayıcısının çalışıp çalışmadığına bakıyoruz
            if (wr == null)
            {
                wr = new WorkflowRuntime();
                wr.StartRuntime();
            }

            //yeni bir sözlük elementi ile parametreleri ayıklıyoruz
            Dictionary parameters = new Dictionary();
            parameters.Add("Ad", txtAd.Text);
            parameters.Add("Soyad", txtSoyad.Text);

            //iş akışı tanımlayıcısına iş akışımızı başlatıyoruz
            WorkflowInstance instance = wr.CreateWorkflow(typeof(MerhabaDunyaAkisi.Workflow1, parameters);
            instance.Start();
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
       {
            //projemiz kapanırken iş akışı tanımlayıcımızı da sonlandırıyoruz.
            if (wr != null)
            {
                 if (wr.IsStarted)
                 {
                      wr.StopRuntime();
                 }
            }
        }
   }
- Projemizin çalışması için dosyaları ekledikten sonra yine Solution Explorer üzerinden Windows programımıza sağ tıklayıp Add Referance kısmına tıklıyoruz. Gelen pencereden Projects sekmesine tıklarsak MerhabaDunyaAkisi projemizi programımıza tanıtabiliriz.
- Bu işlemden sonra Workflow mantığını da projemize aktarmamız gerek bunu yapmak için yine bir üstteki maddenin yolu işe referans ekleme sayfasına gelip .NET sekmesinde System.Workflow.Activities, System.Workflow.ComponentModel, System.Workflow.Runtime referanslarını da programımıza tanıtıyoruz.



- Son olarak da Windows programımıza sağ tıklayıp Set as Startup Project sekmesine tıklarsak başlangıçta Windows projemiz çalışır.
- F5’e basıp projemizi çalıştıralım. Verilerimizi girelim. Ve başarı ile verilerimizi aldığımız görelim.



Mantık olarak programımızın yaptığı olay butona basıldığında iş akışını yaratıyor, onu yakalayıp parametreleri buluyor, bu parametreleri bizim projemizdeki parametrelere eşitliyor – textboxlar. İş akışının fonksiyonu çalıştığında bizim projemiz içerisinden verilerimizi alıp ekrana gösteriyor.

Bu makalede bir Workflow (iş akışı) projesinden parametreler yardımı ile nasıl veri alınır nasıl veri aktarılır ve basit manada İş Akışı Projeleri nasıl yapılır bunlara değindik. Tamamlanmış halini buradan indirebilirsiniz.

İyi Çalışmalar
Ali Hıdımoğlu
E-mail: [email protected]

Makale:
Workflow Foundation - Temel İşlemler .NET 3.0 ve .NET 3.5 Özel Bölümü Ali Hıdımoğlu
  • Yazılan Yorumlar
  • Yorum Yaz
ŞUB
25
2008
Başalbıç için güzel bir makale. Teşekkürler...
Sayfalar : 1 
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