我在 alfresco hub 上发帖,还没有得到解决方案。
我试图将 javascript API 代码转换为将文件移动到不同内容存储('storeB')的 java API。我们在“content-store-selector-context.xml”中定义了 storeB。我们使用的是企业版的 Alfresco 5.2。
java 脚本代码如下, - 工作得很好。它的工作代码。
对于每个 (var n in node.children) { 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 更新。哪里不对了 ?
任何帮助,不胜感激
问候布里耶什