如何为上传的内容设置任意版本号?

时间:2019-02-18 22:07:30

标签: java transactions alfresco versioning alfresco-webscripts

我正在开发代表Surf WebScript的内容上传器。说“更新程序”可能更正确,因为内容已经存在于存储库中,但可能没有cm:versionable方面。我需要更新此内容并设置正确的版本号(例如任意)。

我注意到第一次上载总是得到数字1.0

例如,假设内容模型不具有cm:versionable方面。我可以通过这种方式添加它并指定所需的版本号(1.1

if(!nodeService.hasAspect(nodeRef, QNAME_ASPECT_VERSIONABLE)) {
    Map<String, String> map = new HashMap<String, String>() {
        {
            put(QNAME_VERSION_LABEL, INITIAL_UPLOADED_VERSION); // 1.1
            put(QNAME_AUTO_VERSION, false);
        }
    };
    nodeService.addAspect(nodeRef, QNAME_ASPECT_VERSIONABLE, map);
    // SKIPPED

我使用的常量:

final String NS_ALF_CONTENT_MODEL  = "http://www.alfresco.org/model/content/1.0";
final String ASPECT_CM_VERSIONABLE = "versionable";
final String PROP_VERSION_LABEL    = "versionLabel";
final String PROP_AUTO_VERSION     = "autoVersion";
final String INITIAL_UPLOADED_VERSION = "1.1";

final QName QNAME_ASPECT_VERSIONABLE = QName.createQName(NS_ALF_CONTENT_MODEL, ASPECT_CM_VERSIONABLE);
final QName QNAME_VERSION_LABEL = QName.createQName(NS_ALF_CONTENT_MODEL, PROP_VERSION_LABEL);  
final QName QNAME_AUTO_VERSION = QName.createQName(NS_ALF_CONTENT_MODEL, PROP_AUTO_VERSION);

调试该解决方案时,可以看到我得到了所需的版本。

但是,当我在节点浏览器中查看节点属性时,看到的是cm:versionLabel == 1.0

enter image description here

根据我使用的逻辑,所有接下来的上载都会得到正确的数字。

为什么第一次上载的版本始终为1.0,如何更改此行为?。

transaction level就我而言:<transaction>required</transaction>

我将非常感谢您提供的信息。

感谢所有人。

1 个答案:

答案 0 :(得分:1)

是的,Patrik's的建议正在起作用(我没有检查的Slothrop's建议)。我刚刚设置了initialVersion = false

Map<String, String> map = new HashMap<String, String>() {
    {
        put(QNAME_VERSION_LABEL, INITIAL_UPLOADED_VERSION); // 1.1
        put(QNAME_AUTO_VERSION, false);
        put(QNAME_INITIAL_VERSION, false);
    }
};

nodeService.addAspect(nodeRef, QNAME_ASPECT_CM_VERSIONABLE, map);

现在一切正常。

enter image description here

感谢@Gagravarr的帮助。