Pages

Tuesday, December 7, 2010

Bir "Workflow" tanımlamak için "Extensible Application Markup Language" nasıl kullanılır?

Windows Workflow Foundation,XAML( the Extensible Application Markup Language)olarak sözedilen XML temsilini kullanan bir "Workflow" tanımlar.Bir birbiri ardına gerçekleşen "workflow" equentialworkflowActivity olduğu düşünülebilir.

"SequentialWorkflowActivity"lere ilave durumdaki XML ilavelerinizi konumlayabilirsiniz.Bunlar sınıf ve XML düzeyli isim alanlarının isimlerini bağdaştırır durumda olacaktır.

Daha sonra "Workflow" kaydedip, onu "Visual studio" içinde açabilirsiniz.Ve sonra sıralı "Workflows" olduğunu göreceksiniz.

Burada sıralı "Workflows" veya temel aktiviteleri ayırmanız gerekmiyor;bir anlamda "State Mchine" ile basit anlamda ayırabilirsiniz."Visual Studio" geri dönerseniz bir State Machine" var olduğunu göreceksiniz.

"StateMachineWorkflowActivity" yerine "SequentialWorkFlowActivity" geri getirin.
Burada XML kot,aktivite ağacının bir XML temsilini oluşturur.Burada aktivitelerinizi container aktivitelerde birbirine geçirilmiş olarak düşünebilirsiniz.Bu durumda container olarak hizmet edecek alt seviyede olan bir root SequentialWorkflowActivity vardır.Daha sonra bir codeActivity ekleyip Visual designer'da nasıl göründüğüne bakabilirsiniz.

Simdi bir codeActivity ile sıralı bir "workflow"unuz olduğunu göreceksiniz.Bir geçerli düzeyde hatanızın bulunduğunu göreceksiniz.Burada Visual Studio,"ExecuteCode alanı henüz olmadığını rapor eder.O aktivitenin XML temsilinde , bir alan ismi ve değeri oluşturman gerekecek.Visual designer'da ki activity inceleyelim.

Diyer karşıt durumlu aktivitelere aktiviteler iç içe konabilir.Bunu bir örneyi "ParallelActivity"dir."ParallelActivity",sıralı ,parallel düzenli aktiviteler ve paralel durumda işleve konacak aktivitelerden oluşabilir.Bu üstesinden gelinen durum "Child sequence activities" herhangi bir miktarı ile "ParallelActivity" içindedir.

Notepad içine XAML kodunuzu kaydettikten sonra ,Visual designer içinde nasıl göründüğüne bir bakın.Burada üç "child sequence activities" kapsayan bir parallel activity eklediniz.

Burada "Workflow"un XML temsilinin "Workflow"un grafiksel temsili ile nasıl özdeş durumda olduğunu görebilirsiniz.Şimdi activities ekleyip yapılandırarak XML içine onları dahil etmek için ilerleyebilirsiniz.Veya onları Visual designer içine dahil edebilirsiniz.



Monday, December 6, 2010

Workflows oluşturulması ve hatalarının ayıklanması

Burada gelişimcilarin Visual Studio ile XML veya Workflow Designer kullanarak Workflows nasıl oluşturduklarını kısaca değineceğiz.


"Extensible Application Markup Language Nedir?

Bildirimsel yapı olarak "XML";

"XAML", Application Markup Language için konumlanmış durumdadır ve microsoft ile oluşturulmuş olan yeni bir "markup language"dir. Birnevi "Workflow" geliştirmek için kullanabileceğiniz XML temelli bir "declarative markup language" olduğunu söylemek mümkündür. XAML ile herhangi bir prosodür düzeyli kot yazmaksızın bir giriş düzeyli workflow oluşturabilirsiniz.


XAML, hatta Windows Presentation Foundation uygulaması oluşturmak için kullanılan "markup language" olduğunu söyleyebiliriz.


Prosedür düzeyli kotların ilişkilendirilmesi:

Kot taraflı dosyaları kullanarak XAML uygulamalarınıza "Microsoft Visual Basic veya Microsoft C# kodunu ilişkilendirebilirsiniz.Şayet bunu yaparsanız, "Workflow" iki tane dosyayı kapsayacaktır.

. XAML dosya= Bu dosya aktivitelerin tanımlamasını kapsar durumddır.

.Kot taraflı dosya= Bu dosyalar özel Visual Basic veya C# kotlarını kapsar.

Örneyin "CodeActivity" aktivitesinin işleve koyuyor olduğu "prosedür kodu" yazmanız gerekebilir. Basit durumlar için XAML kotlarınızda sıralı durumda ki kotlarınızı özelleştirebilirsiniz.


Monday, November 22, 2010

Özel Aktivite Nedir ?

Bu sınıfta "WF"nın ilişkilendirilebileceği kullanışlı yerleşik aktivitelerin geniş çeşitliliğini gördünüz.Yinede "WF" genel bir amaç edinmiş gelişim teknolojisi olmasından dolayı Microsoft,bütün olası sonuçları çözmek için genel aktiviteleri kullanır durumda deyildir."Calculating simple" değerleri gibi "CodeActivity" aktivitelerle basit problemleri çözebilirsiniz fakat koplex düzeyde ki problemlere uyumlu olmadığı için kodu tekrardan kullanmak zordur.Kendi özel aktivitelerinizi oluşturarak koplex düzeyde ki problemlerinizin üstesinden gelebilirsiniz.Yinede özel aktiviteleri "Visual studio toolbox"ından "Workflow designer"a çekerek birçok kez yeniden kullanma şansı elde edebiliriz.Aşağıda sıralayacağım durumlara bağlı olan en iyi solusyonlar özel bir aktivite gereksinir.

1-E-mail Communication

E-mails,"Workflow" ve kullanıcılar arasında iletişime geçen bir "workflow" yapısı olarak göz önünde bulunduralım.Örneyin bir çalışanın gereksindiği tatil biriçin onay aşamasını düşünürsek,burada sistem,onay ve işlevi programlama süreci için yönetici ve müdürlere e-mail gönderir.Birçok e-mail proje işlev aşamasında gönderilebilir fakat onların bütün hepsi gövdesel ve bölgesel yapıları ayarlamak için "Workflow" gereksinir.Şayet her bir e-mail göndermek için kod aktivitesi kullanırsanız,her bir kod aktivitesine kodu kopyalayıp yapıştırmalısınız ve böylece bu alanı düzenleyen sınırları olurşturabilirsiniz.Örneyin bir dizinde e-mail adressleriyle ilgili olan aktiviteler gibi "workflow",giriş parametrelerini veya diyer aktivitelerin sonucunu içeren alanlara bu alanları bağlayabilir.Özel aktivitelerinizi "toolbox"dan çekerek "workflow"a yeni e-mail aktivitelerinizi aktarabilirsiniz.

Altarnatif şekilde bir özel aktivite oluşturursanız,bir kez daha özel aktivite alanlarından gövde veya gövde yapılarını düzenleyen kod yazabilirsiniz.Örneyin dizinlerde e-mail adresini yoklayan aktiviteler,"workflow",giriş parametreleri veya diyer aktivitelerin çıkış alanlarına bağlı olarak bu alanları bağlayabilir.Toolbox yardımıyla "workflows" özel durumda ki aktivitelerinizi alarak yeni e-mail aktivitelerinizi ilişkilendirebilirsiniz.

2-Changing Activities

Yakın gelecekte değişimi muhtemel olan bir "workflow" göz önünde bulundurursak.Örneyin şimdi bir "Microsoft Office Access" veri tabanında bilgiyi yoklamak için "workflow" istediğini düşünelim.Yinede gelecek sekiz ay içinde, veri timiniz "Microsoft Active Directory" içine o bilginizi taşıyacaktır."Office Access veri tabanından hernezaman biligi gereksinimi için bir "CodeActivity" yazarsanız,veri dizine taşındığında bu aktivitelerin hepsini yeniden yazmanız gerekir.

Altarnatif şekilde Office giriş veri tabanında bilgiyi incelemek için bir özel aktivite oluşturursannız,o aktiviteyi değiştirerek ve "workflow" derleyerek basitçe bütün "workflow" daha sonra güncelleye bilir olacaksınız.özel kod aktivitelerin hepsini başından sonuna kadar kurmanız gerekmediği gibi tekrarlı düzeyde düzeltmeler yapmanız da gerekmiyor.

3-Creating Custom Composite Activities

Bir benzer bir iş mantığının tekrar edilir şekilde ortaya çıkaran bir "workflow" göz önünde bulunduralım.Örneyin çalışanlar için eğitim,promosyon ve yetenekleri belirleyip yöneten insan kaynaklarını işlevini ortaya koyan "workflow" gösterebiliriz."Workflow" yapılandırdığınızda çoğunlukla "workflow"un Active Directory'de incelemeler yaparak ve inceledikerini bir e-mail ile hedef bağlamda ki müdüre iletiğini göreceksiniz.Üstelik her bir durumda bir e-mail müdürün yöneticisinede gönderilmesi gerektiğini göreceksiniz."Workflow" yapılandırdığınız için üç veya dört aktivitenin genel bir örnekte tekrar ediyor durumda olduğunu farkına varacaksınız.Öyle durumlarda özel bir birleşik aktivite oluşturarak zamandan tasaruf edebiliriz.Bu durum bir "workflow" bölümünü biçimlendirmek için bağlanılan birkaç child aktiviteden oluşan özel bir aktivitedir.Bileşim aktivitenizi hızlı bir şekilde "workflow" designer'a çekerek yeniden kullanabiliriz.Bu yolla aynı örnek işlevi tekrar tekrar birçokkez oluşturmaktan uzak durabilrisiniz.


Wednesday, November 10, 2010

Workflows ile Hataların Yakalanması


Umulmadık koşullar,tıpkı prosedüler kodlarda olduğu gibi "workflows" kuraldışı bir durum oluşturmasına neden olabilirler.Örneyin Sistemde mevcut olan "workflow",sistemde mevcut bir veri tabanı servisi "offline" olması durumunda bu veri tabanı ile iletişim kurmak isterse,bu durumda "workflow" için kuraldışı bir durum oluşturabilir.Ve "WF" ,bu gibi kural dışı durumları yakalaya bilmemiz için bazı aktiviteleri bünyesinde barındırır durumdadır.

1-FaultHandlersAktivity:

Bir "workflow"da aşağıda belirtilen şıklarda ki gibi bir kuraldışı olay ortaya çıkabilir.

.Bir geçiş ,zaman aşımına uğrayabilir.

."ThrowActivity" kullanarak kural dışı bir durumu devreden çıkarabiliriz.

.Kod aktivitelerinde veya özel aktivitelerde bulunan kod bir kuraldışı olayı devreden çıkarabilir.

.Dıştaki bileşenler kural dışı durumu devreden çıkarabilir.

Bir kural dışı durum bir aktivitede ortaya çıkarsa, "Runtime" problemin çözümlenmesi için kural dışı bir durumu "parent activity"ye gönderir."runtime" ise "workflow" hiyerarsini entepe noktaya veya uygun bir "FaultHandlersActivity" duruma ulaşıncaya kadar kural dışı bir olayı transfer etmek için sistem içinde ilerler.Herbir "FaultHandlersActivity" ,bir veya daha çok durumda ki "FaultHandlerActivity" nesnesini kapsar.

2-FaultHandlerActivity:

Bir "FaultHandlerActivity" içinde ki herbir "FaultHandlerActivity",".NET Framework" kuraldışı durum tipi ile birleştirilir ve kural dışı durumu çözmek için işleve konabilen belirli bir aktivite ayarını kapsar.Üstelik kural dışı durumları ortaya koyan farklı tipler için farklı türde aktiviteleri işleve koyabilir.

"FaultHandlerActivity" işleve konduğunda,kural dışı durumu arz eden tipleri işlev dışı yapmış olan "aktivite", işlem boyutunda başarısız bir durumda bulunur.
"FaultHandlerActivity" aktivite tamamlandığında,bağdaşık durumda ki aktivite kapalı bir durumda bulunur.

3-ThrowActivity:

Bir "workflow" ile kural dışı bir durumu olumlu şekilde ortaya çıkarmak isteyebilirsin.Örneyin "workflow" ile basit şekilde bir veritabanı server test etmek isteyebilrsiniz ve server sistemde tedarik edilmiş şekilde deyilse "workflow" durdurabilirsiniz.Böylece kodu gereksizce kurmadan uzak durabilirsiniz.

Sistemde ki kural dışı bir durumu ortaya çıkarmak için "ThrowActivity" kullanmalıyız.Ayrıca bu aktiviteyi herhangi bir ".NET Framework"ün oluşturduğu kural dışı bir olayı ortaya çıkarmak için kullanabildiğiniz gibi ayrıca "workflow"unuzda kod taraflı dosya içeriklerinde tanımladığınız olağan dışı bir durumu ortaya çıkarmak için kullanabilrisiniz.



Tuesday, November 9, 2010

İletişim Aktiviteleri Nelerdir?


WF iletişim aktivitesi, veriyi dış kaynaklara gönderir ve dış kaynaklardan veriyi kabul eder.Genel olarak bu dış kaynaklar veritabanlarını,Web servislerini ve e-mail servislerini kapsayabilir.Bu aktiviteler bir çok workflow'un temel yapısını oluşturur.Örneyin koşullu aktiviteler,bir veritabanında veriyi kotrol eden koşullara sahip olabilir.Aşağıda belirteceğim aktiviteler sık düzeyde kullanılan iletişim aktivitelerini tanımlayacaktır.

İnvokeWebServiceActivity:

Proxy sınıflar vasıtasıyla özel durumlu parametreleri geçirerek ve sağlayarak Web servislerini çağırır. "İnvokeWebServiceActivity" kullandığınız zaman,"ProxyClass" alanını ayarlayıp kullanmak için "proxy" sınıflarını özelleştirmeniz gerekir.Hatta "methodName" alanını ayarlayarak çağırmak istediğiniz Web servis method özelleştirmemiz de gerekir.

CallExternalMethodctivity:

"CallExternalMethodActivity" bölgesel servislerle iletişim kurmak için kullanabilirsiniz.Burada bögesel servisler olarak nitelendirdiğimiz "ICommunicationService" arayüzünü işleve koyan ".NET Framework" sınıflarıdır.

HandleExternalEventActivity:

Bölgesel servislerden olayları yakalamak için "HandleExternalEventActivity" kullanabilirsiniz.Genellikle "CallExternalMethodActivity" bölgesel servisleri araştırır ve uygun parametreleri gönderir. "External" method tamamlandığında "HandleExternalEventActivity" ile yakaladığımız olaylar ortaya çıkar.

workflow örneklerinize başlamadan önce "workflow" runtime motoruna "ExternalDataExchangeService" eklemeniz gerekir ve daha sonra "ExternalDataExchangeService" servise bağlı olan özel iletişim servisinizi eklemelisiniz.

Monday, November 8, 2010

1-WORKFLOW AKTİVİTELERİ İLE ÇALIŞMAK

Bu konumuzda "Windows Workflow Foundation" özel gereksinimlerinizi karşılaması için nasıl daha ileri seviyeye getirilebilir olduğunu gösterip ,kod yapısı içinde ki özel konumlu aktiviteler nasıl oluşturulabileceğini temel düzeyde açıklamasını yapacağım.

A) GENEL AKTİVİTELER NEDİR?

"Windows Workflow Foundation" genel düzeyde ki amaçlar için genelde yerleşik düzeyde bulunan aktivitelerin önemli miktarını bulundurur.Bu aktiviteleri kullanarak,kullanıcı aktivitelerini organize etmek ve bilgisayar sistemlerini düzenlemek için koplex ve işlevsel düzeyde workflows oluşturabiliriz.Bu aktivitelerin neler olduğunu açıklayalım:

1-CONDİTİONAL:
Koşullu aktiviteler ,işlem sonucuna göre "workflow" yapılarınıza karar oluşturma bağlamını kapsayan yapıları bağdatırma ve "workflow" işlevinizi kotrolünü yapmada size destek olucaktır.Ve "WF" takip eden aktivitelerden oluşur:

. İfElseActivity. Bir kaç tane "İfElseBranchActivity" şubesinden herhangi birini koşullu düzeyde işleve koymak için bu aktiviteyi kullanırız.Herbir "İfElseBranchActivity" değişim veya gelişim için bir koşuldan oluşur.Şayet koşul "true" ile bağdaşırsa "runtime" şübe düzeyinde bulunan aktiviteleri işleve koyar.Fakat "true" ile işlev bağdaşmaz ise diyer takip eden koşulun işleve konması kaçınılmazdır.Burada diyer şubelerin, işleve konmaması durumu tıpkı "else branch" veya varsayılan düzey gibi görülmesinden dolayı enson düzeyde ki "İfElseBranchActivity" bağlı olan koşulları değerlendirmemiz gerekmez.

.WhileActivity. Bu aktivitenin koşullu durumda ki aktivitesi "true" değerlendirilir değerlendirilmez,kendi üzerinde bulunan herhangi bir aktivitenin koşullu şekilde işleve konmasıyla devam eder.Burada tıpkı C#'de ki bir "While loop" veya VB.NET benzer şekilde koşulun her bir "loop"un tamamlanmasında değerlendirileceğidir.

.ConditionedActivityGroup. Bu gurup ise koşulun "true" seviyede değerlendirilinceye kadar kendi işlevsel yapısında bulunan herhangi bir aktiviteyi sürekli düzeyde işleve koymak istersek bu aktiviteyi kullanmalıyız.Burada "ConditionedActivityGroup" içinde yer alan her bir özel durumda ki aktivite bir " When" koşulunu içerir."when" koşulu yanlız "true" ile bağdaşırsa,herbir aktivite işleve dahil olur.

.ReplicatorActivity. Bu aktivite,"UntilCondition" alanın "true" değerlendirilmesi ile beraber işlevini gerçekleştirmek için harekete geçer.

2-State Activities:

"State" aktiviteler "state machine workflows" ile kullanılır ve şunlardan oluşur:

.StateActivity- bir "state machine workflow"da ki bir durumu temsil etmek için kullanılır.Bu aktivite,diyer aktivitelerden daha iyi düzeyde becerilere sahiptir.

.SetStateActivity- "StateActivities" arasında geçişi sağlar.

.StateİnitializationActivity- "child" aktiviteler için bir kontainer ve "StateActivity" aktivitelerine girdiğimiz zaman işleve konur.

.StateFinalizationActivity- "child" aktiviteler için bir "container" görevi üstlenir.Ve bir aktivite bağlamını terketdiğimizde işleve konur.

3-Web Service Activities:

Web servis aktiviteler,"Workflow", bir Web servisine girdiğinde veya Web servisinde bir yanıtlayıcı görevini üstlendiği zaman kullanılır.

.WebServiceFaultActivity-"workflows" ile oluşan web servisi başarısızlıklarını biçimlendirmen gerektiğinde bu aktiviteyi kullanabilirsin.

.WebServiceİnputActivity-"workflow" bir web servisine veri sağlamak veya kabul ettirmeyi istediğimizde bu aktiviteyi kullanırız.

.WebServiceOutputActivity-"workflow" aktivitelerine bağlı olan bir web servis gereksinimini yanıtlamak için bu aktiviteyi kullanırız.

Sunday, November 7, 2010

"WİNDOWS WORKFLOW FOUNDATİON" UYGULAMALARINI YAPILANDIRMAK

GENEL BİR BAKİŞ

Gelişimciler genelde "Windows Workflow Foundation" kullanarak "workflows" yapılandırma işlevini öğrenmeyi daha basit kazanırken ,yinede "Visual Studio ve C# ve VB.NET gibi .NET dillerede aşikardırlar.
"workflow runtime" yazılım altyapında iş projelerini gerçekleştirmek için gereksinilen görevlerin bir çoğunu üstlenir durumdadır.Hatta "Windows Workflow Foundation" , "workflow"da ki yerleşik durumda ki aktiviteler ihtiyaçlarınızı karşılamadığı durumda,"VB.NET veya C# ile bütünleşerek bir nevi "workflow" işlevini genişletebilmek için geniş bir platform sağlar.Bir "workflow" işlevini genişletmek,basitçe bir kod içinde bir aktivite veya runtime servis yazmaktan ibaret olan genel bir durumdur.Birde "workflow"un dizynını yaptığımız "workflow designer" üzerine "toolbox"dan herhangi bir kod aktivitesini çekebildimiz gibi "code window" seçenegine iki defa "click" işlevinide gerçekleştirebiliriz.Böylece gerekli kodu da yazmış oluruz.
Basit düzeyde ki bir iş projesinden bir "workflow" oluşturma işlevi, yapılan işle ilgisi olan kişiyle veya bir iş analisti ile bağlantı sağlanarak gerçekleştirilir.Bu etkileşimde gelişimcilerin rolü ise "Windows Workflow Foundation" kullanarak yapılandırılacak olan yazılıma iş çalışanlarının söylediği şeyi tercüme etmektir.
Bir "workflow" yapısında bir projeyi biçimlendirmek ise, birnevi "Windows Workflow Foundation"nun yardımı olmadan elle kod yazımının getirmiş olduğu sonuçlar gibi gelişimcilerin iş çalışanlarıyla beraber olduğunda iyi düzeyde görevleri üstlendiği anlamına gelir.Hatta dökümantasyonlanarak basılabilen ve ayrıca giriş ve geçerlilik kapsamında iş çalışanlarında yeniden gösterilebilen projenin görsel bir modelini sağlar.Bir birini izleyen model yapısı iş akış şeması gibi görünmesine delaleten iş projelerine ilgisi olan birçok insanla anlaşılır düzeydedir.Bunun anlamı programlama kod içeriğini kullanmanın yerine herhangi bir gelişimcini yardımı olmadan bu modeli kullanırsak olası sonucun daha hizlı ve akıcı düzeyde ulaşılabileceği anlamına gelir.Genellikle "Visual Studio 2008" ile yapılandırılan dizayn parçaları gelişimcilerin kullanım alanına girdiği gibi dorudan iş çalışanları ile kullanılabilir.Bunu temel nedeni "workflow runtime" ile işleme konulan "workflows" bilgisayarla gelen "workflow runtime" ile dorudan işleve nasıl konulduna ilaveten bu işlevi gerçekleştiren gelişimcinin bilgisayarda nasıl çalıştığını ve kodu nasıl işleve koyduklarını bilmek önemlidir.Bu durum iş modellerinde ortaya çıkan duruma odaklanma veya işleve sahip olmayan modeller üretebilen fakat bir projede ki çalışan ve yazılım işiyle uraşanlar arasında genel bir anlam düzeyini oluşturmayan bir çok yüksek seviyede ki biçimleme parçalarından farklı düzeydedir.
"Workflow runtime" sizin için iş projelerinin işleve konması için gereksinilen bir çok çalışmayı yaparbilir.Ve "Windows Workflow Foundation" kullanımının neticesinde,iş çalışanlrıyla iletişim kurulan zaman dilimini ve genel gereksinimleri anlamayı daha basite indirgeyebilir düzeydedir.