Mandar un Email al ejecutante de una tarea

1
0
-1

Hola he probado este código (bpm camp) pero solo me envia el correo del usuario iniciador "walter.bates" iniciador
lo que yo quiero es que si tengo una tarea A en la cual pueden acceder dos usuarios (pepito y juan)
cuando ellos ingresen su cotizacion hay otra tarea que evalúa esa cotización "Tarea B" al darle rechazar envié el correo ( es decir si se logueo pepito le envie al correo a pepito que se rechazo su cotizacion y si el que se logueo es juan lo envia a su correo el rechazo .
alguien me puede ayudar???
import org.bonitasoft.engine.api.IdentityAPI;
import org.bonitasoft.engine.api.ProcessAPI;
import org.bonitasoft.engine.bpm.process.ProcessInstance;
import org.bonitasoft.engine.identity.ContactData;
// Get APIs
ProcessAPI processAPI = apiAccessor.getProcessAPI();
IdentityAPI identityAPI = apiAccessor.getIdentityAPI();
// Get process initiator
ProcessInstance processInstance = processAPI.getProcessInstance(processInstanceId);
long initiatorUserId = processInstance.getStartedBy();
// Get email from process initiator
ContactData contactData = identityAPI.getUserContactData(initiatorUserId, false);
return contactData.getEmail();

1 answer

1
0
-1

Hola Katy,

Primero quiero informarte que cambié el título de la pregunta para que sea más comprensible para otros miembros de la Comunidad.

Si entiendo bien lo que quieras hacer, creo que el objetivo no es que se mande un correo electrónico al iniciador del proceso sino al usuario quien realizó la tarea "tarea A".

Para poder hacerlo, debes reemplazar el código del script Groovy con el siguiente código :

// Get process initiator

ProcessInstance processInstance = processAPI.getProcessInstance(processInstanceId);
long initiatorUserId = processInstance.getStartedBy();
by

import org.bonitasoft.engine.bpm.flownode.ArchivedHumanTaskInstanceSearchDescriptor
import org.bonitasoft.engine.search.SearchOptionsBuilder

def searchOptions = (new SearchOptionsBuilder(0, 1)).filter(ArchivedHumanTaskInstanceSearchDescriptor.PARENT_PROCESS_INSTANCE_ID, processInstanceId).and()
.filter(ArchivedHumanTaskInstanceSearchDescriptor.NAME, 'tarea A').and()
.filter(ArchivedHumanTaskInstanceSearchDescriptor.TERMINAL, true)
.done()

long userId = apiAccessor.processAPI.searchArchivedHumanTasks(searchOptions).getResult().first().executedBy

Comments

Submitted by morongarciakaty... on Thu, 05/23/2019 - 20:02

hola muchas gracias por tu ayuda si he logrado hacerlo pero cuando lo ejecuto en otra tarea no funciona es decir tengo una tarea A y una Tarea B . cuando lo ejecuto en A no hay problema pero en mi tarea B lo que quiero es que le avise que la tarea A ya se realizo y que tiene una tarea pendiente . es decir que envie un correo al encargado de la tarea B

Submitted by delphine.coille on Fri, 05/24/2019 - 11:37

Hola, acabo de cambiar tu respuesta por un comentario porque es más fácil hacer la distincción entre respuestas, soluciones y información adicional. Donde has colocado el conector de la tarea B? Hay que colocar el conector en la entrada de la tarea B si hay que enviar un correo electrónico a la persona que tiene que hacer la tarea B.
Si se quiere hacer en todas las tareas, es posible hacer un copiar-pegar del conector configurado o guardar la configuración de un conector y reusarlo.

Submitted by morongarciakaty... on Fri, 06/07/2019 - 16:07

si lo he colocado en la entrada pero no me funciona . mi tarea b lo realiza un rol llamado gestor 2 y dentro de este rol hay tres usuarios como hago para que envie una alerta a cualquiera de ellos

Notifications