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 enables you to place your script in the most appropriate class (and not repeat it for each class).

This is useful if you have a project with a class hierarchy with the following configuration:


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 setting of a field or table column. This can be done from within the Field Properties window.