WorkflowPersistenceService.SaveWorkflowInstanceState Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Türetilmiş bir sınıfta uygulandığında, iş akışı örneği durumunu bir veri deposuna kaydeder.
protected public:
abstract void SaveWorkflowInstanceState(System::Workflow::ComponentModel::Activity ^ rootActivity, bool unlock);
protected internal abstract void SaveWorkflowInstanceState(System.Workflow.ComponentModel.Activity rootActivity, bool unlock);
abstract member SaveWorkflowInstanceState : System.Workflow.ComponentModel.Activity * bool -> unit
Protected Friend MustOverride Sub SaveWorkflowInstanceState (rootActivity As Activity, unlock As Boolean)
Parametreler
- rootActivity
- Activity
İş akışı örneğinin kök etkinliği.
- unlock
- Boolean
true iş akışı örneğinin kilitlenmemesi gerekiyorsa; false iş akışı örneğinin kilitlenmesi gerekiyorsa.
Açıklamalar
içine seri hale rootActivityStreamgetirmek için aşırı yüklenmiş Save yöntemlerden birini çağırmanız gerekir. Daha sonra veri deponuza yazmadan önce ek olarak işlemeyi Stream seçebilirsiniz. Ancak, iş akışı çalışma zamanı altyapısı çağırdığında LoadWorkflowInstanceStatekök etkinliğin özdeş bir kopyasını geri yüklemeniz gerekir. İş akışı örneği durumunu veri deponuza kaydedemiyorsanız, uygun bir hata iletisiyle bir PersistenceException oluşturmalısınız.
İş akışı çalışma zamanı altyapısı, veri deposuna kaydedilen bir iş akışı örneği durumuna erişimi kısıtlamak için kilitleme semantiği sağlar. Bu, birden çok konakta çalışan ve aynı veri deposuna işaret eden kalıcılık hizmetleri tarafından erişilebilir. Kilitleme semantiği, iki farklı iş akışı çalışma zamanında çalışan kalıcılık hizmetlerinin aynı iş akışı örneğini aynı anda belleğe yüklemesini önlemek için tasarlanmıştır. Kalıcılık hizmetinizin desteklemek üzere tasarlandığı ortam türüne bağlı olarak, bu işlevselliğin desteklenip desteklenmeyeceğini seçebilirsiniz. Çalışma zamanı kilitleme semantiğini desteklemeyi seçerseniz, bir kalıcılık hizmeti daha önce başka bir kalıcılık hizmeti tarafından kilitlenmiş bir iş akışı örneği durumunu kaydetmeye çalışırsa, bir WorkflowOwnershipExceptionoluşturmanız gerekir. ise unlocktrue, kaydettikten sonra iş akışı örneği durumuna erişimin kilidini açmanız gerekir.
LoadWorkflowInstanceState Guid, iş akışı örneğinin parametresini alır. Bu nedenle, bunu Guidkaydetmelisiniz. Bunu, iş akışı örneğini tamamlanmış kapsamlarının kaydedilmiş durumlarıyla ilişkilendirmek için de kullanabilirsiniz Guid . İş akışı örneği tamamlandığında bu tamamlanmış kapsamları gereksiz olarak işaretleyebilmeniz gerektiğinden bunu yapmalısınız.
İş akışı çalışma zamanı altyapısı, iş akışı örneği tamamlandığında veya sonlandırıldığında son zamanı çağırır SaveWorkflowInstanceState . Bu nedenle, veya Terminateddeğerine Completed eşitseGetWorkflowStatus, iş akışı örneğini ve ilişkili tüm tamamlanmış kapsamlarını veri deponuzdan güvenle silebilirsiniz. Alternatif olarak, iş akışı örneğiyle ilişkili kayıtları silmenin WorkflowCompleted ne zaman güvenli olduğunu belirlemek için veya WorkflowTerminated olaylarına abone olabilirsiniz. Kayıtları veri deponuzdan gerçekten silip silmediğiniz, uygulamanıza bağlıdır.
Dayanıklı depo kullanan bir kalıcılık hizmeti uygularsanız, iş akışı çalışma zamanı altyapısının iç durumuyla tutarlılığı korumak için, bir iş akışı işleme noktasına kadar dayanıklı deponuza gerçek yazma işlemini ertelemek için iş akışı işlemi toplu işlemine katılmalısınız. Toplu işlere katılmak için, özelliğine dayanıklı deponuzda WorkBatch bekleyen değişiklikleri temsil eden bir iş öğesi ekleyin ve kalıcılık hizmetinizde arabirimini uygulayın IPendingWork .