ワークフロー ファウンデーション 4.0 でカスタム追跡参加者をアタッチしようとすると問題が発生します。TrackingParticipant から継承するクラスがありますが、以下の SDK の例 (system.servicemodel 要素内) のように、多くの乱雑な app.config エントリを使用する以外に、それを 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>