2

我在尝试在工作流基础 4.0 中附加自定义跟踪参与者时遇到问题。我有一个继承自 TrackingParticipant 的类,但我看不到任何其他方式将它附加到我的 WorkflowServiceHost,除了通过大量凌乱的 app.config 条目,如下面的 SDK 示例所示(在 system.servicemodel 元素中)。当我只想让一个简单的自定义跟踪参与者收听我的 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>
4

1 回答 1

4

只需将其作为工作流扩展添加到 WorkflowServiceHost。

var host = new WorkflowServiceHost(....);
var tracker = new CustomTracking();
host.WorkflowExtensions.Add(tracker);
host.Open();
于 2010-03-08T18:00:48.703 回答