Versionamiento de Alfresco

cancel
Showing results for 
Search instead for 
Did you mean: 
edmon
Member II

Versionamiento de Alfresco

Saludos a todo alguien me podria ayudar, estoy buscando ejemplos para trabajar con versionado de documentos y metadatos en alfresco desde Java, estoy trabajando en un proyecto e hice un programa que versiona los documentos y le asigna metadatos al momentos de realizar la carga, pero lo raro es que me crea dos versiones cada vez que cargo un documento, me dices que eso es porq versiona documento y metadatos pero quiero ver con ejemplos si eso es real o algo estoy haciendo mal

Gracias por su ayuda..


Saludos
8 Replies
cristinamr
Advanced

Re: Versionamiento de Alfresco

Pues lo que comentas no es normal. Puedes compartirnos parte del código para ver cómo tratas ese versionado? Así podremos echarte un cable mejor.

Un saludo.
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
edmon
Member II

Re: Versionamiento de Alfresco

Hola Cristina, gracias te comparto el codigo espero me des tus comentarios de lo que puedo estar haciendo mal


/**
    * Guardar el contenido del archivo
    */
   public NodeRef guardarContenidoEnEspacio(final NodeRef espacioContenedor, final ActaRecepcion actaRecepcion, final Map<QName, Serializable> propiedades, final String usuario)   throws ArchivoIncorrectoException {

      final UserTransaction trx = serviceRegistry.getTransactionService().getUserTransaction();
      NodeRef fileNodeRef = null;
      
      try {
         
         trx.begin();
         final FileInfo fileInfo = fileFolderService.create(espacioContenedor, actaRecepcion.getCodigoProceso() + "_Acta_Recepción.pdf", ModeloActaRecepcion.TYPE_DOC);
         fileNodeRef = fileInfo.getNodeRef();
         setearPropiedadesProperties(fileNodeRef, actaRecepcion, propiedades, usuario);
         final ContentWriter writer = contentService.getWriter(fileNodeRef, ContentModel.PROP_CONTENT, true);

         writer.setEncoding("UTF-8");
         writer.setMimetype(MimetypeMap.MIMETYPE_PDF);

         writer.putContent(new ByteArrayInputStream(actaRecepcion.getPdf()));
         trx.commit();

      } catch (FileExistsException fe) {

         try {
            trx.rollback();
         } catch (Exception e1) {

         }         
         LOG.error("El archivo " + actaRecepcion.getPdfPath()   + "ya fue cargado anteriormente");
         
         String name = actaRecepcion.getCodigoProceso().trim() + "_Acta_Recepción.pdf";
         NodeRef node = nodeService.getChildByName(espacioContenedor, ContentModel.ASSOC_CONTAINS, name);
         
         this.versionService    = serviceRegistry.getVersionService();
         Map<String, Serializable> versionProperties = new HashMap<String, Serializable>();
         
         versionProperties.put(VersionModel.PROP_VERSION_TYPE, VersionType.MAJOR);
         versionService.createVersion(node, versionProperties); 
                  
         setearPropiedadesProperties(node, actaRecepcion, propiedades, usuario);
         ContentWriter writer = contentService.getWriter(node, ContentModel.PROP_CONTENT, true);
         writer.setEncoding("UTF-8");
         writer.setMimetype(MimetypeMap.MIMETYPE_PDF);
         writer.putContent(new ByteArrayInputStream(actaRecepcion.getPdf()));

      } catch (Exception e) {
         
         try {
            trx.rollback();
         } catch (Exception e1) {
            
         }
         throw new ArchivoIncorrectoException("Se produjo un error al cargar el archivo ");
      }
      return fileNodeRef;

   }


cristinamr
Advanced

Re: Versionamiento de Alfresco

Vale, la primera versión te la crea aquí: fileFolderService.create (api aquí)

Me puedes pasar la función setearProp.?

Un saludo.
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
edmon
Member II

Re: Versionamiento de Alfresco

Hola, FileFolferCreate solo te crea el contenido en alfresco, lo que yo hago es fijar el Modelo de contenido personalizado para el archivo y llenar los metadatos, setearPropiedades lo unico que haces es llenar los metadatos con los valores por defecto, Mi problema esta en el VersionServices, cuando el archivo ya existe lo que hago es crear una version mayor pero en ese momento es cuando, en el alfresco me aparecen 4 registros de la version y solo debe haber 2 no se que pasa,

lo probe con check in check out tambien pero este metodo no me permite subir el documento con metadatos nuevos, con este metodo si me aparecen 2 registros de version pero eso no me sirbe en mi proyecto

Necesito ver la luz,,, jeje Saludos
cristinamr
Advanced

Re: Versionamiento de Alfresco

No puedes poner el código completo? (incluido el manejo del VersionServices). Es bastante dificil intuir el problema sin ver todo el mapa.
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
edmon
Member II

Re: Versionamiento de Alfresco

La verdad ese es todo el codigo, solo le envias NodeRef de la carpeta de alfresco donde lo quieres subir y las  propiedades incluso se las pone a mano, yo le envio map por hacer mas ordenado  y la instancia de  VersionService la llamas en la linea del codigo anterior que subi


transient private VersionService versionService;

this.versionService    = serviceRegistry.getVersionService();


El codigo de Fijar propiedades setearPropiedadesProperties es este :


   
/**
*   Fijar las propiedades del Documento
*/
private void setearPropiedadesProperties(final NodeRef fileNodeRef,   final ActaRecepcion actaRecepcion, final Map<QName, Serializable> propiedades,   final String currentUserName) {

final Map<QName, Serializable> propiedadesAutor = new HashMap<QName, Serializable>();

propiedadesAutor.put(ContentModel.PROP_AUTHOR, currentUserName);
nodeService.addAspect(fileNodeRef, ContentModel.ASPECT_AUTHOR, propiedadesAutor);

final Map<QName, Serializable> propiedadesBasicas = new HashMap<QName, Serializable>();
propiedadesBasicas.put(ContentModel.PROP_TITLE,   "Titulo");

propiedadesBasicas.put(ContentModel.PROP_DESCRIPTION, "Descripcion");

nodeService.addAspect(fileNodeRef, ContentModel.ASPECT_TITLED,   propiedadesBasicas);
nodeService.addProperties(fileNodeRef, propiedades);

   }


Lo que no se es lo que pasa por dentro de Alfresco que hace que me versiones dos veces, incluso hoy hice otra prueba con una instalacion limpia de alfresco sin mi codigo, y solo le habilite el aspect versionable en true y pasa exactamente lo mismo que con mi codigo no se si es un problema de la herramienta o es cierto lo que me dijeron antes que alfresco te versiona tanto el documento como el metadato pero es bien raro.. algo mas debe pasar..

Help me……..  ayer con el cliente versionamos un documentos con 13 cambios en el documentos y en la metadata y ya te imaginaras tengo 27 registros en el Historial de Versiones y no 13 como deberia ser lo normal y no es muy amigable buscar asi que digamos y lo que se viene proximamente es migrar de version………. NOOOOOOOOOO

jeje Saludos…

Ayuda Ayuda,
edmon
Member II

Re: Versionamiento de Alfresco

Comunidad algun comentario sobre el versionamiento de alfresco, alguien que me de una idea de que esta pasando o que se esta haciendo mal….

Gracias
edmon
Member II

Re: Versionamiento de Alfresco

Estuve revisando información del tema de versionamiento, y efectivamente ya es tema de funcionamiento de alfresco.

Bueno el tema es el siguiente alfresco me crea una version cuando se cambia el contenido y una version cuando se cambia los metadatos, cuando ejecuto el codigo para crear una nueva version modifico tanto el documento como los metadatos entonces siempres se me crear dos versiones por el "cm: autoVersionOnUpdateProps", el resultado es que tengo en el historial de versiones el documento nuevo con los metadatos anteriores y el documento nuevo con los metadatos nuevos..

El primero no me sirbe de nada solo deberia tener el documento nuevo con los metadatos nuevos…

Mi pregunta es tambien me duplica el documento en el repositorio o solo me agrega una referencia??????

Alguien que me de alguna idea, de por si el alfresco no me va ayudar asi que toca buscar otra manera.. :-(

Saludos