使内容节点成为节点的主要父节点
Make content node primary parent of node
我尝试使用 Alfresco NodeService
使内容节点 (QName cm:content
) 成为另一个内容节点的 主要父节点。 NodeService
提供方法
public ChildAssociationRef moveNode(
NodeRef nodeToMoveRef,
NodeRef newParentRef,
QName assocTypeQName,
QName assocQName)
throws InvalidNodeRefException;
假设节点 theNodeToMove
的当前主要父级是 文件夹 并且文件夹中节点的主要父级关联引用是 primaryAssocRef
.设 theTargetContentNode
为目标 content 节点。
像这样调用上面的消息
nodeService.moveNode(theNodeToMove,
theTargetContentNode,
primaryAssocRef.getTypeQName(),
primaryAssocRef.getQName());
失败。 Alfresco 报告 违反诚信规定:
The association source type is incorrect:
Source Node: workspace://SpacesStore/27a97736-222c-4bac-8610-f15ce312b074
Association: Association[ class=ClassDef[name={http://www.alfresco.org/model/content/1.0}folder], name={http://www.alfresco.org/model/content/1.0}contains, target class={http://www.alfresco.org/model/system/1.0}base, source role=null, target role=null]
Required Source Type: {http://www.alfresco.org/model/content/1.0}folder
Actual Source Type: {http://www.alfresco.org/model/content/1.0}content
是否有可能使内容节点成为现有的主要父节点内容节点?
是也不是。是,因为内容节点可以有子节点,不是,因为您不能使用 "contains" 关联。
基本上,当您创建 "parent-child" 关系时,您需要说明它的关联类型。您可以拥有任意多个,例如 rm:rendition
就是其中一种类型。
在文件夹下创建文档时使用的 "main" 关联类型是 cm:contains
,其设置方式不允许内容节点有子节点。这是通过模型定义完成的,看起来像这样:
<type name="cm:folder">
<title>Folder</title>
<parent>cm:cmobject</parent>
<archive>true</archive>
<associations>
<child-association name="cm:contains">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>sys:base</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
<duplicate>false</duplicate>
<propagateTimestamps>true</propagateTimestamps>
</child-association>
</associations>
</type>
我尝试使用 Alfresco NodeService
使内容节点 (QName cm:content
) 成为另一个内容节点的 主要父节点。 NodeService
提供方法
public ChildAssociationRef moveNode(
NodeRef nodeToMoveRef,
NodeRef newParentRef,
QName assocTypeQName,
QName assocQName)
throws InvalidNodeRefException;
假设节点 theNodeToMove
的当前主要父级是 文件夹 并且文件夹中节点的主要父级关联引用是 primaryAssocRef
.设 theTargetContentNode
为目标 content 节点。
像这样调用上面的消息
nodeService.moveNode(theNodeToMove,
theTargetContentNode,
primaryAssocRef.getTypeQName(),
primaryAssocRef.getQName());
失败。 Alfresco 报告 违反诚信规定:
The association source type is incorrect:
Source Node: workspace://SpacesStore/27a97736-222c-4bac-8610-f15ce312b074
Association: Association[ class=ClassDef[name={http://www.alfresco.org/model/content/1.0}folder], name={http://www.alfresco.org/model/content/1.0}contains, target class={http://www.alfresco.org/model/system/1.0}base, source role=null, target role=null]
Required Source Type: {http://www.alfresco.org/model/content/1.0}folder
Actual Source Type: {http://www.alfresco.org/model/content/1.0}content
是否有可能使内容节点成为现有的主要父节点内容节点?
是也不是。是,因为内容节点可以有子节点,不是,因为您不能使用 "contains" 关联。
基本上,当您创建 "parent-child" 关系时,您需要说明它的关联类型。您可以拥有任意多个,例如 rm:rendition
就是其中一种类型。
在文件夹下创建文档时使用的 "main" 关联类型是 cm:contains
,其设置方式不允许内容节点有子节点。这是通过模型定义完成的,看起来像这样:
<type name="cm:folder">
<title>Folder</title>
<parent>cm:cmobject</parent>
<archive>true</archive>
<associations>
<child-association name="cm:contains">
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>sys:base</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
<duplicate>false</duplicate>
<propagateTimestamps>true</propagateTimestamps>
</child-association>
</associations>
</type>