posible bug y duda en notificaciones

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

posible bug y duda en notificaciones

hola:
apenas llevo unos días en esto pero hay una cosa que estoy observando con las notificaciones que creo que no está bien.
He creado varias reglas de notificación en un espacio, una al añadir archivo (inbound), otra al actualizarlo(update) y otra al borrarlo (outbound)
- Cuando elimino un archivo me llega el mail 2 veces, sin embargo si lo añado o actualizo solo me llega una vez. Esto me pasa con Labs3. No veo normal que suceda esto. ¿os pasa también? Estoy pensando en reportar el bug pero antes quería que los qu etenéis más experiencia me dijeráis si es normal.
Aprovecho para comentaros otras cosillas de notificaciones:
- Cuando añado un archivo me llega un mail de la regla de añadir y otro de la de actualizar. Imagino que se active la de actualizar al añadir tiene cierto sentido, no obstante ¿sabéis como podría hacer que la regla de actualizar no se activase cuando se añade el archivo por primera vez?
- sobre la de actualizar, aparte de en el caso anterior, se ejecuta cuando hago un update, sin embargo no cuando hago un cambio de versión. Es decir si edito offline el documento,se genera la working copy y luego hago el check in y se cambia el nº de versión, en este caso no salta la regla de update.
¿hay alguna forma de que llegue una notificacióncuando se cambia la versión de un archivo de esta manera?

muchas gracias!
4 Replies
ajv
Member II

Re: posible bug y duda en notificaciones

Hola Jaime,

El comportamiento de Alfresco en ese sentido es "normal".
Te explico: Todo el funcionamiento de las reglas de contenido están fundamentadas en los comportamientos (behaviors). Consiste en especificar un evento y, cuando ocurra, se ejecutará una acción personalizada. Para ello, cada vez que se crea una regla, se registra un comportamiento. Ese comportamiento admite diferentes frecuencias de ocurrencia: Que se dispare con cada evento, que se dispare únicamente al realizar el commit del evento o que se lance en el primer momento en que se detecta el evento.
He revisado el código de Alfresco y los comportamientos que se registran internamente por cada regla son de tipo EVERY_EVENT (con cada evento)…Eso significa que si durante una actualización de un nodo se dan varios puntos de enlace con el comportamiento, ejecutará la regla todas esas veces (que es lo que está pasando).

Te pongo un fragmento de código por si te aclara mejor los conceptos:
En la clase org.alfresco.repo.rule.ruletrigger.OnPropertyUpdateRuleTrigger se registra el comportamiento para las actualizaciones:
public void registerRuleTrigger()
    {
        // Bind behaviour
        this.policyComponent.bindClassBehaviour(
                QName.createQName(NamespaceService.ALFRESCO_URI, "onUpdateProperties"),
                this,
                new JavaBehaviour(this, "onUpdateProperties"));
    }
El problema reside en la forma en que se crea el JavaBehaviour…El constructor de esta clase admite un tercer parámetro para indicarle la frecuencia de notificación del evento:
JavaBehaviour(Object instance, String method, NotificationFrequency frequency)
y los valores que admite son: EVERY_EVENT, FIRST_EVENT, TRANSACTION_COMMIT. Por defecto, el valor de la frecuencia es EVERY_EVENT.

Por tanto, explicación de por qué ocurre esto la hay  Smiley Very Happy
Y entiendo que no es muy correcto (yo, por ejemplo, daría opción desde el RuleService o similar para poder establecer la frecuencia de notificación de un comportamiento…).
Las veces que he tenido que implementar un comportamiento, sí que tengo en cuenta estos detalles para que los "triggers" se disparen las veces que me interesa.
Para las reglas que vienen predefinidas a través de Alfresco, veo difícil la modificación (no se me ocurre nada, salvo modificar las clases pertinentes).
Bueno, me sabe mal no conocer una solución directa y espero que te haya por lo menos ayudado a conocer los motivos.  Smiley Tongue

Un truco que quizás te viene bien para "evitar" notificaciones extra es que al crear un contenido nuevo, aparece un check en algún momento del asistente de creación que es para "Modificar las propiedades una vez creado" si lo dejas marcado, además de la creación, realizará una actualización del contenido…por lo que tal como lo tienes, se enviará una notificación.

Saludos!!
jaime_martin
Member II

Re: posible bug y duda en notificaciones

Muchas gracias!! Realmente es curioso el tema, al menos ya entiendo el porque pasa esto. Me alegro de haber preguntado y no haber rellenado una JIRa innecesaria.
Por cierto, ¿dónde podría encontrar algo más de info sobre los behaviours? He buscado en la wiki y no encuentro ningún artículo específico del tema.
muchas gracias!!
ajv
Member II

Re: posible bug y duda en notificaciones

Buenas!!

Aquí puedes encontrar un documento pdf sobre comportamientos (aunque en inglés Smiley Very Happy).
http://ecmarchitect.com/images/articles/alfresco-behavior/behavior-article.pdf

Que vaya bien!!
jaime_martin
Member II

Re: posible bug y duda en notificaciones

muchas gracias por el enlace!