Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SqlWorkflowInstanceStore kullanıcıların kalıcılık veritabanındaki örnekleri sorgulamak için kullanılabilecek özel, uygulamaya özgü özellikleri yükseltmesine olanak tanır. Bir özelliği yükseltme eylemi, değerin veritabanındaki özel bir görünümde kullanılabilir olmasına neden olur. Bu yükseltilen özellikler (kullanıcı sorgularında kullanılabilecek özellikler) Int64, Guid, String ve DateTime gibi basit türlerde veya serileştirilmiş ikili türde (byte[]) olabilir.
sınıfı, SqlWorkflowInstanceStore bir özelliği sorgularda kullanılabilecek bir özellik olarak yükseltmek için kullanabileceğiniz yönteme sahiptir Promote . Aşağıdaki örnek, uçtan uca mağaza genişletilebilirliği örneğidir.
Bu örnek senaryoda, bir belge işleme (DP) uygulamasının her biri belge işleme için özel etkinlikler kullanan iş akışları vardır. Bu iş akışları, son kullanıcıya görünür hale getirilmesi gereken bir durum değişkenleri kümesine sahiptir. Bunu başarmak için DP uygulaması, durum değişkenlerini sağlamak için etkinlikler tarafından kullanılan türünde PersistenceParticipantbir örnek uzantısı sağlar.
class DocumentStatusExtension : PersistenceParticipant { public string DocumentId; public string ApprovalStatus; public string UserName; public DateTime LastUpdateTime; }Ardından yeni uzantı konağa eklenir.
static Activity workflow = CreateWorkflow(); WorkflowApplication application = new WorkflowApplication(workflow); DocumentStatusExtension documentStatusExtension = new DocumentStatusExtension (); application.Extensions.Add(documentStatusExtension);Özel kalıcılık katılımcısı ekleme hakkında daha fazla ayrıntı için Kalıcılık Katılımcıları örneğine bakın.
DP uygulamasındaki özel etkinlikler Execute yöntemindeki çeşitli durum alanlarını doldurur.
public override void Execute(CodeActivityContext context) { // ... context.GetExtension<DocumentStatusExtension>().DocumentId = Guid.NewGuid(); context.GetExtension<DocumentStatusExtension>().UserName = "John Smith"; context.GetExtension<DocumentStatusExtension>().ApprovalStatus = "Approved"; context.GetExtension<DocumentStatusExtension>().LastUpdateTime = DateTime.Now(); // ... }Bir iş akışı örneği kalıcılık noktasına ulaştığında, DocumentStatusExtension kalıcılık katılımcısının CollectValues yöntemi bu özellikleri kalıcılık veri koleksiyonuna kaydeder.
class DocumentStatusExtension : PersistenceParticipant { const XNamespace xNS = XNamespace.Get("http://contoso.com/DocumentStatus"); protected override void CollectValues(out IDictionary<XName, object> readWriteValues, out IDictionary<XName, object> writeOnlyValues) { readWriteValues = new Dictionary<XName, object>(); readWriteValues.Add(xNS.GetName("UserName"), this.UserName); readWriteValues.Add(xNS.GetName("ApprovalStatus"), this.ApprovalStatus); readWriteValues.Add(xNS.GetName("DocumentId"), this.DocumentId); readWriteValues.Add(xNS.GetName("LastModifiedTime"), this.LastUpdateTime); writeOnlyValues = null; } // ... }Uyarı
Tüm bu özellikler, SaveWorkflowCommand.InstanceData koleksiyonu aracılığıyla kalıcılık çerçevesi tarafından SqlWorkflowInstanceStore'na geçirilir.
DP uygulaması SQL İş Akışı Örnek Deposu'nı başlatır ve bu verileri yükseltmek için Promote yöntemini çağırır.
SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(connectionString); List<XName> variantProperties = new List<XName>() { xNS.GetName("UserName"), xNS.GetName("ApprovalStatus"), xNS.GetName("DocumentId"), xNS.GetName("LastModifiedTime") }; store.Promote("DocumentStatus", variantProperties, null);SqlWorkflowInstanceStore, bu yükseltme bilgilerine dayanarak veri özelliklerini InstancePromotedProperties görünümünün sütunlarına yerleştirir.
Yükseltme tablosundaki verilerin bir alt kümesini sorgulamak için DP uygulaması, yükseltme görünümünün üzerine özelleştirilmiş bir görünüm ekler.
create view [dbo].[DocumentStatus] with schemabinding as select P.[InstanceId] as [InstanceId], P.Value1 as [UserName], P.Value2 as [ApprovalStatus], P.Value3 as [DocumentId], P.Value4 as [LastUpdatedTime] from [System.Activities.DurableInstancing].[InstancePromotedProperties] as P where P.PromotionName = N'DocumentStatus' go
[System.Activities.DurableInstancing.InstancePromotedProperties] görünümü
| Sütun Adı | Sütun Türü | Açıklama |
|---|---|---|
| ÖrnekId | GUID | Bu yükseltmenin ait olduğu iş akışı örneği. |
| PromosyonAdı | nvarchar(400) | Promosyonun adı. |
| Değer1, Değer2, Değer3,..,Değer32 | sql_variant (SQL veri türü) | Yükseltilen özelliğin kendi değeri. İkili bloblar ve 8000 bayt'ın üzerindeki dizeler dışındaki çoğu SQL temel veri türü sql_variant sığabilir. |
| Değer33, Değer34, Değer35, ..., Değer64 | varbinary(max) | Açıkça varbinary(max) olarak bildirilen yükseltilen özelliklerin değeri. |