我在尝试在工作流基础4.0中附加自定义跟踪参与者时遇到问题。我有一个继承自TrackingParticipant的类,但除了通过下面的SDK示例演示的大量凌乱的app.config条目(在system.servicemodel元素中)之外,我看不到任何其他方式将它附加到我的WorkflowServiceHost。当我只想要一个简单的自定义跟踪参与者来监听我的CustomTrackingRecord.Data.Add(key,value)调用时,这个选项似乎需要很多额外的开销和类。
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>
答案 0 :(得分:4)
只需将其作为工作流程扩展添加到WorkflowServiceHost。
var host = new WorkflowServiceHost(....);
var tracker = new CustomTracking();
host.WorkflowExtensions.Add(tracker);
host.Open();