Ejecutar Regla de envío de mail solo una vez

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

Ejecutar Regla de envío de mail solo una vez

Muy Buenas,
Mi consulta es sencilla, auque no se si será de solución sencilla también.
Mi problema es que tengo creada una regla simple en mi alfresco Share 3.4, que envía un mail de notificación a los usuarios de un sitio cuando se sube un fichero, hasta ahí todo perfecto, pero el problema es que la gran mayoría de las veces no se sube un fichero solo, sino que se seleccionan 10 o 15 y se suben simultaneamente. Esto hace que la regla creada en cada sitio envíe un mail por fichero, con lo que el usuario del sitio recibe 15 correos electrónicos.
Lo que me gustaría es que si yo selecciono 15 documentos y los subo simultanemente la regla solo se ejecutara 1 vez con lo que el usuario solo recibiría 1 correo de notificación y no se quejaría de que estoy bombardeando su correo.

No se si se os ocurre alguna manera alternativa para hacer esto o alguna modificación de Alfresco Share para que esto no ocurra.

Muchisimas gracias.
8 Replies
hyrca
Member II

Re: Ejecutar Regla de envío de mail solo una vez

Se me ocurre que podría hacer yo mismo el script de enviar un correo y ejecutarlo desde un botton o algo asi cuando quiera enviar la notificación por mail.

El script sería asi:

// create mail action
  var mail = actions.create("mail");
  mail.parameters.to =xxxxx@gmail.com;
  mail.parameters.subject = "Nuevo documento";
  mail.parameters.from = "xxxxxxxxx@gmail.com";
  mail.parameters.text = "Nuevo documento en la biblioteca";
 
  mail.execute(document);

El problema que tengo ahora es que como puedo acceder a la información mail.parametres.to  de los invitados de cada sitio…

Se os ocurre algo??  Gracias.
cristinamr
Advanced

Re: Ejecutar Regla de envío de mail solo una vez

Sí claro, debería lanzar una búsquedas a los usuarios y extraer el email…

En la API de webscript project tienes est método que te puede servir:

ScriptableHashMap<String, String> listMembers()
    lists the members of this project.

Aquí el enlace en la wiki.

Sino siempre puedes lanzar una consulta lucene para obtener el listado.

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

Re: Ejecutar Regla de envío de mail solo una vez

Bueno, esto ya lo tengo solucionado…. voy a explicar el problema de nuevo y luego doy la solución….

Mi problema es que los usuarios de mi alfresco share 3.4  me pidieron que se le notificara por mail cada vez que se colgaran documentos en su Site del Share( Cada usuario tiene un site en mi alfresco share) Yo cree una regla pero el problema llegó cuando se empezaron a subir de 15 a 20 documentos de golpe por usuario….. La gente se me quejo de que le llegaban 20 correos seguidos…….

Bueno pues busqué una solución pero no la encontré, de hecho no se si a lo mejor existe algo ya hecho en alfresco para que solo  envíe un correo aunque se suban 20 documentos, pero yo lo pregunté aqui y lo busqué y no encontré la solución, asi que decidí hacerme el siguiente script



var persona;
var email;



  var shortName= document.getSiteShortName();
  var sitio = siteService.getSite(shortName);
  var fecha = new Date();
  var dia = fecha.getDate();

     var miembrosSitio = sitio.listMembers(null,null,0);

     if(siteMembers !=null){
            for (userName in miembrosSitio ){

                   persona = people.getPerson(userName);
    
                   email = persona.properties["cm:email"];
                   global = persona.properties["cm:title"];
                   nombre = persona.properties["cm:firstName"];

      if(global!= dia) { 
       person.properties["cm:title"]=dia;
                 person.save();

                 var mail = actions.create("mail");
           
                 mail.parameters.to = email;
       mail.parameters.text = nombre + " Tiene un nuevo documento en la intranet ";
                               
                 mail.parameters.subject = " Nuevo documento en la Intranet ";
                 mail.parameters.from = "xxxxxxxxxx@gmail.com";

             
                 mail.execute(document);
                
                 }
         }
    }

Este Javascript lo que hace es que extrae a los miembros del sitio donde se acaba de subir el documento desde Share y con un For envía 1 a 1 el mail de notificación, justo antes de enviar comprueba el dia actual en el que estamos y si concide con el campo cm:title no envía el correo pq se supone que ya se ha enviado uno en el día de hoy.

Utilicé cm:title pq es una propertie del user que siempre esta en blanco y no la utilizo, ya que no se mucho de javascript y no sabía como crear una variable global donde se quedara almacenada la fecha actual.  Un pelín chapuza pero funciona perfectamente. Digamos que cada usuario tienen un campo cm:title donde almaceno el día de mes de la última notificación que se le envió.

Ahí os lo dejo, puede que le sea útil a alguien… Ciao.
jcaracuel
Member II

Re: Ejecutar Regla de envío de mail solo una vez

Buenas,

La solución que yo creo seria mas elegante pasa por crear una tarea programada en lugar de una regla. Dicha tarea buscaria por ejemplo los documentos subidos en los ultimos 15, 20,… minutos y compondría un mail con todos ellos. Si, lo se, es algo mas complicado pero desde luego es mas elegante. Ademas en lo que yo se, CristinaMR esta muy puesta en temas de cron (Tareas programadas)  Smiley Very Happy
Saludos
hyrca
Member II

Re: Ejecutar Regla de envío de mail solo una vez

Gracias 666, me lo apunto, no tengo ni idea de como va ese tema pero investigaré un poco….
cristinamr
Advanced

Re: Ejecutar Regla de envío de mail solo una vez

Hyrca,a lo que se refiere 666 es a los crons. Ojeate este tuto y ahí lo tienes explicado. La idea es que una vez al día, por ejemplo, haya una tarea que te mire las cosas nuevas y te ejecute una clase tuya propia que recopile esa info y mande el mail.

Un saludo Smiley Wink
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
hyrca
Member II

Re: Ejecutar Regla de envío de mail solo una vez

Chúlisimo el tema este, con esto se pueden hacer un montón de cosas interesantes!
cristinamr
Advanced

Re: Ejecutar Regla de envío de mail solo una vez

Jaja, claro hombre! Incluso puedes haceruna tarea que llame a un javascript o a una clase con lo que quieras hacer  :mrgreen:

Yo por ejemplo tengo en un cliente una tarea programada (cron) que una vez a la semana mira todos los documentos y si un metadato que hay han pasado 3 meses, debe mandar un mail.

Esa acción no es más que el cron bien condifugurado, tocar el model-context.xaml para meterle la frecuecia con la que quieres que se ejecute y tu clase… ¡y listo!  :mrgreen:

¡Un saludo! Smiley Wink
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc