Reference: OASIS JIRA entry SRAMP-14

Description

Issue-014 from the contributed issues document

Upgrade lastModified… attributes to support longer history of changes.

Both lastModifiedTimestamp and lastModifiedBy currently are required and have a default cardinality of 1.
The question is should we change these attributes in the Core Model to their own type and then have a
sequence of them in the BaseArtifactType?

Background

Current the model support single attributes for LastModifiedTimestamp and lastModifiedBy.

<xsd:complexType abstract="true" name="BaseArtifactType">
    ...
    <xsd:attribute name="lastModifiedTimestamp" type="xsd:dateTime" use="required" />
    <xsd:attribute name="lastModifiedBy" type="xsd:string" use="required" />
    ...
</xsd:complexType>

Figure 1. Coremodel XSD Fragment showing the single attributes for lastModifiedTimestamp and lastModifiedBy.

I think it makes sense for the repository to store the full history (modified by whom and when), however the downside is that this list could grow very large.

Recommendation

I recommend to leave the lastModifiedTimestamp and lastModifiedBy attributes but to add two optional Elements modifiedTimestamp and modifiedBy containing the full history. Figure 2 shows the two added element references.

<xsd:complexType abstract="true" name="BaseArtifactType">
    <xsd:sequence>
        ...
        <xsd:element ref="tns:modifiedTimestamp" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element ref="tns:modifiedBy" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
...
</xsd:complexType>
<xsd:element name="modifiedTimestamp" type="xsd:dateTime" />
<xsd:element name="modifiedBy" type="xsd:string" />

Figure 2. Adding modifiedTimestamp and modifiedBy elements to BaseArtifactType.

I recommend:

  1. to keep the current lastModifiedTimestamp and lastModifiedBy attributes, and
  2. to add modifiedTimestamp and modifiedBy element which by default are not returned. Only when a certain flag is set on the request the full history should be returned.

Conclusion

Don’t change the current implementation but add two optional element references modifiedTimestamp and modifiedBy.