WF - Out-Of-The-Box Activities Ornekleri 1


Merhaba Arkadaşlar;

Bundan önceki iki makalemizde, kısaca değindiğim aktiviteler ile ilgili, ufak örnekler ile devam ediyorum ;) Her makalede bir den fazla örnek olacak, bilginiz olsun ;)

ConditionedActivityGroup Activity

ConditionedActivityGroup Aktivitesinin, IfElse aktivitesine benzediğini daha önceden belirtmiştim. Eğer birden fazla aktivite ile, belli bir koşulda çalışılması gerekiyorsa ConditionedActivityGroup aktivitesini tercih etmeliyiz. İçindeki aktiviteleri WhenCondition özelliğindeki koşula göre, çalıştıracağına karar verir. IfElse’e göre farkı While ve Paralel aktivite gibi çalışmasıdır. İşlemleri paralel aktivite gibi çalıştırması, Paralel aktivitenin özelliği olan, aynı koşulda çalışması gereken birden fazla aktiviteyi aynı anda çalışma imkanı sunar. ConditionedActivityGroup aktivitesi, içinde bulundurduğu aktivitelerin eğer UntilCondition özelliğine değer ataması yapılmazsa, sonsuza kadar çalışacak demektir.

Öncelikle yeni bir Sequential Workflow Console Application projesi yaratalım.

 

Sequential Workflow bölümüne, toolbox dan ConditionedActivityGroup aracımızı sürükleyip bırakalım

 

Drop Activities Here yazan bölüme üç tane Code Activity sürükleyip bırakalım.

 

Code Activity’lerde ki ünlem işaretlerine dikkat edin. Bu aktivitelere hala bir tanımlama yapılmadığını belirtiyor. Biraz önce işlediğimiz Code Condition ve Declarative Rule Condition seçeneklerinden birisini, WhenCondition özelliğinden seçerek seçimimizi yapmamız gerekiyor. Daha sonra daha önce yaptığımız gibi, ExecuteCode özelliğinin ihtiyacı olan tanımlamayı da yaptıktan sonra bu ünlem işaretleri ortadan kalkacaktır. Bu işlemler biraz önce yaptığımızdan neredeyse farksız. Buradaki fark birden fazla Code Activity’e aynı işlemleri yapmak zorunda olmamız.

 

 

While Activity

Normalde While bir döngü kontrolüdür. Burada da While’ın görevi değişmemektedir. While aktivitesinin Condition özelliğinde belirteceğimiz koşul, normalde kullanılan While koşulunda olduğu gibi, TRUE olduğu sürece dönmeye devam edep, içerisinde ki aktiviteyi de sürekli aktif halde tutacaktır. Squence aktivitesi, içerisinde birden fazla aktiviteyi barındırır ama maalesef While aktivitesinin bunu sağlamaz. While içerisine sadece tek bir aktivite ekleyebilirisiniz. Eğer birden fazla kullanacaksak o zaman Sequence aktivitesinden yardım istemek zorundayız. Yeni bir Sequence Workflow Console Application uygulaması yaratalım.

 

Daha sonra Sequence Workflow bölümüne toolbox’dan While aktivitesini sürükleyip bırakalım

 

 

Kod bölümünden int tipinde bir değişken tanımlaması yapın,

using System;

using System.ComponentModel;

using System.ComponentModel.Design;

using System.Collections;

 

using System.Workflow.ComponentModel.Compiler;

using System.Workflow.ComponentModel.Serialization;

using System.Workflow.ComponentModel;

using System.Workflow.ComponentModel.Design;

using System.Workflow.Runtime;

using System.Workflow.Activities;

using System.Workflow.Activities.Rules;

 

namespace WhileAktivitesi

{

    public sealed partial class Workflow1 : SequentialWorkflowActivity

    {

        public int SayisalDeger = 0;

 

        public Workflow1()

        {

            InitializeComponent();

        }

    }

 

}

 

 

 isim tanımlaması önemli değil. Sadece unutmayın ki isterseniz Code Condition ya da Declarative Rule Condition ile tanımlamanızı yapın, burada değişkeninize verdiğiniz isim ile ancak ulaşabilirsiniz. Ben Code Condition ile devam edeceğim.

using System;

using System.ComponentModel;

using System.ComponentModel.Design;

using System.Collections;

 

using System.Workflow.ComponentModel.Compiler;

using System.Workflow.ComponentModel.Serialization;

using System.Workflow.ComponentModel;

using System.Workflow.ComponentModel.Design;

using System.Workflow.Runtime;

using System.Workflow.Activities;

using System.Workflow.Activities.Rules;

 

namespace WhileAktivitesi

{

    public sealed partial class Workflow1 : SequentialWorkflowActivity

    {

        public int SayisalDeger = 10;

 

        public Workflow1()

        {

            InitializeComponent();

        }

 

        private void Sayisal(object sender, ConditionalEventArgs e)

        {

            if (this.SayisalDeger >= 10) e.Result = true;

            else e.Result = false;

        }

 

        private void kodCalistir(object sender, EventArgs e)

        {

            Console.WriteLine(this.SayisalDeger);

            this.SayisalDeger--;

        }

    }

 

}

 

Programımızı çalıştırdığımızda aşağıdaki gibi sonuca ulaşabiliriz. 

 

 

 







Blog Posts' Cloud