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
Ahmet Ali  Süzen
Ahmet Ali Süzen
www.ahmetalisuzen.com
İletişme geçmek için tıklayın.
3 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: aktivite Aktivity Framework 3.5 İş Akışı Merhaba Dünya Sequential workflow Visual Studio 2008 VS2008 workflow WWF Kodlama Ahmet Ali Süzen
 
YAZI HAKKINDA
Türü : 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.
Seviyesi : Başlangıç
Kategori : Kodlama
Yayınlanma Tarihi : 17.8.2009
Okunma Sayısı : 19756
Yorum Sayısı : 0     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 26.12.2024
Turhal Temizer
Mac OS/X Removing CUDA 26.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 26.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 26.12.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
Windows Workflow Foundation'a Giriş ve Activity'ler
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon

Merhaba Arkadaşlar ,bu bölümde akitivite ismindeki inşa blokları setini kullanarak süreçleri nasıl tanımlayabileceğimiz ve çalıştırabileceğimiz bir modeli sağlayan Window Workflow ‘u (WWF) genel olarak inceleyeceğiz.Bu bölümde birkaç workflow tipini inceleyip,WF de bulunan yerleşik Aktivitelerin birkaçına değineceğiz.Ayrıca Standart aktivite tiplerinin bazılarının nasıl kullanıldığı görüp,WF ‘yi genişletmek için iki özel aktivite oluşturacağız.

“MERHABA DÜNYA” Örneği ;

Öncelikle VS2008 ‘de şekilde gösterildiği gibi yeni bir Sequential Workflow Console Appilication ‘nı ( workflow runtime ‘ı host edecek bir konsol uygulaması oluşturacaktır.) ve daha sonra aktivitelerin üzerine sürükleyip bırakabileceğimiz bir varsayılan workflow’u seçelim.


Daha sonra toolbox’dan şekildeki gibi bir code aktivity ‘yi tasarım yüzeyine bırakalım.


Aktivitenin sağ üst köşesinde ünlem simgesi,bu aktivite için zorunlu olan değeri atanmamış anlamındadır.Yani ExecuteCode property tanımlanmamıştır.Bu özellik aktivite çalıştırıldığında çağrılacak metodu gösterir.Aktiviteye çift tıklayalım ve oluşan metoda ilk örneği yazalım.
Program çalıştırıldığında,bir WorkflowRuntime property’si oluşur ve daha sonra workflow’un bir kopyası yapılandırılır ve çalıştırılır.
ACTIVITY
Bir workflow içinde her şey aktivitedir.Bu tanım workflowun kendisi içinde geçerlidir,workflow kendisi için diğer aktivitelerin tanımlanmasına izin veren özel bir aktivite tipidir.
Aktiviteler Aktivite sınıfından türeyen sınıflardır.Aktivite sınıfı ezilebilir birkaç metodu tanımlar ve muhtemelen en önemlisi aşağıda kod parçasında gösterilen Execute metodudur;


IfElse Activity
Bu aktivite tıpkı ,C# içindeki If-Else ifadesi gibi çalışır.Aşağıdaki gibi tasarım yüzeyine bırakıldığında iki daldan meydana gelen kompozit bir aktivitedir.Her dal (Brunch) SequenceActivity sınıfından türeyen bir kompozit aktivitedir.Bu sınıf her aktiviteyi yukardan aşağıya doğru çalıştırır.


ParallelAcitvity
Bu aktivite parelel olarak( veya sözde paralel olarak) çalışan bir aktivite setini tanımlamamıza izin verir.Şekildeki gibi bir ParallelActivity ‘ye sahip olduğumuzu düşünürsek,bu sequenceActivity1 ve sequenceActivity2 ‘nin çalıştırılmasını zamanlayacaktır. sequenceActivity tipi runtime ile birinci aktivitenin çalıştırılmasını zamanlar ve bu aktivite tamalandığında 2. Aktiviteyi zamanlar.
 
 
CallExternalMethodActivity
Bir workflow ‘un genellikle workflow dışındaki metotları çağırmasında kullanılır ve bu aktivite bir arayüz ve arayüz üzerinden çağrılacak bir metot tanımlamanızı sağlar.
DelayActivity
Örneğin workflow’unuz masraf talebinizi onaylanması için yöneticiye gönderir,daha sonra onay gelmesi veya gelmemesi halinde masraf talebinizi komuta zincirinde gerekli adıma atayabilirsiniz.
DelayActivity bu senaryonun bir bölümünü oluşturabilir. DelayActivity ‘nın amacı workflow’un çalışmasını devam ettirmeden bir süre bekletmektir. Bunu yapmak için InitializeTimeoutDuration özelliği için bir değer tanımlamamız gerekir.Aşağıdaki örnekte bu tanımlama yapılmıştır.
 
ListenActivity
 Genel bir programlama yapısı,muhtemel olaylardan biri için beklemektir.ListenActivity ,bunu bir workflow içinde gerçekleştirmenin yoludur.
Bir ListenActivity çalıştırıldığında,her dal içindeki ilk aktivitenin üzerinde bir beklemeyi queue ‘ye alır ve bir olay başlatıldığında ,beklemedeki tüm olaylar iptal edilir olayın çıkarıldığı dal geri kalanı işler.
 
Özel Activity’ler
Şuana kadar Systen.WorkFlow.Activities namespace içinde tanımlanmış aktivitelerin bir kaçını inceledik.Bu kısımda özel aktivitelerin nasıl oluşturulacağını ve hem tasarım hemde çalışma zamanında iyi bir kullanıcı deneyimi sağlamak üzere bu aktiviteleri nasıl genişletebileceğimizi öğreneceğiz.
Başlamak için konsola çıktı yazdırmak üzere basitakitivite isimli bir aktivite oluşturalım.Özel aktiviteleri oluştururken bir workflow içinde bir sınıf yapılandırırsınız.Özel aktivitemizi oluşturmak için özel bir sınıf kütüphanesi yapalım ve bu sınıfı Activity base sınıfından türetelim.
 
 


Evet Arkadaşlar resimlerde görüldüğü gibi kendimize özel bir aktivite hazırladık ve bunu tasarımımıza dahil ettik.Tam anlamıyla kullanılabilir durumdadır ama yinede ActivityValidator sınıfından türetilen bir sınıf oluşturup bu sınıfı aktivitemizle ilişkilendirmeliyiz.

using System;
using System.Workflow.ComponentModel.Compiler;
 
namespace WorkflowConsoleApplication1
{
 
    public class basitaktivite : ActivityValidator
    {
        public override ValidationErrorCollection Validate(ValidationManager manager, object obj)
        {
            if (null==manager)
            {
                throw new ArgumentNullException("manager");
            }
            if (null==obj)
            {
                throw new ArgumentNullException("obj");
 
            }
            ValidationErrorCollection error = base.Validate(manager, obj);
            basitaktivite act = obj as basitaktivite;
            if (null==act)
            {
                if (null!=act.Parent)
                {
                    if(string.IsNullOrEmpty(act.Message))
                        error.Add(ValidationError.GetNotSetValidationError("Message"));
                }}
            return error;
                }
            }
        }
    }
         
        
Son olarak geçerlilik kontrolünü desteğini aktivitemize eklemek gerekir.Buda aktiviteyi yazmış olduğumuz sınıfa ActivityValidation attribute’nin eklemektir.

using System;
using System.ComponentModel;
using System.Workflow.ComponentModel;
 
namespace WorkflowConsoleApplication1
{
[ActivityValidator(typeof(basitaktiviti))]
 
    public class basitaktivite : Activity
{
.
.
. ;
Bu şekilde tam anlamıyla özel bir aktivite oluşturduk.Sonuç olarak bu yazıda WF genel yapısı ,merhaba dünya örneği ,aktivitelerin bazıları ile ilgili örneklere, özel aktivite oluşturma ve geçerlilik kontrolü hakkında bilgi sahibi olduk.
Makale:
Windows Workflow Foundation'a Giriş ve Activity'ler Kodlama Ahmet Ali Süzen
  • 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