Boa tarde,
Estou tentando enviar um email personalizado para um grupo de pessoas porem quando faço a consulta do dataset e passo para o destinatário em um for, ele envia apenas para o primeiro usuário do grupo e da erro. Como posso fazer?
Segue fonte abaixo:
function afterProcessCreate(processId) {
try { // Monta mapa com parâmetros do template
var email = hAPI.getCardValue('email_solic');
var idProces = parseInt(getValue("WKNumProces"));
var endFluig = 'https://embr...';
var parametros = new java.util.HashMap();
parametros.put("Link" , endFluig + idProces);
parametros.put("NTicket" , getValue("WKNumProces"));
parametros.put("Solicitante" , hAPI.getCardValue("nome_solic"));
parametros.put("Departamento" , hAPI.getCardValue("dept_solic"));
parametros.put("Modulo" , hAPI.getCardValue("mod_solic"));
parametros.put("Descricao" , hAPI.getCardValue("desc_solic"));
parametros.put("subject", "SOLICITAÇÃO FLUIG N° " + getValue("WKNumProces")); // Monta lista de destinatários
var destinatarios = new java.util.ArrayList();
destinatarios.add(email);
var c1 = DatasetFactory.createConstraint("colleagueGroup.groupId", "HelpDesk", "HelpDesk", ConstraintType.MUST);
var constraints = new Array(c1);
var campo = new Array("colleagueGroupPK.colleagueId", "colleagueGroupPK.groupId")
var gtr = DatasetFactory.getDataset("colleagueGroup", campo, constraints, null);
for(var i = 0; i < gtr.rowsCount; i++) {
destinatarios.add( gtr.getValue(i, "colleagueGroupPK.colleagueId") );
}
notifier.notify("admin", "tpl_hdinicio", parametros, destinatarios, "text/html");
} catch (e) {
log.info(e);
}
Na documentação diz que pode passar a matrícula (colleagueId), mas eu sempre passei direto o e-mail e nunca tive problemas. Tanto que o seu primeiro destinatário você colocou o e-mail e conseguiu enviar corretamente né.
Sim, consegui enviar e nesse fonte eu não sei o por que ele envia para a primeira pessoa do grupo e para de enviar, ele da erro e apresenta o seguinte erro NOK - Wrapped java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2 (#30)
Boa tarde,
Resolvi com a ajuda que o Bruno Gasparetto deu, eu fiz o DS voltar o e-mail em vez da matricula e fico como esta abaixo.
function afterProcessCreate(processId) {
try { // Monta mapa com parâmetros do template
var email = hAPI.getCardValue('email_solic');
var idProces = parseInt(getValue("WKNumProces"));
var endFluig = 'https://embr...';
var parametros = new java.util.HashMap();
parametros.put("Link" , endFluig + idProces);
parametros.put("NTicket" , getValue("WKNumProces"));
parametros.put("Solicitante" , hAPI.getCardValue("nome_solic"));
parametros.put("Departamento" , hAPI.getCardValue("dept_solic"));
parametros.put("Modulo" , hAPI.getCardValue("mod_solic"));
parametros.put("Descricao" , hAPI.getCardValue("desc_solic"));
parametros.put("subject", "SOLICITAÇÃO FLUIG N° " + getValue("WKNumProces")); // Monta lista de destinatários
var destinatarios = new java.util.ArrayList();
var dsColleague = DatasetFactory.getDataset("colleague", null, null, null);
for (i = 0; i < dsColleague.rowsCount; i++) {
var dsColCoID = dsColleague.getValue(i, "colleaguePK.colleagueId");
var dsColMail = dsColleague.getValue(i, "mail");
var c1 = DatasetFactory.createConstraint("colleagueGroupPK.groupId",
"HelpDesk", "HelpDesk", ConstraintType.MUST);
var constrains1 = new Array(c1);
var dsColleGroup1 = DatasetFactory.getDataset("colleagueGroup", null,constrains1, null)
for (j = 0; j < dsColleGroup1.rowsCount; j++) {
var dsCGid1 = dsColleGroup1.getValue(j, "colleagueGroupPK.colleagueId");
if (dsColCoID == dsCGid1) {
destinatarios.add(dsColMail);
}
}
}
notifier.notify("admin", "tpl_hdinicio", parametros, destinatarios, "text/html");
} catch (e) {
log.info(e);
}