Workflow Foundation ile Flowchart Aktivitesi Oluşturmak

Bu yazımızda Flowchart aktivitesi içeren workflow’ların nasıl oluşturulduğunu göreceğiz. Adından da anlaşılacağı gibi bir Flowchart aktivitesi aynı bir flowchart gibi çalışır. Aktiviteler birbirlerine karar yapıları ile bağlıdırlar (decision trees). Daha önceki yazılarımızda gördüğümüz gibi Sequence aktivitesi içerisinde aktiviteler sıralı olarak yukarıdan aşağıya çalışırlar. Fakat bir Flowchart aktivitesi içerisinde aktiviteler karar dallanmasına bağlı olarak herhangi bir sırada çalışabilirler.

Hemen bununla ilgili bir proje oluşturalım. Visual Studio 2010 –> File –> New –> Project –> Visual C# –> Workflow –> Workflow Console Application adımlarını takip edelim.

Oluşturduğumuz aktiviteye bir Flowchart aktivitesi sürükleyip bırakalım.

WF-Flowchart-Activity

Ortadaki yeşil daire flowchart aktivitemizin başlangıç düğümünü gösterir. Aşağıdaki boşluk alan da flowchart’ımızı oluşturmak için ekleyeceğimiz aktiviteleri içerme görevini üstlenir.

Bir Flowchart aktivitesi ile Sequence aktivitesi arasındaki temel fark alt aktivitelerin birbirlerine nasıl bağlandıklarıdır. Önceki yazılarımıza baktığımızda Sequence aktivitelerinin içindeki aktiviteler daima yukarıdan aşağıya doğru çalışırlar. Aktivitelerin çalışma sıralarını yerlerini değiştirerek kontrol edebiliriz. Flowchart aktivitesinde ise aktiviteleri diagram içerisinde istediğiniz yere koyabilirsiniz. Daha da önemlisi, bu aktivitelerin aralarına oklar çizmek zorundayız. Tabi Flowchart aktivitesi içerisinde, bir önceki aktiviteye de bağlantı kurabilirsiniz.

Hemen Flowchart aktivitemizin içerisine yeşil dairenin alt tarafına bir adet Writeline aktivitesi ekleyelim. DisplayName özelliği “Merhaba”, Text özelliği de “Merhaba Dünya” olsun.

Başlangıç düğümümüzün üzerine fare ile geldiğimizde dört kenarında gri kutucuklar belirecektir. Bu kutucuklardan birini tıklayıp Merhaba adındaki Writeline aktivitemizin kenarlarına bağlantı görününceye kadar sürükleyip bırakalım.

WF-Start-Node

Bu bize iki aktivitenin nasıl birbirlerine bağlandığı konusunda fikir verir.

Şimdi de diagramımızdaki Writeline aktivitemizin altına bir FlowDecision aktivitesi sürükleyip bırakalım. Bu aktivite sarı bir elmas şeklindedir tıpkı normal bir flowchart diagramındaki karar yapıları gibi. Bu aktivitenin üzerine tıklayıp Properties penceresinden Condition kısmına DateTime.Now.Hour > 12 ifadesini yerleştirelim. Bu ifadeyi yazdıktan sonra FlowDecision aktivitesinin üzerine gelip bu koşul ifadesini görebiliriz.

WF-FlowDecision

Ayrıca yukarıdaki sarı elmas şeklinin sağ üst köşesindeki sarı ok ile koşul ifadesini diagrama sabitleyebiliriz. Burada gördüğümüz gibi aktivitenin sol tarafında True sağ tarafında ise False dalları bulunur. Properties penceresinden TrueLabel özelliğine “Öğleden Sonra”, FalseLabel özelliğine de “Sabah” yazalım. Bu aktivitenin üzerine geldiğimizde bu özelliklerin isimlerini sağ ve sol tarafta görebiliriz.

Bu aşamalardan sonra Merhaba Writeline aktivitemizi FlowDecision aktivitemize bağlayalım. Sonra da FlowDecision aktivitesinin sağ tarafına yeni bir Writeline aktivitesi sürükleyip bırakalım. DisplayName özelliğini “Sabah”, Text özelliğini de “İyi Sabahlar” olarak ayarlayalım. Ardından FlowDecision aktivitemizin Sabah bağlantısını yeni eklediğimiz Sabah adındaki Writeline aktivitemize bağlayalım.

WF-Connection

NOT: Göreceğiniz gibi FlowDecision aktivitesinde DisplayName özelliği bulunmuyor.

Başka bir FlowDecision aktivitesini ilk eklediğimiz olanın soluna sürükleyip bırakalım. Bu aktivitenin Condition kısmına DateTime.Now.Hour >= 18 ifadesini yazalım. İlk FlowDecision aktivitemizin “Öğleden Sonra” dalını bu yeni eklediğimiz aktiviteye bağlayalım. Yeni aktivitemizin FalseLabel özelliğini “Öğleden Sonra”, TrueLabel özelliğini de “Akşam” olarak ayarlayalım. Ardından 2 adet Writeline aktivitesi ekleyelim. Sırayısla DisplayName özelliklerine “Akşam”, “Öğleden Sonra”, Text özelliklerine de “İyi Akşamlar” ve “İyi Öğle Sonraları” yazalım. Daha sonra ikinci eklediğimiz FlowDecision aktivitesini bu Writeline aktivitelerine bağlayalım.

WF-FlowDecision2

Herşey tamam. Şimdi projemizi çalıştırmadan önce Program.cs dosyamızı açalım. WorkflowInvoker sınıfı içerisinden çağırdığımız Invoke() methodu ardından aşağıdaki kodları yazalım;


Console.WriteLine("ENTER to exit");
Console.ReadLine();

Projemizi F5 ile çalıştıralım. Günün hangi saatinde olduğunuza göre aşağıdakine benzer bir sonuç alacaksınız;

Merhaba Dünya
İyi Akşamlar
ENTER to exit

Bu yazımızda FlowDecision aktivitesinin nasıl kullanıldığına dair bilgiler vermeye çalıştım.