Nasıl yapılır: Durum Makinesi İş Akışı Oluşturma

İş akışları hem yerleşik etkinliklerden hem de özel etkinliklerden oluşturulabilir. Bu konu, hem etkinlik gibi StateMachine yerleşik etkinlikleri hem de önceki Nasıl yapılır: Etkinlik Oluşturma konusunun özel etkinliklerini kullanan bir iş akışı oluşturma adımlarını gösterir. İş akışı bir sayı tahmin oyunu modeller.

Not

Başlarken öğreticisindeki her konu önceki konulara bağlıdır. Bu konuyu tamamlamak için önce Nasıl yapılır: Etkinlik Oluşturma'yı tamamlamanız gerekir.

İş akışını oluşturmak için

  1. Çözüm Gezgini NumberGuessWorkflowActivities öğesine sağ tıklayın ve Ekle, Yeni Öğe'yi seçin.

  2. Yüklü, Ortak Öğeler düğümünde İş Akışı'nı seçin. İş Akışı listesinden Etkinlik'i seçin.

  3. Ad kutusuna yazın StateMachineNumberGuessWorkflow ve Ekle'ye tıklayın.

  4. Bir StateMachine etkinliğini Araç Kutusu'nun State Machine bölümünden sürükleyin ve iş akışı tasarım yüzeyindeki Etkinliği buraya bırak etiketine bırakın.

İş akışı değişkenlerini ve bağımsız değişkenlerini oluşturmak için

  1. İş akışını henüz görüntülenmediyse tasarımcıda görüntülemek için Çözüm Gezgini'da StateMachineNumberGuessWorkflow.xaml dosyasına çift tıklayın.

  2. Bağımsız Değişkenler bölmesini görüntülemek için iş akışı tasarımcısının sol alt tarafındaki Bağımsız Değişkenler'e tıklayın.

  3. Bağımsız Değişken Oluştur'a tıklayın.

  4. Ad kutusuna yazınMaxNumber, Yön açılan listesinden In'i seçin, Bağımsız değişken türü açılan listesinden Int32'yi seçin ve ardından bağımsız değişkeni kaydetmek için ENTER tuşuna basın.

  5. Bağımsız Değişken Oluştur'a tıklayın.

  6. Yeni eklenen bağımsız değişkenin altındaki Ad kutusuna yazınTurns, Yön açılan listesinden Dışarı'yı seçin, Bağımsız değişken türü açılan listesinden Int32'yi seçin ve enter tuşuna basın.MaxNumber

  7. Etkinlik tasarımcısının sol alt tarafındaki Bağımsız Değişkenler'e tıklayarak Bağımsız Değişkenler bölmesini kapatın.

  8. Değişkenler bölmesini görüntülemek için iş akışı tasarımcısının sol alt tarafındaki Değişkenler'etıklayın.

  9. Değişken Oluştur'a tıklayın.

    İpucu

    Değişken Oluştur kutusu görüntülenmiyorsa, iş akışı tasarımcısı yüzeyindeki etkinliğe tıklayarak StateMachine seçin.

  10. Ad kutusuna yazınGuess, Değişken türü açılan listesinden Int32'yi seçin ve ardından değişkeni kaydetmek için ENTER tuşuna basın.

  11. Değişken Oluştur'a tıklayın.

  12. Ad kutusuna yazınTarget, Değişken türü açılan listesinden Int32'yi seçin ve ardından değişkeni kaydetmek için ENTER tuşuna basın.

  13. Değişkenler bölmesini kapatmak için etkinlik tasarımcısının sol alt tarafındaki Değişkenler'etıklayın.

İş akışı etkinliklerini eklemek için

  1. Seçmek için Durum1'e tıklayın. Özellikler Penceresinde DisplayName değerini olarak Initialize Targetdeğiştirin.

    İpucu

    Özellikler Penceresi görüntülenmiyorsa Görünüm menüsünden Özellikler Penceresi'niseçin.

  2. İş akışı tasarımcısında yeni yeniden adlandırılan Hedefi Başlat durumuna çift tıklayarak genişletin.

  3. Bir Assign etkinliğini Araç Kutusu'nun Temel Öğeler bölümünden sürükleyin ve durumun Giriş bölümüne bırakın. Kime kutusuna yazın Target ve C# ifadesi girin veya VB ifadesi girin kutusuna aşağıdaki ifadeyi yazın.

    New System.Random().Next(1, MaxNumber + 1)  
    
    new System.Random().Next(1, MaxNumber + 1)  
    

    İpucu

    Araç Kutusu penceresi görüntülenmiyorsa, Görünüm menüsünden Araç Kutusu'nuseçin.

  4. İş akışı tasarımcısının üst kısmındaki içerik haritası görünümünde StateMachine'e tıklayarak iş akışı tasarımcısında genel durum makine görünümüne dönün.

  5. Araç Kutusu'nun Durum Makinesi bölümünden bir Durum etkinliğini iş akışı tasarımcısına sürükleyin ve Hedef Başlatma durumunun üzerine getirin. Yeni durum üzerindeyken Hedefi Başlat durumunda dört üçgenin görüneceğini unutmayın. Yeni durumu Hedef Başlatma durumunun hemen altındaki üçgene bırakın. Bu, yeni durumu iş akışına yerleştirir ve Hedef Başlatma durumundan yeni duruma bir geçiş oluşturur.

  6. Durum1'e tıklayarak seçin, DisplayName değerini olarak Enter Guessdeğiştirin ve ardından iş akışı tasarımcısındaki duruma çift tıklayarak genişletin.

  7. Bir WriteLine etkinliğini Araç Kutusu'nun Temel Öğeler bölümünden sürükleyin ve durumun Entry bölümüne bırakın.

  8. WriteLine'ın Text özellik kutusuna aşağıdaki ifadeyi yazın.

    "Please enter a number between 1 and " & MaxNumber  
    
    "Please enter a number between 1 and " + MaxNumber  
    
  9. Bir Assign etkinliğini Araç Kutusu'nun Temel Öğeler bölümünden sürükleyin ve durumun Çıkış bölümüne bırakın.

  10. Kime kutusuna yazın ve Turns + 1C# ifadesi girin veya VB ifadesi girin kutusuna yazın.Turns

  11. İş akışı tasarımcısının üst kısmındaki içerik haritası görünümünde StateMachine'e tıklayarak iş akışı tasarımcısında genel durum makine görünümüne dönün.

  12. Bir FinalState etkinliğini Araç Kutusu'nun Durum Makinesi bölümünden sürükleyin, Tahmin Gir durumunun üzerine getirin ve Tahmin Girin durumunun sağındaki üçgene bırakın; böylece Enter Guess ile FinalState arasında bir geçiş oluşturulur.

  13. Geçişin varsayılan adı T2'dir. İş akışı tasarımcısında geçişe tıklayarak seçin ve DisplayName değerini Tahmin Doğru olarak ayarlayın. Ardından FinalState'e tıklayıp seçin ve iki durumdan birini kaplamadan tam geçiş adının görüntülenmesine yer olacak şekilde sağa sürükleyin. Bu, öğreticideki kalan adımların tamamlanmasını kolaylaştırır.

  14. İş akışı tasarımcısında yeni yeniden adlandırılan Doğru Tahmin Geçişine çift tıklayarak genişletin.

  15. ReadInt etkinliğini Araç Kutusu'nun NumberGuessWorkflowActivities bölümünden sürükleyin ve geçişin Tetikleyici bölümüne bırakın.

  16. ReadInt etkinliğinin Özellikler Penceresinde, "EnterGuess" BookmarkName özellik değeri kutusuna tırnak işaretlerini ekleyin ve Sonuç özellik değeri kutusuna yazın Guess

  17. Tahmin Doğru geçişinin Koşul özellik değeri kutusuna aşağıdaki ifadeyi yazın.

    Guess = Target  
    
    Guess == Target  
    
  18. İş akışı tasarımcısının üst kısmındaki içerik haritası görünümünde StateMachine'e tıklayarak iş akışı tasarımcısında genel durum makine görünümüne dönün.

    Not

    Tetikleyici olayı alındığında ve Conditionvarsa olarak değerlendirildiğinde Truebir geçiş gerçekleşir. Bu geçiş için, kullanıcının Guess rastgele oluşturulan Targetile eşleşmesi durumunda denetim FinalState'e geçer ve iş akışı tamamlar.

  19. Tahminin doğru olup olmadığına bağlı olarak, iş akışının FinalState'e geçmesi veya başka bir deneme için Tahmini Girin durumuna geri dönmesi gerekir. Her iki geçiş de ReadInt etkinliği aracılığıyla kullanıcının tahmininin alınmasını beklerken aynı tetikleyiciyi paylaşır. Bu, paylaşılan geçiş olarak adlandırılır. Paylaşılan bir geçiş oluşturmak için, Tahmin Doğru geçişinin başlangıcını gösteren daireye tıklayın ve istediğiniz duruma sürükleyin. Bu durumda geçiş kendi kendine geçiştir, bu nedenle Tahmin Doğru geçişinin başlangıç noktasını sürükleyin ve Tahmin Girin durumunun en altına geri bırakın. Geçişi oluşturduktan sonra iş akışı tasarımcısında seçin ve DisplayName özelliğini Tahmin Yanlış olarak ayarlayın.

    Not

    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. Bu öğreticide, koşulların yapılandırılma şekli nedeniyle bu durum gerçekleşemez (tahminin doğru veya yanlış olmasına yönelik belirli eylemlerimiz vardır).

  20. İş akışı tasarımcısında Yanlış Tahmin Etme geçişine çift tıklayarak genişletin. Tetikleyicinin zaten Tahmin Doğru geçişi tarafından kullanılan ReadInt etkinliğine ayarlandığını unutmayın.

  21. Koşul özellik değeri kutusuna aşağıdaki ifadeyi yazın.

    Guess <> Target  
    
    Guess != Target  
    
  22. Bir If etkinliğini Araç Kutusu'nun Denetim Akışı bölümünden sürükleyin ve geçişin Eylem bölümüne bırakın.

  23. If etkinliğinin Koşul özellik değeri kutusuna aşağıdaki ifadeyi yazın.

    Guess < Target
    
  24. Araç Kutusu'nun Temel Öğeler bölümünden iki WriteLine etkinliğini sürükleyin ve bırakın; böylece biri If etkinliğinin Then bölümünde, biri de Else bölümünde olur.

  25. Sonra bölümünde WriteLine etkinliğine tıklayarak seçin ve Text özellik değeri kutusuna aşağıdaki ifadeyi yazın.

    "Your guess is too low."  
    
  26. Seçmek için Else bölümündeki WriteLine etkinliğine tıklayın ve Text özellik değeri kutusuna aşağıdaki ifadeyi yazın.

    "Your guess is too high."  
    
  27. İş akışı tasarımcısının üst kısmındaki içerik haritası görünümünde StateMachine'e tıklayarak iş akışı tasarımcısında genel durum makine görünümüne dönün.

    Aşağıdaki örnekte tamamlanmış iş akışı gösterilmektedir.

    Illustration that shows the completed state machine workflow.

İş akışını oluşturmak için

  1. Çözümü derlemek için CTRL+SHIFT+B'ye basın.

    İş akışını çalıştırma yönergeleri için lütfen bir sonraki Nasıl yapılır: İş Akışı Çalıştırma konusuna bakın. Nasıl yapılır: farklı bir iş akışı stiliyle İş Akışı Çalıştırma adımını zaten tamamladıysanız ve bu adımda durum makinesi iş akışını kullanarak çalıştırmak istiyorsanız, Nasıl yapılır: İş Akışı Çalıştırma'nın Uygulama oluşturmak ve çalıştırmak için bölümüne atlayın.

Ayrıca bkz.