Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Moving warnings to a separate section

...

Versioning is a new functionality to build the history of an item. Users will have the opportunity to create new version of an existing item any time the will make a change.

Enabling Item Level Versioning

By default, Item Level Versioning is disabled in DSpace 3.0/4.0.

Info
Starting from DSpace 4.0, Item Level Versioning is also supported in JSPUI.

Steps for XML UI

If you wish to enable this feature, you just have to uncomment the "Versioning" aspect in your [dspace]/config/xmlui.xconf file (and restart your servlet container):

Code Block
<!-- =====================
     Item Level Versioning
     ===================== -->
<!-- To enable Item Level Versioning features, uncomment this aspect. -->
<aspect name="Versioning Aspect" path="resource://aspects/Versioning/" />

Steps for JSP UI

Important warnings - read before enabling

 

Warning
titleAIP Backup & Restore functionality only works with the Latest Version of Items

If you are using the AIP Backup and Restore functionality to backup / restore / migrate DSpace Content, you must be aware that the "Item Level Versioning" feature is not yet compatible with AIP Backup & Restore. Using them together may result in accidental data loss.  Currently the AIPs that DSpace generates only store the latest version of an Item.  Therefore, past versions of Items will always be lost when you perform a restore / replace using AIP tools. See DS-1382.

Warning
titleVersioning history exposes data that may be considered personal

If you enable versioning, the name and email of the submitter are shown to all users by default in Version history. The only way to circumvent this is to make Version history visible only to admins by setting item.history.view.admin=false in [dspace]/config/modules/versioning.cfg. See DS-1349 for ongoing work on a better solution.

Enabling Item Level Versioning

By default, Item Level Versioning is disabled in DSpace 3.0/4.0.

Info
Starting from DSpace 4.0, Item Level Versioning is also supported in JSPUI.

Steps for XML UI

If you wish to enable this feature, you just have to uncomment the "Versioning" aspect in your [dspace]/config/xmlui.xconf If you wish to enable this feature, you just have to edit the  enabled  settings in your [dspace]/config/modules/versioning.cfg  file (and restart your servlet container):

Code Block
<!-- =====================
     Item Level Versioning
     ===================== -->
<!-- To enable Item Level Versioning features, uncomment this aspect. -->
<aspect name="Versioning Aspect" path="resource://aspects/Versioning/" />

Steps for JSP UI

If you wish to enable this feature, you just have to edit the  enabled  settings in your [dspace]/config/modules/versioning.cfg file (and restart your servlet container):

Code Block
##---------------------------------------------------#
#------------ VERSIONING CONFIGURATIONS ------------#
#---------------------------------------------------#
#  These configs are used by the versioning system  #
#-------------#
#------------ VERSIONING CONFIGURATIONS ------------#
#---------------------------------------------------#
#Parameter 'enabled' is used only by JSPUI
enabled=false
Warning
titleAIP Backup & Restore functionality only works with the Latest Version of Items

If you are using the AIP Backup and Restore functionality to backup / restore / migrate DSpace Content, you must be aware that the "Item Level Versioning" feature is not yet compatible with AIP Backup & Restore. Using them together may result in accidental data loss.  Currently the AIPs that DSpace generates only store the latest version of an Item.  Therefore, past versions of Items will always be lost when you perform a restore / replace using AIP tools. See DS-1382.

Warning
titleVersioning history exposes data that may be considered personal
If you enable versioning, the name and email of the submitter are shown to all users by default in Version history. The only way to circumvent this is to make Version history visible only to admins by setting item.history.view.admin=false in [dspace]/config/modules/versioning.cfg. Another solution will be prepared, but only after the 3.0 release. See DS-1349.
#  These configs are used by the versioning system  #
#---------------------------------------------------#
#Parameter 'enabled' is used only by JSPUI
enabled=false

Initial Requirements

The Item Level Versioning implementation in DSpace 3.0 builds on following requirements identified by the stakeholders who supported this contribution: Initial Requirements Analysis

...

  1. Resolution: IdentifierService act in a manner similar to the existing HandleManager in DSpace, allowing for resolution of DSpace Items from provided identifiers.
  2. Minting: Minting is the act of reserving and returning an identifier that may be used with a specific DSpaceObject.
  3. Registering: Registering is the act of recording the existence of a minted identifier with an external persistent resolver service, these .  These services may reside on the local machine (HandleManager) or exist as external services (PURL or DEZID EZID DOI registrations registration services)

    Code Block
    languagejava
    public interface IdentifierService {
    
        /**
         *
         * @param context
         * @param dso
         * @param identifier
         * @return
         */
        String lookup(Context context, DSpaceObject dso, Class<? extends Identifier> identifier);
    
        /**
         *
         * This will resolve a DSpaceObject based on a provided Identifier.  The Service will interrogate the providers in
         * no particular order and return the first successful result discovered.  If no resolution is successful,
         * the method will return null if no object is found.
         *
         * TODO: Verify null is returned.
         *
         * @param context
         * @param identifier
         * @return
         * @throws IdentifierNotFoundException
         * @throws IdentifierNotResolvableException
         */
        DSpaceObject resolve(Context context, String identifier) throws IdentifierNotFoundException, IdentifierNotResolvableException;
    
        /**
         *
         * Reserves any identifiers necessary based on the capabilities of all providers in the service.
         *
         * @param context
         * @param dso
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void reserve(Context context, DSpaceObject dso) throws AuthorizeException, SQLException, IdentifierException;
    
        /**
         *
         * Used to Reserve a Specific Identifier (for example a Handle,  hdl:1234.5/6) The provider is responsible for
         * Detecting and Processing the appropriate identifier, all Providers are interrogated, multiple providers
         * can process the same identifier.
         *
         * @param context
         * @param dso
         * @param identifier
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void reserve(Context context, DSpaceObject dso, String identifier) throws AuthorizeException, SQLException, IdentifierException;
    
        /**
         *
         * @param context
         * @param dso
         * @return
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void register(Context context, DSpaceObject dso) throws AuthorizeException, SQLException, IdentifierException;
    
        /**
         *
         * Used to Register a Specific Identifier (for example a Handle,  hdl:1234.5/6) The provider is responsible for
         * Detecting and Processing the appropriate identifier, all Providers are interrogated, multiple providers
         * can process the same identifier.
         *
         * @param context
         * @param dso
         * @param identifier
         * @return
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void register(Context context, DSpaceObject dso, String identifier) throws AuthorizeException, SQLException, IdentifierException;
    
        /**
         * Delete (Unbind) all identifiers registered for a specific DSpace item. Identifiers are "unbound" across
         * all providers in no particular order.
         *
         * @param context
         * @param dso
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void delete(Context context, DSpaceObject dso) throws AuthorizeException, SQLException, IdentifierException;
    
        /**
         * Used to Delete a Specific Identifier (for example a Handle,  hdl:1234.5/6) The provider is responsible for
         * Detecting and Processing the appropriate identifier, all Providers are interrogated, multiple providers
         * can process the same identifier.
         *
         * @param context
         * @param dso
         * @param identifier
         * @throws org.dspace.authorize.AuthorizeException
         * @throws java.sql.SQLException
         * @throws IdentifierException
         */
        void delete(Context context, DSpaceObject dso, String identifier) throws AuthorizeException, SQLException, IdentifierException;
    
    }

...