uner-digital / DSpace

UNER-Digital es el repositorio institucional de la Universidad Nacional de Entre Ríos (UNER - http://www.uner.edu.ar/). El desarrollo está basado en DSpace y customizado por el equipo de desarrollo de SEDICI.
Other
1 stars 1 forks source link

No funciona la configuración jerárquica de workflow para colecciones en subcomunidades #97

Closed FacundoAdorno closed 7 years ago

FacundoAdorno commented 7 years ago

Luego de la etapa de muestra del servidor en el curso de febrero, detectamos que el mapeo para colecciones en colecciones de subcomunidades bajo una comunidad padre (Facultad) no está funcionando correctamente, es decir, cuando se realiza el envío se activa el workflow de comunidad dependiente.

CASO DONDE FUNCIONA: uner_wfw_exito

CASO DONDE FALLA: uner_wfw_error

Puede ser que este problema este pasando porque esté mal puesto el atributo 'handle' en los mapeos de workflow.xml, o algun error en el código introducido en #4...

FacundoAdorno commented 7 years ago

Luego de revisar la propuesa de @nesovi en DS-1519, me di cuenta que el nombre del atributo 'collection' no tiene nada que ver con el problema: siempre se mapeará de forma jerárquica cuando se busque cual workflow corresponde a un item enviado.

Poner los siguiente:

 <!-- Mapeo temporal para Comunidad de Capacitación de UNER -->
 <name-map collection="123456789/41" workflow="comm_workflow_independiente"/>

es lo mismo que poner:

 <!-- Mapeo temporal para Comunidad de Capacitación de UNER -->
 <name-map handle="123456789/41" workflow="comm_workflow_independiente"/>

Ésto me llevó a inspeccionar el código introducido en 59a16816c50cbd33cea5157a983f116119a02925. En particular, este código está bien, simplemente parece que el error es que, desde el refactoring de based-service-api en 54222f3c1d3c63bd03af263703a950e9cfad7439, el método getCommunities() de una Collection cambió y solo retorno una única comunidad: la comunidad padre. Sin embargo, antes retornaba todas las comunidades ancestras.

arieljlira commented 7 years ago

Efectivamente en DSpace 5.x el método getCommunities retornaba la cadena de padres hacia arriba de una collection [https://github.com/DSpace/DSpace/blob/dspace-5_x/dspace-api/src/main/java/org/dspace/content/Collection.java#L1431]

Luego en DSpace 6 (https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace-api/src/main/java/org/dspace/content/Collection.java#L264) cambiaron el método para que retorne sólo los padres directos de una collection (que en realidad es 1).

En el PR https://github.com/DSpace/DSpace/pull/1319 del ticket DS-2996, cambiaron las invocaciones al community.getCommunities y las reemplazaron por communityService.getAllParents(context, col);.

Comentario del cambio de KevinVdV:

The collection.getCommunities() method only retrieves direct parents, the old method used to retrieve them all. I create a new service method on community to retrieve all parent communities from a collection. All places which use this method & didn't just retrieve the first one have been altered.

Conclusión: es un problema que sólo nos afecta a nosotros ya que el PR https://github.com/DSpace/DSpace/pull/205 nunca fue aceptado. Cambiando por communityService.getAllParents(context, col); debería resolver el problema.

Tiickets relacionados

FacundoAdorno commented 7 years ago

Ahora funciona correctamente el mapeo jerárquico presentado más arriba para las comunidades independientes y dependientes.