Extraction events in class hierarchy

When a document is classified it is assigned to a specific class, this class has a certain position in the class hierarchy. This is important because not only the class-specific events are executed but also the events of all its parent classes and all events on project level. This allows you to place your script to the most appropriate class (and not repeat it for each class).

If, for instance, you have a project with a class hierarchy as shown below:


An image of a project class hierarchy

For the Project Class, one field is defined (ProjectClassField), for the BaseClass, another field (BaseClassField) is defined that is inherited by the child classes. SubSubClassField is defined on the SubSubClass level. A script locator method is defined on the project class (ProjectClassScriptLocator) and assigned to ProjectClassField. A script locator method is defined for BaseClassField in BaseClass (BaseClassScriptLocator).

When a document belonging to the SubSubClass class is extracted, these events occur in the following order:

' ######## Project #######
ProjectClass - Document_BeforeExtract *
ProjectClass - Document_BeforeLocate(ProjectClassScriptLocator)
ProjectClass – ProjectClassScriptLocator_LocateAlternatives
ProjectClass - Document_AfterLocate(ProjectClassScriptLocator)
ProjectClass - ProjectClassField_BeforeExtract *
ProjectClass - ProjectClassField_AfterFieldReread * ***
ProjectClass - ProjectClassField_AfterExtract *
ProjectClass - Document_AfterExtract *

' ######## Classification Events #######

' ######## Document_BeforeExtract #######
ProjectClass - Document_BeforeExtract *
   BaseClass - Document_BeforeExtract *
      SubClass - Document_BeforeExtract *
         SubSubClass - Document_BeforeExtract *
         SubSubClass - Document_BeforeLocate(BaseClassScriptLocator)
      SubClass - Document_BeforeLocate(BaseClassScriptLocator)
   BaseClass - Document_BeforeLocate(BaseClassScriptLocator)
   BaseClass - BaseClassScriptLocator_LocateAlternatives
   BaseClass - Document_AfterLocate(BaseClassScriptLocator)
      SubClass - Document_AfterLocate(BaseClassScriptLocator)
         SubSubClass - Document_AfterLocate(BaseClassScriptLocator)


' ####### ProjectClassField #######:
ProjectClass - ProjectClassField_BeforeExtract *
   BaseClass - ProjectClassField_BeforeExtract *
      SubClass - ProjectClassField_BeforeExtract *
         SubSubClass - ProjectClassField_BeforeExtract *

ProjectClass - ProjectClassField_AfterFieldReread * ***

ProjectClass - ProjectClassField_AfterExtract *
   BaseClass - ProjectClassField_AfterExtract *
      SubClass - ProjectClassField_AfterExtract *
         SubSubClass - ProjectClassField_AfterExtract *

' ####### BaseClassField #######:
   BaseClass - BaseClassField_BeforeExtract *
      SubClass - BaseClassField_BeforeExtract *
         SubSubClass - BaseClassField_BeforeExtract *

   BaseClass - BaseClassField_AfterFieldReread * ***

   BaseClass - BaseClassField_AfterExtract *
      SubClass - BaseClassField_AfterExtract *
         SubSubClass - BaseClassField_AfterExtract

' ####### SubSubClassField #######:
         SubSubClass - SubSubClassField_BeforeExtract *
         SubSubClass - SubSubClassField_AfterFieldReread * ***
         SubSubClass - SubSubClassField_AfterExtract *

' ######## Document_AfterExtract #######
ProjectClass - Document_AfterExtract *
   BaseClass - Document_AfterExtract *
      SubClass - Document_AfterExtract *
         SubSubClass - Document_AfterExtract *


' ######## Document_Validated #######
ProjectClass - Document_Validated * **
   BaseClass - Document_Validated * **
      SubClass - Document_Validated * **
         SubSubClass - Document_Validated * **


' ######## Document_AfterProcess #######
ProjectClass - Document_AfterProcess *
   BaseClass - Document_AfterProcess *
      SubClass - Document_AfterProcess *
         SubSubClass - Document_AfterProcess *

* Field property changes can be monitored in these events, monitoring can be turned on in the project settings.

** The validated events are only fired when the document is valid.

*** To get the reread events of a table cell or a field, you have to activate the reread option of a field or table column. This can be done from within the Field Properties window.