【问题标题】:Assigning content store using JAVA API使用 JAVA API 分配内容存储
【发布时间】:2020-06-10 07:32:14
【问题描述】:

我曾在 alfresco hub 发帖,但还没有找到解决方案。

我试图将 javascript API 代码转换为将文件移动到不同内容存储('storeB')的 java API。我们在“content-store-selector-context.xml”中定义了 storeB。我们使用的是企业版的 Alfresco 5.2。

java 脚本代码如下, - 工作得很好。它的工作代码。

对于每个(node.children 中的变量 n){ if (n.isDocument) {

               //Apply script for moving files to DMS Store 01   
    n.removeAspect("cm:versionable");
    n.addAspect("cm:storeSelector");
    n.properties['cm:storeName'] = "storeB";      

    n.save();
  }

}

以下是 Java API 代码 - 但此代码不会将文件移动到“storeB”。我有什么遗漏吗?

java API 中是否有任何类似的方法可用。

List<ChildAssociationRef> children = nodeService.getChildAssocs(dayFolderRef);
        Map<QName, Serializable> aspectsProps = new HashMap<QName, Serializable>(1);
        aspectsProps.put(ContentModel.PROP_STORE_NAME, "storeB");
        LOG.info("Folder::" + dayFolderRef.getId());
        LOG.info("Number of Subfolder to be moved is ::" + children.size());
        for (ChildAssociationRef childAssoc : children) {
            NodeRef childNodeRef = childAssoc.getChildRef();
            if (ContentModel.TYPE_CONTENT.equals(nodeService.getType(childNodeRef))) {
                LOG.info("Moving the file to secondary storae "+childNodeRef.getId());

                nodeService.removeAspect(childNodeRef, ContentModel.ASPECT_VERSIONABLE);
                nodeService.addAspect(childNodeRef, ContentModel.ASPECT_STORE_SELECTOR,   aspectsProps);                

            }
        }

我可以看到一个保存方法是java script API。根据收到的 Alfresco 论坛的响应,javascript API 中没有保存方法。 Java API 在事务中运行,因此最终会提交。但我可以使用下面的 SQL 从 DB 中看到 -

SELECT count(*)
FROM alf_content_url
WHERE orphan_time IS NOT NULL;

上述 SQL 在执行代码后返回相同的计数,因此不会发生 DB 更新。哪里不对了 ?

任何帮助,不胜感激

问候 布里杰什

【问题讨论】:

  • 我不明白为什么这不起作用,你确定你甚至进入了那个方法吗?尝试添加没有属性映射的内容存储选择器方面,然后使用“setProperty”方法单独添加内容存储名称属性。
  • 非常感谢 - 这个技巧奏效了 ------------------------------------------------ -------------------------------------------------- ----------------- nodeService.addAspect(childNodeRef,ContentModel.ASPECT_STORE_SELECTOR , null); nodeService.setProperty(childNodeRef, ContentModel.PROP_STORE_NAME, "storeB");仍然不知道我在上面的代码中做错了什么。很高兴这有效
  • 太好了,我也将其作为答案发布。

标签: alfresco alfresco-share alfresco-webscripts alfresco-enterprise


【解决方案1】:

我不明白为什么这不起作用,你确定你甚至进入了那个方法吗?尝试添加没有属性映射的内容存储选择器方面,然后使用setProperty 方法单独添加内容存储名称属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 2020-06-02
    • 1970-01-01
    • 2012-03-01
    相关资源
    最近更新 更多