# TrainableClassifierAsyncCodeActivity Class

> The `TrainableClassifierAsyncCodeActivity` class constructs an `AsyncCodeActivity` for extractors training.

The `TrainableClassifierAsyncCodeActivity` class constructs an `AsyncCodeActivity` for extractors training.

## Definition

* Namespace: `UiPath.DocumentProcessing.Contracts.Training`
* Assembly: `UiPath.DocumentProcessing.Contracts`

## Description

Abstract class that implements the `UiPath.DocumentProcessing.Contracts.Training.ITrainableClassifierActivity` interface and the `System.Activities.AsyncCodeActivity` abstract class.

This class should be implemented in order to construct an `AsyncCodeActivity` for extractors training, compatible with the [Train Classifiers Scope](https://docs.uipath.com/activities/other/latest/document-understanding/train-classifiers-scope) activity and the document processing infrastructure.

## Training parameters in classifier activities

All InArguments are auto-populated by the **Train Classifiers Scope** activity for all sub-activities. InArguments include the following information:

* Information about the document that was classified, specifically original file path, text version, and document object model.
* Details about each field that requires training, expected to be processed by the training activities. These types are defined by the **Train Classifiers Scope** activity in the **Configure Training** wizard.

This activity does not have any OutArguments.

## Members

#### Constructors

`TrainableClassifierAsyncCodeActivity()` - The protected default constructor.

#### Methods

* `GetCapabilities()` - Gets, at design time, a list of document types the classifier is capable of classifying. This method will only be called at design time, and as such it should NOT use any InArgument(s).
* `ProvidesCapabilities()` - Returns true if the classifier is able to provide a list of capabilities.

#### Properties

* `DocumentPath` **`InArgument<string>`** - The file path of the document.
* `DocumentText` **`InArgument<string>`** - The text version of the document.
* `DocumentObjectModel` **`InArgument<UiPath.DocumentProcessing.Contracts.Dom.Document>`** - The document object model of the document.
* `HumanValidatedData` **`InArgument<UiPath.DocumentProcessing.Contracts.Results.ExtractionResult[]>`** - The extraction results for the processed document, that you want to use for training.
* `PersistenceId` **`<string>`** - The unique, opaque ID that is used by the scope activities in order to correctly track and configure the training activity.
* `PredictionId` **`InArgument<string>`** - Identifies that the same document is processed in a workflow. It's composed of `DocumentId` and `JobId`.
