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
Turhal Temizer
Turhal Temizer
http://www.turhaltemizer.com
İletişme geçmek için tıklayın.
92 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: .Net .Net 3.0 .NEt 3.5 Foundation Temizer Turhal Visual Studio WF Windows Workflow Workflow Foundation WWF .NET 3.x Turhal Temizer
 
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 : 22.1.2010
Okunma Sayısı : 18707
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
WF - Exception İşlemleri
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Günümüzde iş akışı teknolojilerini sayar mısınız şeklinde bir soru geldiğinde bu çözümün Microsoft kanadında ki ürünü olarak aklımıza ilk olarak Windows Workflow Foundation çözümü gelmektedir. Özellikle insanlar tarafından tetiklenen (Human Workflow) iş akışı yapıları arasında çok kullanışlı bir teknoloji olarak bulunmaktadır.

Workflow Foundation teknolojisi incelemeye hem kod yardımı ile hem de tasarım ekranı üzerinden yapmış olduğumuz basit bir uygulama ile başlamıştık. Bu yazı dizimizde ki ana amaç iş akışı ile ilgili uygulama geliştirmek istediğimizde nasıl aklımızda nasıl yapacağız şeklinde bir soru işareti kalmadan rahatlıkla yapmaktadır.

Geliştirilen bütün uygulama tiplerinde ortaya çıkan istinai durumları (Exception) tespit edip kontrol ediyor olabilmek en önemli özelliklerden birisidir. Bu yazımızda Workflow uygulamalarında istisnaları nasıl kontrol edebileceğimizi incelemeye çalışıyor olacağız.

WF 'te Exception kavramını örnek üzerinden incelersek çok daha akılda kalıcı olacaktır. Örneği, Visual Studio 2010 Beta 2 IDE 'sinde .Net Framework 3.0 sürümü üzerinde geliştiriyor olacağız. Peki, neden .Net 4.0 dururken 3.0 üzerinde geliştiriyoruz. Sharepoint uygulamaları (2010 sürümü dahil olmak üzere), daha önceden geliştirilen uygulamaları  ve .Net 3.0 ile geliştirilecek olan yeni uygulamaları göz önünde tutarak bu teknoloji üzerinde inceliyoruz.

Uygulamamız için proje şablonlarından Workflow seçeneğini ve Framework sürümü olarakta .Net 3.0 'ı seçtikten sonra Sequential Workflow Console Application 'ı seçerek çalışmaya başlayabiliriz.



Exception örneğini basitçe inceleyebilmek için karşımıza çıkan dizayn ekranına Code Activity bileşeni ekliyoruz.



Sonrasında eklemiş olduğumuz kontrolün üzerine sağ tıklama yaptıktan sonra properties ekranından events (olaylar) seçeneğinden ExecuteCode seçeneğine çift tıklayarak arka plana kod oluşturuyor ve aşağıdaki basit kod parçasını ekliyoruz.



private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
    throw new ApplicationException("Başarısız oldu...");
}

Code Activity kontrolünün çalıştığı anda çalışacak olan olayına uygulamanın istisnai duruma düşmesi için gerekli kod parçasını ekliyoruz. Bir önceki yazımızdan da hatırlayacağınız üzere WorkflowRuntime sınıfının altında yer alan WorkflowTerminated özelliğinden düşen istisnai durumları görüntüleyebilmemiz mümkündür. Eğer ki uygulamayı çalıştırır ve olayı bulunduğu delegate 'in içerisinde yer alan kod parçasının içerine breakpoint eklememiz durumunda debug anında düştüğünü ve bizim eklemiş olduğumuz mesajın yazıldığını göreceğiz.



Basit anlamda ilk istisna yakalanması işlemini sağladık. Hata durumlarını daha spesifik yakayabilmemiz için workflow ortamında iki adet daha exception tipi bulunmaktadur. Bunlar Cancel Handler ve Fault Handler 'dır.


Bizim şimdi değineceğimiz bölüm ise View Fault Handlers olacaktır. İşlemin sonuçlanamadığı durumlar için bu bölüm kullanılmakta ve istisnaları yakalamak için Fault Handler bileşeni kullanılmaktadır.



Bu bileşeni Fault Handlers bölümüne sürükledikten sonra karşımıza çıkan ekranın üzerine sağ tıklama yaptıktan sonra properties ekranına geliyor ve FaultType 'a biraz önce CodeActivity içerisinde kullanmış olduğumuz ApplicationException sınfını bularak seçiyoruz.

Not: Bu tip mscorlib 'in içerisinde yer alan System isim alanında yer alır.



Sonrasında view fault handlers ekranında eklemiş olduğumuz FaultHandler bileşeninin içerisine Code Activity sürükledikten sonra properties ekranından ExecuteCode olayına istediğimiz hata mesajını yazdırıyoruz.

 
Eklemiş olduğumuz kod parçası aşağıdaki gibi olacaktır.

private void codeActivity2_ExecuteCode(object sender, EventArgs e)
{
    Console.WriteLine("Olamaz... Yakaladın beni.");
    Console.ReadLine();
}

Daha sonra uygulamayı derleyip debug modda çalıştırdığımızda iş akışı içerisine eklemiş olduğumuz code activity 'de ilk olarak hataya düşecek ve sonrasında da faulthandler içerisine düşücektir.



Düşündüğümüz senaryolar sorunsuzca çalışıyor. Şimdi ise iş akışı tasarım ekranına Sequence ekliyoruz ve daha önce oluşturmuş olduğumuz codeActivity1 isimli kontrolü bu bileşenin içerisine ekliyoruz.


Sonrasında daha önce fault handlers durumunda yapmış olduğumuz işlemlerin hepsini tekrarlayarak aşağıdaki durumu sağlıyoruz.


Sonradan eklemiş olduğumuz sequence 'in içerisine eklemiş olduğumuz FaultHandler bileşeninin içerisine düşen istisnai durumları artık gözlemleyebiliriz. Projemizi derledikten ve hatasız olduğunu anladıktan sonra debug mod ile çalıştırdıktan sonra sequence içerisine eklemiş olduğumuz hata bilgisine geldiğini ve bu mesajı gösterdiğini gözlemleyeceğiz.


Ayrıca uygulama çalıştırılırken gözlemleneceği gibi ilk olarak en iç tarafta yer alan yerel iş akışları tamamlanmakta ve sonrasında dış akışlara geçilmektedir. Bu mantıktan ötürüde en son eklediğimiz sequnce bileşeninin içerisinde bulunan FaultHandler 'a girecek ve akışı burada kesecektir. Bu sayede iç kontroller esnasında eğer ki akışta bir problem çıkarsa akışı durdurup hata mesajını en son adımı beklemeden verdirebilme olanağımız olacaktır.

Hazırlanmış olan proje çalışırken herhangi bir aksaklık (Fault) ortaya çıkması durumunda istediğimiz mesajları gösterebileceğimizi gördük. Ancak daha önceden de değindiğimiz gibi uygulama esnasında ortaya çıkan sorunlar ApplicationException sınıfında tutulmaktadır. Bu sebepten ötürü iş akış diyagramına eklemiş olduğumuz FaultHandler bileşeninin özellikler kısmında yer alan Fault kısmını kullanarak belirtmiş olduğumuz hata mesajını verdiyor olacağız. Hatırlayacağınız üzere yazımıza ilk başladığımızda ApplicationException sınıfını kullanmış,  WorkflowRuntime sınıfının workflowTerminated olayını tetiklemiş ve oluşan uygulama aksaklıklarında "Başarısız oldu..." mesajını verdirmiştik. Bu durumu şimdi FaultHandler bileşenini eklemiş olduğumuz yerlerde nasıl kullanacağımıza göz atalım.

FaultHandler bileşenin üzerinde sağ tıklama yaptıktan sonra karşımıza çıkan ekrandaki özelliklerden Fault özelliğine değeri atayacağız.

Bu değer için ApplicationException sınıfında bir özellik (property) tanımlayıp kullanıyor olacağız.

private ApplicationException myException;

public ApplicationException MyException
{
    get { return myException; }
    set { myException = value; }
}

Özelliği tanımladıktan sonra biraz önce göstermiş olduğumuz yere yol olarak MyException özelliğini veriyoruz.



Artık uygulamamızı çalıştırıp hata mesajımızı olabilirim. Debug modda çalıştırdığımız karşımıza çıkan durum tam istediğimiz gibi olacaktır. Daha önceden MyException sınıfını kullanarak belirttiğimiz hata mesajını belirttiğimiz her yerde görebilme olanağımız vardır.


Gözlemlediğimiz üzere istediğimiz mesaj değer olarak karşımıza çıkmıştır.

Şimdi yapacağımız işlemde ise Sequence içerisinde yer alan codeActivity 1 'i silmek ve yerine Throw bilşenini eklemek olacaktır. Bu sayede proje çalışırken karşılaşılan herhangi bir istisnai durumda fırlatılan hatayı kontrol etmiş ve istediğimiz mesajı verebilmiş olacağız.

Throw bileşeninde kullanılmak üzere ApplicationException sınfından yararlanılarak bir özellik oluşturuyoruz.

public ApplicationException ExceptionToThrow
{
    get { return (new ApplicationException("Pardon!")); }
}


Throw bilşeninde özelliği aşağıdaki gibi kullanabiliriz.


ThrowActivity bileşenine sağ tıklama yaptıktan sonra Fault özelliğine daha önceden tanımlamış olduğumuz özelliği atıyoruz.



Bu işlem sonrasında artık projemizi oluşturup hazırlanan property 'ler yardımı throw bilşenini kontrol edebiliriz. Debug ile breakpoint noktasına geldikten sonra MyException.Message 'dan dönecek olan değere ExceptionToThrow a atamış olduğumuz değeri görürüz.


Görüldüğü üzere istediğimiz hata mesajını göstermiş oluyoruz.

Bu örnek ile geldik bir yazımızın daha sonuna, bu yazımızda Windows Workflow Foundation 3.0 ile Exception kavramını detaylı bir şekilde incelemeye çalıştık. Hem kod yardımı ile hemde gerekli WF bileşenlerinin kullanarak nasıl kullanabileceğimize değinmiş olduk.

Umarım yararlı olabilmiştir.

Turhal Temizer

[email protected]
[email protected]
http://turhal.blogspot.com

Makale:
WF - Exception İşlemleri .NET 3.0 ve .NET 3.5 Özel Bölümü Turhal Temizer
  • Yazılan Yorumlar
  • Yorum Yaz
ŞUB
11
2010
güzel olmuş elinize sağlık ama biraz daha yalın olabilirdi
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