Tengo dos ejemplos. Espero que te sirva:
En los groovy scripts crea el siguiente paquete con los metodos que están abajo:
package com.correo
/**
* @author Daniel Saenz
*Permite obtener el correo electrónico del revisor de la solicitud inicial (hay más importaciones de las necesarias)
*@version x.0
*/
import java.util.logging.Logger
import org.bonitasoft.engine.api.IdentityAPI
import org.bonitasoft.engine.api.ProcessAPI
import org.bonitasoft.engine.bpm.flownode.ArchivedHumanTaskInstance
import org.bonitasoft.engine.bpm.flownode.ArchivedHumanTaskInstanceSearchDescriptor
import org.bonitasoft.engine.identity.UserMembershipCriterion
import org.bonitasoft.engine.identity.UserNotFoundException
import org.bonitasoft.engine.search.SearchOptionsBuilder
import org.bonitasoft.engine.search.SearchResult
import org.bonitasoft.engine.identity.UserSearchDescriptor
class Util {
private static final Logger logger = Logger.getLogger(Util.class.toString())
static String getGetEmailInitiatorProcess(ProcessAPI processAPI, IdentityAPI identityAPI, long processInstanciaId) {
try {
Long idUsuario = processAPI.getProcessInstance(processInstanciaId).getStartedBy()
String emailIniciadorDelProceso = identityAPI.getUserContactData(idUsuario, false).getEmail()
return emailIniciadorDelProceso.trim()
} catch(UserNotFoundException e) {
logger.severe("Usuario no encontrado en la organización" + e.message())
}
}
/**En el conector de entrada de la tarea automática en el destinatario lo llamas de la siguiente forma:
*import com.correo.Util
*return Util.getGetEmailInitiatorProcess(apiAccessor.getProcessAPI(), apiAccessor.getIdentityAPI(), processInstanceId)
*/
/**
* @author Daniel Saenz
*Permite obtener el correo electronico del grupo especificado en la ruta, el grupo solo debe contener 1 usuario
*Estoy tratando de hacerlo para un usuario al que le sigue la próxima actividad del proceso
*@version x.0
*/
static String getGetEmailRevisor(IdentityAPI identityAPI) {
try {
long groupId = identityAPI.getGroupByPath("/Acme/Hr").id
SearchOptionsBuilder builder = new SearchOptionsBuilder(0, 1)
builder.filter(UserSearchDescriptor.GROUP_ID, groupId)
long userId = identityAPI.searchUsers(builder.done())result.get(0).id
String emailRevisorDelProceso = identityAPI.getUserContactData(userId, false).getEmail()
return emailRevisorDelProceso.trim()
} catch(UserNotFoundException e) {
logger.severe("Usuario no encontrado en la organización" + e.message())
}
}
}
/**En el conector de entrada de la tarea automática en el destinatario lo llamas de la siguiente forma:
*import com.correo.Util
*return Util.getGetEmailRevisor(apiAccessor.getIdentityAPI())
*/
No olvide activar la dependencia java en la configuración del servidor.