Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-21275

Streamlined Versioning Policy

    XMLWordPrintable

    Details

    • Type: Epic
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 9.1
    • Component/s: Core

      Description

      Automated versioning

      Nuxeo Platform should make it easy to configure for the global repository versioning policies (several one can be enabled for a given document type). All policies should be contributed with a filter that leverages doc properties and user ones.

      Collaborative versioning scheme

      If the user that updates a document is different than last user that did an update on the document, then create a version.

      Time based versioning scheme

      If not versioned since … create a version. We may want to activate this for a given type only

      Lifecycle based versioning

      If the document goes into that specific lifecycle state, we should force the creation of a version.

      Technically, the contributed rules should be evaluated to see if some applies to the current document that is being modified to check what we should do in terms of versioning.

      Sample contribution

      Contributions to new versioning system could be something like:

      <extension target="org.nuxeo.ecm.platform.versioning.NewVersioningService" point="policies">
        <policy id="CollaborativeForInvoices" order="1" increment="MAJOR">
          <filter-id>CollaborativeForInvoices</filter-id>
          <filter-id>NotAdmin</filter-id>
        </policy>
        <policy id="CollaborativeForInvoices-2" order="2" increment="MINOR">
          <filter-id>CollaborativeForInvoices</filter-id>
        </policy>
      </extension>
      
      <extension target="org.nuxeo.ecm.platform.versioning.NewVersioningService" point="filters">
        <filter id="CollaborativeForInvoices">
          <type>File</type>
          <condition>Doc['dc:lastContibutor']!=currentUser.name</condition>
        </filter>
      
        <filter id="NotAdmin">
          <condition>!currentUser.admin</condition>
        </filter>
      
        <filter id="Empty">
          <type></type>
          <facet></facet>
          <schema></schema>
          <condition></condition>
        </filter>
      </extension>
      

      Manual Versioning

      Via form versioning selector, via REST API Header. When creating or updating a document, we can select create a major or minor version. *The version that is created already has the modification*. The document should not be checked out right after that. This should be usable: on the bulk edit, bulk create, create, edit, csv import, spreadsheet modules.
      For manual versioning, current option allows to control per document type what options are available (minor , major, none). In case of bulk versioning, this doesn’t make sense, except if do enforce the logic at lower level (because then we could generate an exception). So either we remove this feature, or we enforce it a little bit more at lower level.

      It looks also that some customers are interested by the "Once versioned, always versioned (either minor or major)” policy. To Be Defined how it works

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  PagerDuty

                  Error rendering 'com.pagerduty.jira-server-plugin:PagerDuty'. Please contact your Jira administrators.