使用 JAVA API 分配内容存储
Assigning content store using JAVA API
我已经在 alfresco hub 发帖,但还没有得到解决方案。
我正在尝试将 javascript API 代码转换为 java API,从而将文件移动到不同的内容存储('storeB')。我们在 - 'content-store-selector-context.xml' 中定义了 storeB。我们使用的是企业版的 Alfresco 5.2。
java 脚本代码如下,- 工作得很好。它的工作代码。
对于每个(node.children 中的 var n){
如果(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'。有什么我想念的吗?
javaAPI中有没有类似的方法。
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脚本API。根据收到的回复 Alfresco 论坛,java脚本 API 中没有保存方法。 Java API 运行 在交易中,所以最终会提交。但是我可以使用下面的 SQL -
从数据库中看到
SELECT count(*)
FROM alf_content_url
WHERE orphan_time IS NOT NULL;
以上 SQL returns 执行代码后计数相同,因此没有发生数据库更新。哪里不对了 ?
任何帮助,感激不尽
问候
布里耶什
我不明白为什么那行不通,您确定您甚至正在输入该方法吗?尝试添加没有属性映射的内容存储选择器方面,然后分别使用 setProperty
方法添加内容存储名称 属性。
我已经在 alfresco hub 发帖,但还没有得到解决方案。
我正在尝试将 javascript API 代码转换为 java API,从而将文件移动到不同的内容存储('storeB')。我们在 - 'content-store-selector-context.xml' 中定义了 storeB。我们使用的是企业版的 Alfresco 5.2。
java 脚本代码如下,- 工作得很好。它的工作代码。
对于每个(node.children 中的 var n){ 如果(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'。有什么我想念的吗?
javaAPI中有没有类似的方法。
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脚本API。根据收到的回复 Alfresco 论坛,java脚本 API 中没有保存方法。 Java API 运行 在交易中,所以最终会提交。但是我可以使用下面的 SQL -
从数据库中看到SELECT count(*)
FROM alf_content_url
WHERE orphan_time IS NOT NULL;
以上 SQL returns 执行代码后计数相同,因此没有发生数据库更新。哪里不对了 ?
任何帮助,感激不尽
问候 布里耶什
我不明白为什么那行不通,您确定您甚至正在输入该方法吗?尝试添加没有属性映射的内容存储选择器方面,然后分别使用 setProperty
方法添加内容存储名称 属性。