Documentation Center

Steps in the DocumentObj Update method

Invoking the DocumentObj Update method updates a content object (logical, version and language) and results in a number of steps being performed.

Here are the steps that the DocumentObj Update method executes when invoked:
  1. Validate all incoming parameters by verifying the following:
    • All required parameters are present.
    • All parameters contain a valid value.
    • No system fields are supplied.
  2. Retrieve the object:

    • If no object could be found, an InvalidObject exception is thrown.
    • If an object is found and the current user does not have write access, an ObjectIsReadOnly exception is thrown.
  3. Preprocess the blob (if a blob is submitted):
    • Convert the incoming EDT into a database object.
    • If the blob is XML content:
      • Resolve the DTD using the catalog.
      • Check that the processing instruction corresponds with the current object.
  4. Initialize the plugin engine:

    • Find the Plugin Configuration Xml,
    • Conditionally filter the Plugin Configuration Xml using the following conditions:
      ConditionNameCondition on...Example
      ISHTypeThe InfoShare type of the objectISHMasterDoc, ISHModule, ISHLibrary, ISHIllustration, ISHTemplate
      FMAPIDThe unique identifier of the logical level (= LogicalId) 
      VERSIONThe version number1.1.1
      DOC-LANGUAGEThe languagefr
      FSOURCELANGUAGEThe source languageen
      FRESOLUTIONThe label of the resolutionLow
      EDTThe EDT specified on the output formatEDTXML
      ISHUserGroupThe element name of the usergroupVUSERGROUPSYSTEMMANAGEMENT
      CurrentActionThe current actionUpdate, Checkin, SetMetadata, CheckOut and UndoCheckOut
      ISHLevelThe level logical, version, lng
    • Initialize the plugins,
  5. Start the transaction and lock all involved objects.
  6. Retrieve all metadata that is required by any of the following steps, including all metadata that is required for running any of the plugins.
  7. Check that the current values match the values specified in the required current metadata.
  8. Verify the following:
    • If the object is checked out, it is checked out by the current user.
    • The current user has at least one valid status transition available.
    • When submitting a blob, the object is not part of a released publication output with the current language.
  9. If a blob is submitted, create the new object and set all blob related fields (in memory),

  10. Set all metadata fields (in memory).

  11. If the status is updated, verify the following:
    • The object is not checked out by anyone.
    • The status transition is valid.
  12. Run the plugins in the order specified in the Plugin Configuration Xml.
  13. If the language is updated, verify the following:
    • The object does not contain XML. Language Applicability is only allowed for non-XML objects like illustrations.
    • The method is not changing all languages and is not adding a language that is already present for the current version.
  14. If the status is updated:
    • Since the plugins can change the metadata, all the checks from step 11 are executed again.
    • Update the status type (if necessary),
    • When changing the status from "Released" to "Draft", check that the object is not part of a released publication output with the current language.
    • Start translation management (if necessary).
  15. Update the information in the database:
    • Set the new metadata.
    • Link the language with the new blob.
    • Stream the blob to the database.
  16. Start the background tasks from the plugins.

  17. Commit the transaction.