Arkadaşlar Merhaba;
Bu kategoride şimdiye kadar hep .net 3.5'e kadar olan aktiviteleri, ve genel olarak Windows Workflow Foundation'un yapısından, aktivite bileşenlerinden, hosting vs. bahsederek, elimden geldiğince sizlere bu teknolojiyi tanıtmaya çalıştım. Bu yazımız ve daha sonraki takip eden yazılarımda ise, .NEt Framework 4.0 ile birlikte gelen yeni aktivite bileşenlerinden bahsedeceğim.
Şuan'a kadar genel olarak Sequence aktivitesini ve yapısını kullanmıştık. Hatırlarsınız ki bu aktivitemiz, sıralı bir şekilde ve ukarıdan aşağıya doğru şekilde içerisindeki aktiviteleri çalıştırmaya yarıyordu. Flowchart ve FlowDecision bileşenleri bu yapıdan çok farklı birşekilde, istediğiniz adımdan sonra, akışı yönete imkanını bizlere sunuyor. Bu da demek oluyorki daha fonksiyonel bir yapı ile çalışma fırsatımız var.
Bu yazımda .Net Framework 4.0 ile ilgli ilk yazım olduğu için sizlere Flowchart haricinde, Windows Workflow Foundation 4.0 ile gelen bazı yeniliklerden de bahsediyor olacağım. Bunlara değinmeden önce, Visual Studio 2010 ve .Net Framework 4.0 ile yeni bir Workflow Foundation projesi açalım ve incelemeye başlayalım ;)
Kullanacağımız şablon, Workflow Console Application, olacaktır. Genel olarak bugüne kadar hep bu şablonu kullandığımızı hatırlatmak istedim ve , bu nedenden solayı yenilikleri bu şablon üzerinden incelemenin daha faydalı olacağını sanıyorum.
Projemiz oluşturulduktan sonra, Workflow designer'ın değiştiğini çok rahat fark edebilirsiniz. Aşağıda VAriables, Argument ve Import olarak 3 bölümün olduğunu görebilirsiniz.
Variables, Workflow'umuz içerisinde değişkenleri deklare edebilmemiz için kullanabileceğimiz bir bölüm. Bu Variable'ları aktiviti bileşenlerinin içerisinde kullanılabilecek şekilde tanımlamamız, yani scope bazlı olarak kullanımları mümkündür. Tabii ki, değiken tipimizi vermemiz, scope'u belirmemiz ve aynı zaman da Default değerini atamamız da aynı yerden mümkün ;)
Arguments, Workflow'umuz içerisine ve ya dışarısına veri akışını kolaylaştırmak için kullanılabilmektedir.
Imports, Workflow'umuz da ihtiyacımız olan namespace'leri, projemize import etmek için kullanabilmekteyiz.
Arka planda XAML olduğunu, Properties'e Search'ün eklendiğini ve ToolBox'ın çok daha iyi şekilde kategorize edilip, daha zenginleştiğini eminim fark etmişsiniz ;)
Flowchart ve FlowDecision'a dönmek gerekirse; Flowchart'ın kendine özgü özelliği olan, duruma göre akışın yönünün değişmesi ve akış şemalarına çok fazla benzemesi, bu güne kadar örneklerimizde kullandığımız Sequence den gerçekten çok farklı bir yapı sunduğunu görebiliriz. ToolBox'ın Flowchart kategorisinden, Flowchart aktivitesini desing tarafına sürükleyip bırakarak uygulamamıza kaldığımız yerden devam edebiliriz.
Mouse ile Start yazan yere gidildiğinde, etrafında bazı şekillerin çıktığını görebilirsiniz. Start bölümü, akışımızın başladığı yerin başlangızı ve etrafında çıkan her bir şekile de, oklar çıkararak, akışın nereye gideceği ve hangi aktiviteyi çalıştıracağını belirlememiz mümkün. Flowchart içerisinde her hangi bir yere, aktivite bileşenimizi sürükleyip bırakabilirsiniz, bu konuda her hangi bir kısıtlama sözkonusu değildir. Bu sürüklediğiniz aktivite ile FLowchart'ı ilişkilendirmek için, Start yazan yere gitmeniz ve etrafında çıkan şekillerden birisini sürükleyip, aktivitenize bıraktığınızda, bir ok çıkacaktır ve akışın o yöne oğru gideceğini belirtmiş olabilirsiniz. Tabii ki programın akışında, belirli karar yapılarının "koşul" kullanılması gerekmektedir. Biz bu gne kadar hep İfElseBranchActiviy'i kullanıştık. Ancak burada Flowchart ile birlikte FlowDecision'ı kullarak karar yapılarımızı belirleyebiliriz.
FlowDecision'da Tureu ve False değerlerini döndürüp, akışın yönünü belirleme imkanını bizlere sunmakta. Yapılası gereken sadece, hangi aktiviteden sonra bu karar yapısınn kullanılasını istiyorsak, o activity bileşeninden, FlowDecision'a bir ok çıkarmak olacaktır. Daha sonra Ture ve False değerlerinde, hangi aktivieye yönlenmesini ve ya ne aktivitenin durdurulmasını/sonlanmasını/bekletilmesini belirtebilirsiniz.
Ben Flowchart ve FlowDecision'dan bahsetmek ve örneklemek için, rastgele activity bileşenleri seçtim. Siz kendiniz ihtiyacınıza göre örneklendirebilirsiniz.