Tracking is the ability to track and monitor the execution of a workflow as it is running. This information can be used by providing a tracking service to the WorkflowRuntime object. The out-of-box SqlTrackingService is one example of a tracking service that uses a SQL database to store the collected tracking information. By writing your own tracking service, you can collect and store this information in any format that your application requires.
When a new workflow is created, the tracking service requests a tracking channel to be associated with that workflow. All of the workflow's tracking information is then sent to this tracking channel.
There are three types of events that can be tracked by the tracking service, namely Workflow instance events, Activity events, and User events. You can configure the type and amount of information that your service wants to receive for a particular workflow instance or type of workflow by providing a tracking profile.
The tracking framework also provides the ability to extract information about activities or the workflow during an event. If there is a specific property or field in your activity or workflow that needs to be tracked, you can provide this information in the extracts section of the tracking profile, and that information will be extracted during the specified event.