# ClassifierCodeActivity Class

> ClassifierCodeActivity is an abstract class that implements both the IClassifierActivity interface and the CodeActivity abstract class, vital for creating a compatible CodeActivity for document classification.

ClassifierCodeActivity is an abstract class that implements both the IClassifierActivity interface and the CodeActivity abstract class, vital for creating a compatible CodeActivity for document classification.

## Definition

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

## Description

An abstract class that implements the `UiPath.DocumentProcessing.Contracts.Classification.IClassifierActivity` interface and the `System.Activities.CodeActivity` abstract class.

This class must be implemented in order to construct a `CodeActivity` for document classification that is compatible with the `Classify Document Scope` activity and the document processing infrastructure.

In order to implement this abstract class, the `Execute`(`CodeActivityContext context`) method must be overridden.

## Understanding InArguments and OutArgument in ClassifierCodeActivity

All the defined **InArguments** are automatically populated by the **Classify Document Scope** activity for all child activities.

The **InArguments** contain the following information:

* Information about the document that is to be classified, specifically the original file path, the text version, and the document object model.
* Information about the document types expected to be understood and processed by the classifier activity. These document types are set by the **Classify Document Scope** activity after their configuration in the **Configure Classifiers** wizard of the scope activity.

The **OutArgument** contains a list of classification results, in a `ClassifierResult`.

For example, if a classifier can classify an entire file as either a contract or an annex, then the `ClassifierResult` should contain a single entry in the `Classifications` list. This entry should reflect the highest confidence classification, with the `ResultsDocumentBounds` encompassing the entire document.

If a classifier can classify segments of a file as either a contract or an annex, then the `ClassifierResult` should contain multiple entries in the `Classifications` list, matching the number of identified parts. These entries should each have its own `ResultsDocumentBounds`. The page ranges for each should be disjunctive.

## Members

#### Constructors

`ClassifierCodeActivity()`
- The protected default constructor.

#### Properties

* `DocumentPath` `InArgument<string>` - The path to the document file.
* `DocumentText` `InArgument<string>` - The text version of the document.
* `DocumentObjectModel` `InArgument<UiPath.DocumentProcessing.Contracts.Dom.Document>` - The document object model of the document.
* `DocumentTypes` `InArgument<UiPath.DocumentProcessing.Contracts.Classification.ClassifierDocumentType[]>` - The document type information that you want the classifier to take into account.
* `PersistenceId` `string` - The unique, opaque ID that is used by the scope activities in order to correctly track and configure the classifier activity.
* `ClassifierResult` `OutArgument<UiPath.DocumentProcessing.Contracts.Classification.ClassifierResult>` - The output of the classifier activity.
