Aracılığıyla paylaş


Durum Makinesi İş Akışları

Durum makinesi, program geliştirmeye yönelik iyi bilinen bir paradigmadır. Etkinliğin StateMachine yanı sıra State, Transitionve diğer etkinlikler de durum makinesi iş akışı programları oluşturmak için kullanılabilir. Bu konu, durum makinesi iş akışları oluşturmaya genel bir bakış sağlar.

State Machine İş Akışına Genel Bakış

Durum makinesi iş akışları, iş akışınızı olay temelli bir şekilde modelleyebileceğiniz bir modelleme stili sağlar. Etkinlik StateMachine , durum makinesinin mantığını oluşturan durumları ve geçişleri içerir ve bir etkinliğin kullanılabilmesi için her yerde kullanılabilir. Durum makinesi çalışma zamanında birkaç sınıf vardır:

Durum makinesi iş akışı oluşturmak için, bir etkinliğe StateMachine durumlar eklenir ve durumlar arasındaki akışı denetlemek için geçişler kullanılır. Aşağıdaki ekran görüntüsü, Başlarken Öğreticisi adımından nasıl yapılır: Durum Makinesi İş Akışı Oluşturma bölümünde üç durumlu ve üç geçişli bir durum makinesi iş akışı gösterilmektedir. Başlatma Hedefi ilk durumdur ve iş akışındaki ilk durumu temsil eder. Bu, Başlangıç düğümünden ona giden satır tarafından belirlenir. İş akışındaki son durum FinalState olarak adlandırılır ve iş akışının tamamlandığı noktayı temsil eder.

Illustration that shows the completed state machine workflow.

Durum makinesi iş akışının bir ve yalnızca bir başlangıç durumu ve en az bir son durumu olmalıdır. Son durum olmayan her durumun en az bir geçişi olmalıdır. Aşağıdaki bölümlerde durum ve geçiş oluşturma ve yapılandırma işlemleri ele alınıyor.

Durum Oluşturma ve Yapılandırma

A State , bir durum makinesinin içinde bulunabileceği bir durumu temsil eder. bir iş akışına eklemek State için, Durum etkinlik tasarımcısını Araç Kutusu'nunDurum Makinesi bölümünden sürükleyin ve Windows İş Akışı Tasarım Aracı yüzeyindeki bir StateMachine etkinliğe bırakın.

Screenshot of the State Machine section of the Toolbox.

Bir durumu İlk Durum olarak yapılandırmak için, duruma sağ tıklayın ve İlk Durum Olarak Ayarla'yı seçin. Ayrıca, geçerli bir başlangıç durumu yoksa, iş akışının en üstündeki Başlangıç düğümünden istenen duruma bir çizgi sürüklenerek ilk durum belirlenebilir. Bir StateMachine etkinlik iş akışı tasarımcısına bırakıldığında, state1 adlı ilk durumla önceden yapılandırılır. Durum makinesi iş akışının bir ve yalnızca bir başlangıç durumu olmalıdır.

Durum makinesinde sonlandırıcı durumu temsil eden bir durum, son durum olarak adlandırılır. Son durum, özelliğinin IsFinal olarak ayarlandığı true, etkinliği olmayan Exit ve ondan kaynaklanan geçişleri olmayan bir durumdur. bir iş akışına son durum eklemek için, Araç Kutusu'nun State Machine bölümünden bir FinalState etkinlik tasarımcısını sürükleyin ve bunu Windows İş Akışı Tasarım Aracı yüzeyindeki bir StateMachine etkinliğe bırakın. Durum makinesi iş akışının en az bir son durumu olmalıdır.

Giriş ve Çıkış Eylemlerini Yapılandırma

Bir durum ve Exit eylemine sahip Entry olabilir. (Son durum olarak yapılandırılmış bir durumda yalnızca bir giriş eylemi olabilir). bir iş akışı örneği bir duruma girdiğinde, giriş eylemindeki tüm etkinlikler yürütülür. Giriş eylemi tamamlandığında, durumun geçişleri için tetikleyiciler zamanlanır. Başka bir duruma geçiş onaylandığında, durum aynı duruma geri dönse bile çıkış eylemindeki etkinlikler yürütülür. Çıkış eylemi tamamlandıktan sonra, geçişin eylemindeki etkinlikler yürütülür ve ardından yeni duruma geçirilir ve giriş eylemleri zamanlanır.

Not

Durum makinesi iş akışında hata ayıklarken, kesme noktaları kök durum makine etkinliğine ve durum makinesi iş akışı içindeki durumlara yerleştirilebilir. Kesme noktaları doğrudan geçişlere yerleştirilmeyebilir, ancak durumlar ve geçişler içinde yer alan etkinliklere yerleştirilebilir.

Geçişleri Oluşturma ve Yapılandırma

Son durum dışında, herhangi bir geçişe sahip olmayan tüm durumların en az bir geçişi olmalıdır. Durum makinesi iş akışına durum eklendikten sonra geçişler eklenebilir veya durum bırakıldıktan sonra oluşturulabilir.

Bir adımda bir State geçiş eklemek ve geçiş oluşturmak için, Araç Kutusu'nun Durum Makinesi bölümünden Bir Durum etkinliğini sürükleyin ve iş akışı tasarımcısındaki başka bir durumun üzerine getirin. Sürüklenen State başka bir Stateüzerine geldiğinde, diğerinin Stateetrafında dört üçgen görünür. State dört üçgenden birine bırakılırsa durum makinesine eklenir ve kaynaktan State bırakılan hedefe Statebir geçiş oluşturulur. Daha fazla bilgi için bkz. Geçiş Etkinliği Tasarım Aracı.

Durum eklendikten sonra geçiş oluşturmak için iki seçenek vardır. İlk seçenek, durumu iş akışı tasarımcısı yüzeyinden sürükleyip var olan bir durumun üzerine getirmek ve bırakma noktalarından birine bırakmaktır. Bu, önceki bölümde açıklanan yönteme benzer. Ayrıca fareyi istenen kaynak durumunun üzerine getirerek bir çizgiyi istenen hedef duruma sürükleyebilirsiniz.

Not

Durum makinesindeki tek bir durum, iş akışı tasarımcısı kullanılarak en çok 76 geçiş oluşturabilir. Tasarımcı dışında oluşturulan iş akışları için durum geçişlerinin sınırı yalnızca sistem kaynaklarıyla sınırlıdır.

Bir geçiş, bir Trigger, Conditionve bir Actionolabilir. Geçişin Trigger kaynak durumunun Entry eylemi tamamlandığında geçiş zamanlanır. Trigger genellikle bir tür olayın gerçekleşmesini bekleyen bir etkinliktir, ancak herhangi bir etkinlik olabilir veya hiç etkinlik olmayabilir. Trigger Etkinlik tamamlandıktan sonra varsa Condition, değerlendirilir. Etkinlik yoksa Trigger , Condition hemen değerlendirilir. Koşul olarak değerlendirilirse false, geçiş iptal edilir ve durumdan Trigger tüm geçişlerin etkinliği yeniden zamanlanır. Geçerli geçişle aynı kaynak durumunu paylaşan başka geçişler varsa, bu Trigger eylemler de iptal edilir ve yeniden zamanlanır. Condition olarak değerlendirilirse trueveya koşul yoksa, Exit kaynak durumunun eylemi yürütülür ve geçişin Action eylemi yürütülür. Action tamamlandığında, denetim Hedef durumuna geçer

Ortak bir tetikleyiciyi paylaşan geçişler, paylaşılan tetikleyici geçişleri olarak bilinir. Paylaşılan tetikleyici geçişleri grubundaki her geçiş aynı tetikleyiciye sahiptir, ancak benzersiz Condition bir tetikleyiciye ve Eylem'e sahiptir. Geçişe ek eylemler eklemek ve paylaşılan bir geçiş oluşturmak için, istenen geçişin başlangıcını gösteren daireye tıklayın ve istenen duruma sürükleyin. Yeni geçiş, ilk geçişle aynı tetikleyiciyi paylaşır, ancak benzersiz bir koşula ve eyleme sahip olur. Paylaşılan geçişler, geçiş tasarımcısının alt kısmındaki Paylaşılan tetikleyici geçişi ekle'ye tıklayarak ve ardından Bağlanmak için Kullanılabilir durumlardan istenen hedef durumu seçerek geçiş tasarımcısı içinden de oluşturulabilir.

Not

Bir geçişin değerlendirmesi False (veya paylaşılan tetikleyici geçişinin tüm koşulları ) olarak değerlendirilirse ConditionFalse, geçiş gerçekleşmez ve durumdan tüm geçişler için tüm tetikleyiciler yeniden zamanlanır.

Durum makinesi iş akışları oluşturma hakkında daha fazla bilgi için bkz. Nasıl yapılır: Durum Makinesi İş Akışı Oluşturma, StateMachine Etkinlik Tasarım Aracı, Durum Etkinliği Tasarım Aracı, FinalState Etkinlik Tasarım Aracı ve Geçiş Etkinliği Tasarım Aracı.

Durum Makinesi Terminolojisi

Bu bölüm, bu konu başlığı boyunca kullanılan durum makinesi kelime dağarcığını tanımlar.

Durum
Durum makinesi oluşturan temel birim. Durum makinesi belirli bir zamanda tek bir durumda olabilir.

Giriş Eylemi
Duruma girilirken yürütülen bir etkinlik

Eylemden Çık
Durumdan çıkılırken yürütülen bir etkinlik

Transition
Bir durum makinesinin belirli bir türdeki bir olayın oluşumuna tam yanıtını temsil eden iki durum arasında yönlendirilmiş ilişki.

Paylaşılan Geçiş
Kaynak durumu paylaşan ve bir veya daha fazla geçişle tetikleyen, ancak benzersiz bir koşulu ve eylemi olan bir geçiş.

Tetikle
Geçişin gerçekleşmesine neden olan tetikleme etkinliği.

Koşul
Geçişin tamamlanması için tetikleyici gerçekleştikten sonra değerlendirmesi true gereken bir kısıtlama.

Geçiş Eylemi
Belirli bir geçiş gerçekleştirilirken yürütülen bir etkinlik.

Koşullu Geçiş
Açık koşula sahip bir geçiş.

Kendi kendine geçiş
Bir durumdan kendisine geçiş sağlayan bir geçiş.

İlk Durum
Durum makinesinin başlangıç noktasını temsil eden durum.

Son Durum
Durum makinesinin tamamlanmasını temsil eden durum.

Ayrıca bkz.