2012-08-14 73 views
0

我對定時任意WorkflowApplication實例的時間感興趣,看看他們花了多長時間「忙」和閒置多久。WF 4.0:當WorkflowApplication停止空閒時跟蹤通知?

但是,似乎跟蹤通知僅在實例變爲空閒時生成,而不是在重新激活時生成。

有沒有簡單的方法得到這樣的通知?

UPDATE:

 WorkflowApplication wa = new WorkflowApplication(activity); 

     var tracker = new ConsoleTrackingParticipant() 
     { 
      TrackingProfile = new TrackingProfile 
      { 
       Name = "SampleTrackingProfile", 
       ImplementationVisibility = ImplementationVisibility.All      
      } 
     }; 


     var query = new WorkflowInstanceQuery(); 
     query.States.Add("*"); 
     tracker.TrackingProfile.Queries.Add(query); 

     var brq = new BookmarkResumptionQuery() 
     { 
      Name = "*" 
     }; 

     tracker.TrackingProfile.Queries.Add(brq); 

     wa.Extensions.Add(tracker); 

     wa.Run(); 

回答

2

在幾乎所有情況下的工作流去,因爲書籤閒置創建。要繼續工作流程,必須繼續書籤。有了TrackingParticipant,發生這種情況時您可以收到BookmarkResumptionRecord。爲了接收這些信息,您需要配置一個TrackingProfile並添加一個BookmarkResumptionQuery

+0

嗨,莫里斯,謝謝你的回答。我的工作流通常由於AsyncCodeActivity而閒置,但我發現這是使用書籤實現的。我試着將BookmarkResumptionQuery添加到我的跟蹤配置文件中,但如果我沒有設置它,它會抱怨名稱爲空,但我沒有名稱。有沒有辦法查詢所有書籤的恢復?我試着在MSDN和谷歌上查找,但沒有太多關於如何使用它的信息。 – 2012-08-15 07:36:40

+0

更多信息:AsyncCodeActivity使用框架內部的匿名書籤。我試着用name = String.Empty運行一個查詢,但是這不會引發任何通知。 – 2012-08-15 07:47:06

+0

嘗試將名稱設置爲「*」。這應該匹配所有書籤。 – Maurice 2012-08-15 07:47:08