Gestionar documentación obsoleta

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

Gestionar documentación obsoleta

Jump to solution

Buenas , actualmente tengo una instalación de alfresco 5.0d,  uno de los departamentos que hace uso del repositorio, necesita poder marcar documentación como obsoleta, para que el resto de personal no la vea, pero si pueda verlo el departamento que la ha catalogado de obsoleta. Sería como un historial.

Alguien puede ayudarme.

Un saludo y gracias

Max

1 Solution

Accepted Solutions
angelborroy
Alfresco Employee

Re: Gestionar documentación obsoleta

Jump to solution

Quizá podrías realizarlo de una manera más sencilla, utilizando etiquetas.

Crea en primer lugar un script para cambiar los permisos de un nodo (deshabilitar herencia y establecer permisos para los grupos del usuario actual) en la ruta Repositorio > Diccionario de Datos > Scripts > change-permissions.js

document.setInheritsPermissions(false);

var currentUserGroups = people.getContainerGroups(person);
for(var i=0;i<currentUserGroups.length;i++){
document.setPermission(
     "Coordinator",
     currentUserGroups[i].properties["cm:authorityName"]
);
}

Después establece una regla en la carpeta para que compruebe en cada cambio de documento si se ha incluido la etiqueta "OBSOLETO" y aplique el script de arriba en caso afirmativo.

Descripción:
Activa
Ejecutarse en segundo plano
Regla aplicada a las subcarpetas

Cuando:
Se actualizan elementos

Si se cumplen todos los criterios:
Está etiquetado con 'OBSOLETO'

Realizar acción
Ejecutar script 'change-permissions.js'

De esta manera, cada vez que un usuario marque un documento con la etiqueta OBSOLETO desaparecerá de la vista de todos los usuarios que no pertenezcan a sus grupos. También puedes adaptarlo para establecer el grupo del departamento o lo que necesites.

Hyland Developer Evangelist

View solution in original post

12 Replies
angelborroy
Alfresco Employee

Re: Gestionar documentación obsoleta

Jump to solution

Creo que lo más sencillo sería mover esos documentos a un sitio de archivo y establecer los permisos en ese sitio.

¿Es un requisito que los documentos se queden en su ubicación original? En ese caso, habría que desarrollar un action específico que asignase un aspecto (p. e. Obsoleto) y estableciese los permisos.

Hyland Developer Evangelist
maxson
Active Member II

Re: Gestionar documentación obsoleta

Jump to solution

Primeramente gracias Angel ,

La idea sería mantenerlo en la misma carpeta,

Lo que propones sería crear una propiedad nueva OBSOLETO, y que se cambiasen los permisos en el momento que marcamos dicha propiedad??

Tienes un ejemplo de como asociar acciones a una propiedad (p.e: cambiar permisos)

angelborroy
Alfresco Employee

Re: Gestionar documentación obsoleta

Jump to solution

Para realizarlo deberías desarrollar un modelo de contenido personalizado y establecer una regla que lanzase (por ejemplo) un script JS para el cambio de permisos. ¿Qué capacidades de desarrollo tienes?

Hyland Developer Evangelist
angelborroy
Alfresco Employee

Re: Gestionar documentación obsoleta

Jump to solution

Quizá podrías realizarlo de una manera más sencilla, utilizando etiquetas.

Crea en primer lugar un script para cambiar los permisos de un nodo (deshabilitar herencia y establecer permisos para los grupos del usuario actual) en la ruta Repositorio > Diccionario de Datos > Scripts > change-permissions.js

document.setInheritsPermissions(false);

var currentUserGroups = people.getContainerGroups(person);
for(var i=0;i<currentUserGroups.length;i++){
document.setPermission(
     "Coordinator",
     currentUserGroups[i].properties["cm:authorityName"]
);
}

Después establece una regla en la carpeta para que compruebe en cada cambio de documento si se ha incluido la etiqueta "OBSOLETO" y aplique el script de arriba en caso afirmativo.

Descripción:
Activa
Ejecutarse en segundo plano
Regla aplicada a las subcarpetas

Cuando:
Se actualizan elementos

Si se cumplen todos los criterios:
Está etiquetado con 'OBSOLETO'

Realizar acción
Ejecutar script 'change-permissions.js'

De esta manera, cada vez que un usuario marque un documento con la etiqueta OBSOLETO desaparecerá de la vista de todos los usuarios que no pertenezcan a sus grupos. También puedes adaptarlo para establecer el grupo del departamento o lo que necesites.

Hyland Developer Evangelist
maxson
Active Member II

Re: Gestionar documentación obsoleta

Jump to solution

Gracias Angel, me fue de perlas!!!!,

tan solo una cosilla, en el caso que le quite la etiqueta, que regla he de crear para darle la vista anterior??

Pongamos un caso un poco especial:

Un documento pasa a ser obsoleto, (entra en activo la regla que me has descrito anteriormente), pero al cabo de una semana, se decide que vuelve a estar disponible, así que se le quita la etiqueta.

Que regla ha de ejecutar la carpeta??

Un saludo

Gracias

Max

angelborroy
Alfresco Employee

Re: Gestionar documentación obsoleta

Jump to solution

Puedes crear una nueva regla para que realice la opción contraria.

Bastaría con crear una script que restaure la herencia de permisos.

document.setInheritsPermissions(true);
Hyland Developer Evangelist
maxson
Active Member II

Re: Gestionar documentación obsoleta

Jump to solution

Buenas Angel,

una cosilla me he dado cuenta que teniendo 2 usuarios con los mismos permisos , solo uno puede etiquetar con la etiqueta de obsoleto, si intento con el otro me sale 

Sabes debido a que es ??

gracias

angelborroy
Alfresco Employee

Re: Gestionar documentación obsoleta

Jump to solution

¿Puedes incluir la salida del fichero catalina.out?

Hyland Developer Evangelist
maxson
Active Member II

Re: Gestionar documentación obsoleta

Jump to solution

bueno por la traza de logs parece que no tengo permiso, he probado con otro usuario que tambien es colaborador y si lo crea, de hecho este mismo usuario puede añadir otra etiqueta queno sea "obsoleto":

aused by: org.alfresco.repo.security.permissions.AccessDeniedException: 00100120 Acceso denegado. Usted carece de los permisos adecuados para realizar esta operación.
at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:50)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:159)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy55.setInheritParentPermissions(Unknown Source)
at org.alfresco.repo.jscript.ScriptNode.setInheritsPermissions(ScriptNode.java:1595)
at sun.reflect.GeneratedMethodAccessor1532.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
at org.mozilla.javascript.gen.workspace___SpacesStore_fdd27936_0840_49ba_8da9_847a32c9d6ed_130._c_script_0(workspace://SpacesStore/fdd27936-0840-49ba-8da9-847a32c9d6ed:1)
at org.mozilla.javascript.gen.workspace___SpacesStore_fdd27936_0840_49ba_8da9_847a32c9d6ed_130.call(workspace://SpacesStore/fdd27936-0840-49ba-8da9-847a32c9d6ed)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
at org.mozilla.javascript.gen.workspace___SpacesStore_fdd27936_0840_49ba_8da9_847a32c9d6ed_130.call(workspace://SpacesStore/fdd27936-0840-49ba-8da9-847a32c9d6ed)
at org.mozilla.javascript.gen.workspace___SpacesStore_fdd27936_0840_49ba_8da9_847a32c9d6ed_130.exec(workspace://SpacesStore/fdd27936-0840-49ba-8da9-847a32c9d6ed)
at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:502)
at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:250)
... 95 more
Caused by: net.sf.acegisecurity.AccessDeniedException: Access is denied.
at net.sf.acegisecurity.vote.AffirmativeBased.decide(AffirmativeBased.java:86)
at net.sf.acegisecurity.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:398)
at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:77)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:46)
... 119 more