2010-03-08 31 views
2

我在嘗試在工作流基礎4.0中附加自定義跟蹤參與者時遇到問題。我有一個從TrackingParticipant繼承的類,但我看不到任何其他方式將它附加到我的WorkflowServiceHost,而不是像通過下面的SDK示例(在system.servicemodel元素中)演示的大量雜亂的app.config條目。當我只想讓一個簡單的自定義跟蹤參與者來聽我的CustomTrackingRecord.Data.Add(key,value)調用時,此選項似乎需要大量額外的開銷和類來創建。通過工作流基礎4.0中的代碼註冊自定義跟蹤參與者

public class CustomTracking : TrackingParticipant 
{ 
    protected override void Track(TrackingRecord record, TimeSpan timeout) 
    { 
     CustomTrackingRecord innerRecord = (CustomTrackingRecord)record; 
     var workflowInstanceId = innerRecord.InstanceId; 

     Console.WriteLine("Track called for workflow '{0}'", workflowInstanceId); 
    } 
} 

如何通過代碼(而不是像下面的配置)將我的上述自定義跟蹤參與者註冊到workflowServiceHost實例?

<extensions> 
    <behaviorExtensions> 
     <add name="historyFileTracking" type="Microsoft.Samples.HistoryFileTrackingExtensionElement, HiringRequestProcessDefinition, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />  
    </behaviorExtensions> 
    </extensions> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior> 
     <historyFileTracking profileName="RequestStoryTracking" path="..\..\..\Data\RequestHistory\"/> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 

    <tracking> 
    <profiles> 
     <trackingProfile name="RequestStoryTracking"> 
     <workflow activityDefinitionId="*"> 
      <customTrackingQueries> 
      <customTrackingQuery name="*" activityName="*" /> 
      </customTrackingQueries> 
     </workflow> 
     </trackingProfile> 
    </profiles> 
    </tracking> 

回答

4

只需將其作爲工作流程擴展添加到WorkflowServiceHost。

var host = new WorkflowServiceHost(....); 
var tracker = new CustomTracking(); 
host.WorkflowExtensions.Add(tracker); 
host.Open(); 
相關問題