我目前正在使用openCMIS在Alfresco中创建一个节点。我想指定新制作的内容使用特定的nodeRef id。例如:
工作区:// SpacesStore / 6e619192-61c0-46fc-85c1-81badbb9b93e
目前我有这个CMIS代码:
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
properties.put(PropertyIds.NAME, "TestFolder");
properties.put(PropertyIds.OBJECT_ID, "workspace://SpacesStore/6e619192-61c0-46fc-85c1-81badbb9b93e");
folder.createFolder(properties);
我希望新创建的文件夹名称“TestFolder”具有与指定的OBJECT_ID匹配的nodeRef。但是,Alfresco仍会生成不同的唯一nodeRef。
在Alfresco中创建内容时,有没有办法指定nodeRef?
答案 0 :(得分:1)
不,无法设置自己的节点参考。这是一个实现细节,从理论上讲,你不应该关心。
但是,您可能有正当理由(例如,从现有存储库导入数据?)。如果由于某种原因需要保留此节点引用,请考虑将此noderef存储为单独的元数据属性。
您可能想要提交一份单独的问题,详细解释您为什么要这样做。
答案 1 :(得分:1)
我首先要说这-由于某种原因,没有公共API!您真的不应该在正常使用时这样做……
如果您要使用已知的节点引用创建节点,则应创建一个ACP文件并对其进行引导。这就是Alfresco如何在{{1 }}和noderef rendering_actions_space
。有关如何操作,请参见here in the Alfresco source code on github
如果您确实确实需要使用特定的noderef创建一个节点(通常不需要),则可以将/app:company_home/app:dictionary/app:rendering_actions
属性传递给workspace://SpacesStore/rendering_actions_space
,作为在创建时的一部分属性。节点,并在可能的情况下用于设置新noderef的ID部分。一般来说,您不应该这样做!
答案 2 :(得分:0)
实际上,您可以编写Java类并在创建节点时为节点提供属性。如果提供node-uuid,将使用它创建node,而NodeRef基本上由storeref和node-uuid组成。