Askıya Alınmış Örnek Yönetimi
SuspendedInstanceManagement örneği, askıya alınmış iş akışı örneklerinin nasıl yönetileceğini gösterir. için WorkflowUnhandledExceptionBehavior varsayılan eylem şeklindedir AbandonAndSuspend
. Bu, varsayılan olarak içinde WorkflowServiceHost barındırılan bir iş akışı örneğinden atılan işlenmemiş özel durumların örneğin bellekten atılması (terk edilmesi) ve örneğin dayanıklı/kalıcı sürümünün askıya alınmış olarak işaretlenmesine neden olacağı anlamına gelir. Askıya alınan bir iş akışı örneği, eklenmemiş olana kadar çalıştırılamaz.
Örnek, askıya alınan örnekleri sorgulamak için bir komut satırı yardımcı programının nasıl uygulanabileceğini ve kullanıcıya örneği sürdürme veya sonlandırma seçeneği sağlamayı gösterir. Bu örnekte, bir iş akışı hizmeti kasıtlı olarak bir özel durum oluşturarak askıya alınmasına neden olur. Komut satırı yardımcı programı daha sonra örneği sorgulamak ve daha sonra örneği sürdürmek veya sonlandırmak için kullanılabilir.
Gösteriler
WorkflowServiceHostWorkflowControlEndpoint ve ile WorkflowUnhandledExceptionBehavior windows workflow foundation (WF) içinde.
Tartışma
Bu örnekte uygulanan komut satırı yardımcı programı, .NET Framework 4.6.1'de gelen SQL örnek deposu uygulamasına özgüdür. Örnek deposunun özel bir uygulamasına sahipseniz, örnekteki uygulamaları örnek deponuza özgü uygulamalarla değiştirerek WorkflowInstanceCommand
bu yardımcı programı uyarlayabilirsiniz.
Sağlanan uygulama, askıya alınan örnekleri listelemek için sql komutlarını doğrudan SQL örnek deposunda çalıştırır ve örnekleri sürdürmek veya sonlandırmak için öğesine eklenen WorkflowServiceHost bir WorkflowControlEndpoint komutu kullanır.
Örneği ayarlamak, derlemek ve çalıştırmak için
Bu örnek, aşağıdaki Windows bileşenlerinin etkinleştirilmesini gerektirir:
Microsoft İleti Kuyrukları (MSMQ) Sunucusu
SQL Server Express
SQL Server veritabanını ayarlayın.
Visual Studio komut isteminde, Aşağıdaki işlemi yapan SuspendedInstanceManagement örnek dizininden "setup.cmd" komutunu çalıştırın:
SQL Server Express kullanarak bir kalıcılık veritabanı oluşturur. Kalıcılık veritabanı zaten varsa bırakılır ve yeniden oluşturulur
Veritabanını kalıcılık için ayarlar.
Veritabanını kalıcılık için ayarlarken tanımlanan InstanceStoreUsers rolüne IIS APPPOOL\DefaultAppPool ve NT AUTHORITY\Network Service ekler.
Hizmet kuyruğu ayarlayın.
Visual Studio'da SampleWorkflowApp projesine sağ tıklayın ve Başlangıç Projesi Olarak Ayarla'ya tıklayın.
F5 tuşuna basarak SampleWorkflowApp'i derleyin ve çalıştırın. Bu, gerekli kuyruğu oluşturur.
SampleWorkflowApp'i durdurmak için Enter tuşuna basın.
Komut isteminden Compmgmt.msc dosyasını çalıştırarak Bilgisayar Yönetimi konsolunu açın.
Hizmet ve Uygulamalar, Message Queuing, Özel Kuyruklar'ı genişletin.
ReceiveTx kuyruğuna sağ tıklayın ve Özellikler'i seçin.
Güvenlik sekmesini seçin ve Herkesin İleti Alma, İletiye Göz Atma ve İleti Gönderme izinlerine sahip olmasını sağlayın.
Şimdi örneği çalıştırın.
Visual Studio'da, Ctrl+F5 tuşlarına basarak hata ayıklama yapmadan SampleWorkflowApp projesini yeniden çalıştırın. Konsol penceresine iki uç nokta adresi yazdırılır: biri uygulama uç noktası için, diğeri ise içinden WorkflowControlEndpoint. Daha sonra bir iş akışı örneği oluşturulur ve bu örneğe ilişkin izleme kayıtları konsol penceresinde görünür. İş akışı örneği, örneğin askıya alınmasına ve durdurulmasına neden olan bir özel durum oluşturur.
Komut satırı yardımcı programı daha sonra bu örneklerden herhangi birinde daha fazla işlem yapmak için kullanılabilir. Komut satırı bağımsız değişkenlerinin söz dizimi aşağıdaki gibidir:
SuspendedInstanceManagement -Command:[CommandName] -Server:[ServerName] -Database:[DatabaseName] -InstanceId:[InstanceId]
Desteklenen komutlar şunlardır:
Query
,Resume
veTerminate
. InstanceId anahtarı yalnızca veTerminate
işlemleri içinResume
gereklidir.
Temizlemek için (İsteğe bağlı)
Compmgmt.msc dosyasını çalıştırarak Bilgisayar Yönetimi konsolunu açın.
Hizmet ve Uygulamalar, Message Queuing, Özel Kuyruklar'ı genişletin.
ReceiveTx kuyruğunun silinmesi.
Kalıcılık veritabanını kaldırmak için cleanup.cmd çalıştırın.