AnsweredAssumed Answered

Copias mediante CMIS

Question asked by rcortesr on Feb 20, 2015
Latest reply on Mar 11, 2015 by rcortesr
Hola,

estoy realizando copias de documentos mediante cmis y aparentemente funciona todo bien, el documento copia se crea correctamente con sus aspectos y metadatos correspondientes.
Analizando los nodos copia he detectado 2 problemas:
* Para el nodo copia se genera un nuevo fichero binario en el contentstore. En cambio cuando se hace una copia desde Alfresco Share la copia comparte el mismo binario que el original.
* El nodo copia no tiene ninguna asociación con el original y este último tampoco tiene asociación con la copia. En cambio desde Alfresco Share si se mantienen asociaciones entre copia y original.

Alguien se ha encontrado con este mismo problema? el caso que más me interesa resolver es el de la duplicidad de los ficheros binarios ya que en mi aplicación utilizo mucho las copias de documentos y esto puede acarrear un crecimiento innecesario del contentstore.

Os adjunto el código de la función que estoy utilizando:


public CopyToFile copyDocuments(List<String> originNodeRefs, String targetNodeRef, VersioningState versioningState) {
       CopyToFile result = new CopyToFile();
       Map<String, Object> properties = new HashMap<>();
       List<String> listCopiesNodes = new ArrayList<String>();
       SimpleDateFormat sdf = new SimpleDateFormat(DateUtil.DDMMYYYYHHMMSS);
       String modified = "";
      
       Session session = getSession();
       ObjectId targetObj = session.createObjectId(targetNodeRef);
      
       Iterator<String> it = originNodeRefs.iterator();
      
       while (it.hasNext()) {
      String originNodeRef = (String) it.next();
      AlfrescoDocument originAlfDoc = (AlfrescoDocument) getObject(originNodeRef);

      properties.put(PropertyIds.NAME, originCmisDoc.getName());
      Iterator<ObjectType> aspects = originAlfDoc.getAspects().iterator();
      String aspectIds = "";
      while (aspects.hasNext()) {
              aspectIds += ',';
              aspectIds += aspects.next().getId();
      }
      properties.put(PropertyIds.OBJECT_TYPE_ID, originAlfDoc.getBaseTypeId().value() + aspectIds);

      
      Document targetDoc = originAlfDoc.copy(targetObj, properties, versioningState, null, null, null, session.createOperationContext());
      listCopiesNodes.add(targetDoc.getId());
      modified = sdf.format(targetDoc.getLastModificationDate().getTime());
       }
      
       result.setListCopiesNodes(listCopiesNodes);
       result.setModified(modified);
      
       return result;
}



Gracias,
RAUL

Outcomes