Trato de usar el aire libre NodeService
para hacer un nodo de contenido (QName cm:content
) la matriz primaria de otro nodo de contenido. NodeService
proporciona un método
public ChildAssociationRef moveNode(
NodeRef nodeToMoveRef,
NodeRef newParentRef,
QName assocTypeQName,
QName assocQName)
throws InvalidNodeRefException;
Digamos que el padre primario actual del nodo theNodeToMove
es una carpeta y la referencia primaria Assoc padre del nodo en la carpeta es primaryAssocRef
. Vamos a theTargetContentNode
ser el blanco de contenido nodo.
Llamando al mensaje anterior como esto
nodeService.moveNode(theNodeToMove,
theTargetContentNode,
primaryAssocRef.getTypeQName(),
primaryAssocRef.getQName());
fracasa. Alfresco reporst una violación de integridad :
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
¿Es incluso posible hacer un contenido de nodo de la matriz primaria de una existente nodo de contenido?
Si y no. Sí porque el nodo de contenido puede tener hijos, y no porque no se puede utilizar el "contiene" asociación.
Básicamente, cuando se crea una relación "padre-hijo", es necesario afirmar que su tipo de la asociación. Usted puede tener muchos de estos, por ejemplo, rm:rendition
es uno de estos tipos.
El tipo de asociación "principal" que se utiliza cuando se crea un documento en una carpeta es cm:contains
, y está configurado de una manera que no permite que los nodos de contenido para tener hijos. Esto se hace a través del modelo de definición, y se ve algo como esto:
<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>