Steps in the PublicationOutput Create method
Invoking the PublicationOutput Create method results in a number of steps being performed.
- Validate all incoming parameters by verifying the following:
- All required parameters are present.
- No system fields have been supplied.
- All parameters contain a valid value.
- Initialize the folder (if provided).
- Validate the incoming folder for existence and for correctness of folder type.
- Retrieve the folder security fields and temporarily store the security fields.
- Validate the incoming
LogicalId:- If no
LogicalIdis provided, a newLogicalIdwith a new GUID is generated. - If a
LogicalIdis provided, check whether the logical object already exists or not.
- If no
- Verify that the user has write access to the folder or logical object.
- Start the transaction.
- If the logical object exists, lock the logical object.
- Initialize the logical object (in memory):
- If the logical object does not yet exist, create the logical object (in memory). Copy the security fields from the folder.
- Otherwise, initialize all necessary metadata.
Initialize the version object (in memory):
- If the version object does not exist, create the version object (in memory):
- If the baseline is not provided, create a new baseline:
- If the previous version of the publication output exists, create a copy of the baseline.
- Otherwise, create an empty baseline.
- If the baseline complete mode is not provided, initialize the baseline complete mode with the default value, which is
VBASELINECOMPLETEMODELATESTAVAILABLE.
- If the baseline is not provided, create a new baseline:
- Otherwise, initialize all necessary metadata.
- If the version object does not exist, create the version object (in memory):
Create the language object (in memory):
- If the status is not provided, initialize the status with the default value, which is
VPUBSTATUSTOBEPUBLISHED. - Create the revision object and set the blob-related fields.
- If the status is not provided, initialize the status with the default value, which is
- Check the initial status and set the status type.
- Initialize the plugin engine:
- Find the Plugin Configuration Xml
- Conditionally filter the Plugin Configuration Xml using the following conditions:
ConditionName Condition on... Example ISHTypeThe InfoSharetype of the objectISHPublicationFMAPIDThe unique identifier of the logical level (= LogicalId) VERSIONThe version number 1.1.1 FISHPUBLNGCOMBINATIONThe language combination en+frDOC-LANGUAGEThe individual languages used in the language combination frFISHOUTPUTFORMATREFThe label of the output format PDF (A4 Manual) EDTThe EDT specified on the output format EDTPDFISHUserGroupThe element name of the usergroup VUSERGROUPSYSTEMMANAGEMENTCurrentActionThe current action CreateISHLevelThe level
logical,version,lng - Initialize the plugins.
- Retrieve the metadata used by the plugins.
- Run the plugins in the order specified in the Plugin Configuration Xml.
- Check the initial status and set the status type.
- 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.
When creating a new logical object:
- Lock the parent folder.
- Retrieve the folder security fields, check that the values match the ones stored in step 4.
- Link the logical object with the parent folder.
- Start the background tasks from the plugins.
- Commit the transaction.