An activity designer or a workflow designer may use 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 status changes, user events can occur at any location that is instrumented in a workflow. There are many reasons to instrument a workflow to emit user events. For example, a workflow designer may want to communicate logical state information about the progress of a workflow, or an activity designer might want to provide an opportunity to activity members at times other than an activity status change.
A UserTrackPoint defines a point of interest in the potential execution path of a root workflow instance associated with a user event. A UserTrackPoint contains locations that are included in matching, locations that are excluded from matching, and any additional data that should be extracted from the workflow instance when the track point is matched. You can add a UserTrackPoint to TrackingProfile.UserTrackPoints to instruct the runtime tracking infrastructure to send a UserTrackingRecord to the tracking service when the track point is matched. The user data is returned in UserTrackingRecord.UserData. A single UserTrackPoint may be matched at multiple points in the workflow instance.
A UserTrackingLocation contains match conditions for a location associated with a user event in the potential execution path of a workflow instance. You can add UserTrackingLocation objects to MatchingLocations to define locations that should be included in matching for the track point. Similarly, you can add UserTrackingLocation objects to ExcludedLocations to define locations that should be excluded from matching for the track point.
You can add ActivityDataTrackingExtract objects and WorkflowDataTrackingExtract objects to Extracts to specify data that should be extracted from the workflow instance when the track point is matched. The extracted data will be returned in UserTrackingRecord.Body.
You can add to Annotations to specify additional information associated with the track point. These annotations will be returned in UserTrackPoint.Annotations.