This documentation is archived and is not being maintained.

UserTrackingLocation Class

Defines an activity-qualified location that corresponds to a user event in the potential execution path of a root workflow instance. This class cannot be inherited.

Namespace:  System.Workflow.Runtime.Tracking
Assembly:  System.Workflow.Runtime (in System.Workflow.Runtime.dll)

public sealed class UserTrackingLocation

An activity designer or a workflow designer may use any of the overloaded Activity.TrackData and ActivityExecutionContext.TrackData methods to instrument the workflow to emit data to the runtime tracking infrastructure as a user event. The data emitted is referred to as user data. Unlike activity status events, and workflow status events, which occur only on activity or workflow status changes, user events can occur at any location that is instrumented in a workflow. A UserTrackingLocation defines the matching parameters for such a location by specifying the type of the user data, the type of the activity from which it must be emitted, a collection of conditions that can more precisely qualify an instance or instances of this activity, an optional key name with which the user data must be associated, whether derived types of the user data should be matched, and whether user data emitted from activities derived from the type of the specified activity should be matched.


A single UserTrackingLocation may refer to more than one actual location in the potential execution path of a workflow instance.

You may add a UserTrackingLocation to either UserTrackPoint.MatchingLocations or UserTrackPoint.ExcludedLocations in order to define the match parameters for a UserTrackPoint in a TrackingProfile.

There are three general conditions which must be met in the following order for the UserTrackingLocation to be matched by the runtime tracking infrastructure: the activity that has emitted a user event must match the set of activities specified by ActivityType, ActivityTypeName, Conditions, and MatchDerivedActivityTypes; the key, if one exists, associated with the user data must match KeyName; and, the type of the user data emitted by the user event must match the set of user data types specified by ArgumentType, ArgumentTypeName, and MatchDerivedArgumentTypes. Only if all three of these conditions are met, does the runtime tracking infrastructure consider the UserTrackingLocation matched.

To configure a UserTrackingLocation, you must set either ArgumentTypeName or ArgumentType to specify the type of the user data to be matched and either ActivityTypeName or ActivityType to specify the type of the activity from which the user data must be emitted to be matched. You may add ActivityTrackingCondition objects to Conditions to more completely qualify the activity from which the user data must be emitted. You may set MatchDerivedArgumentTypes to specify that user data derived from the user data type specified by ArgumentTypeName or ArgumentType should be matched, and you may set MatchDerivedActivityTypes to specify that user data emitted from activities derived from the activity type specified by ActivityTypeName or ActivityType should be matched.

You may set KeyName to specify that only user data associated with the specified key name should be matched for this UserTrackingLocation. If KeyName is a null reference (Nothing in Visual Basic), the runtime tracking structure will not try to match the key associated with the user data.


Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0