我在尝试在工作流基础 4.0 中附加自定义跟踪参与者时遇到问题。我有一个继承自 TrackingParticipant 的类,但除了通过大量混乱的 app.config 条目(如下面的 SDK 示例(在 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);
}
}
如何通过代码(而不是如下配置)将上述自定义跟踪参与者注册到工作流服务主机实例?
<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>
只需将其作为工作流扩展添加到 WorkflowServiceHost 即可。
var host = new WorkflowServiceHost(....);
var tracker = new CustomTracking();
host.WorkflowExtensions.Add(tracker);
host.Open();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)