Understanding the steps in DocumentObj Create method
Describes the different steps in DocumentObj Create method
The following flow describes the main steps and checks when creating a content object (logical, version and language).
Validate all incoming parameters
During this step the following checks are executed:- All required parameters are present
- No system fields are supplied
- All parameters contain a valid value.
- In order to check this, the incoming language(s) are converted into a list with LovValue items.
Initialize the folder (if provided)
Validate the incoming folder upon existence and correctness of folder type
Retrieve the folder security fields and temporary store the security fields
Validate the incoming LogicalId
- If no LogicalId is provided, a new LogicalId is generated using a new GUID
- If a LogicalId is provided, check whether the logical object already exists or not
- Check that the user has write access to the folder or logical object
Start transaction
- If the logical object exists, the logical object is locked
Initialize logical object (in memory)
- If the logical object does not exist, create the logical object (in memory) . Copy the security fields from the folder
- Otherwise, initialize all necessary metadata
Initialize version object (in memory)
- If the version object does not exist, create the version object (in memory)
- Otherwise, initialize all necessary metadata
Create the language object (in memory)
- Check the initial status
- Create the revision object and set the blob related fields
Initialize the plugin engine
- Find the Plugin Configuration Xml
- Conditionally filter the Plugin Configuration Xml using the following conditions:
ConditionName Condition on... Example ISHType ISHMasterDoc, ISHModule, ISHLibrary, ISHIllustration, ISHTemplate FMAPID The unique identifier of the logical level (= LogicalId) VERSION The version number 1.1.1 DOC-LANGUAGE The language fr FSOURCELANGUAGE The source language en FRESOLUTION The label of the resolution Low EDT The EDT specified on the output format EDTXML ISHUserGroup The element name of the usergroup VUSERGROUPSYSTEMMANAGEMENT CurrentAction The current action Create ISHLevel The level
logical, version, lng - Initialize the plugins
- Retrieve the metadata used by the plugins
Run the plugins
- All plugins are executed in order specified in the Plugin Configuration Xml
- If the plugin fails, an
ErrorRunningPluginexception is thrown. This exception always wraps the exception which is thrown by the plugin itself.
- Check the initial status and set the status type
- Check that there are no multiple languages provided when submitting xml
-
Update the information in the database:
- Create all objects and set the new metadata
- Link the version object with the logical object
- Link the language object with the version object
- Link the language with the new revision object
- Stream the blob to the database
When creating a new logical object...
- Lock the parent folder
- Retrieve the folder security fields, check that the values match the ones stored in the step 2
- Link the logical object with the parent folder
Start the background tasks from the plugins
Commit the transaction