Procestask - envio de emails para quem foi responsável de atividades

Eu estou tentando criar uma lista de e-mail com base nos usuários que participaram ou foram responsáveis por atividade dentro de um fluxo. O problema é que muitas vezes alguns usuários podem ser responsáveis por outras atividades ficando assim duplicado. Não consegui encontrar um método que evite a duplicidade no array de e-mails, o Fluig não aceitou nenhum método que coloquei para restringir duplicidade no array. Alguém tem alguma dica para isso? Segue abaixo como estou montando o datasert para retornar os responsáveis das atividade do processo.


 //Monta lista de destinatários
      //Constraints para filtrar usuários do processo para enviar e-mail
        var cDest1 = DatasetFactory.createConstraint('processTaskPK.processInstanceId', numSolicitacao, numSolicitacao, ConstraintType.MUST);
        var cDest2 = DatasetFactory.createConstraint('status', StatusTask, StatusTask, ConstraintType.MUST);

        //Constraints 
        var constraints = new Array(cDest1,cDest2);

        // Filtrar somente essas colunas
        var filterFields = new Array("choosedColleagueId");

        //Ordenar pela matrícula
        var sortingFields = new Array("choosedColleagueId");

        //Chamada do dataset com filtros
        var DestMail = DatasetFactory.getDataset("processTask", filterFields, constraints, sortingFields);
        log.info("TPL_F005_INTERNO 9");

        //Restringir duplicados


        var destinatarios = new java.util.ArrayList();

Já useu filter, unique nenhum funciona

Italo, você carregar seu array com base num objeto ou jogar num java.util.Set antes.

O Set é uma estrutura que não permite duplicidade ela trata sozinha quando tu faz o add, ou então pode usar o um objeto javascript simples, pois, as propriedades do objeto não podem ser repetidas.

Ex.:


var unico = {};

var tst = ['rafael','italo','marcelo','ryu','ken','rafael','rafael','italo'];

for (var i in tst){
    log.info(tst + " - " + i + " - " + tst[i]);
    unico[tst[i]] = '';
}

for (var i in unico){
    log.info(unico + " - " + i + 
" - " + unico[i]);
}

Abaixo um print de como ficaria o resultado do testes acima. loginfo.PNG

Como podes ver, mesmo rafael e italo sendo repeditos no array original, no objeto só aparecem uma vez ao você interagir.

Espero ter ajudado.

....

Editado codigo para evitar confusão

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Rafael, voce testou no Fluig, pois acredito que o fluig não aceite o unique.

Ele dar esse erro Can’t find method com.datasul.technology.webdesk. ele não reconhece esse método unique no Fluig

Desculpe, eu fiz no browser pela praticidade, console.log não existe no lado servidor… pode remover ou colocar o log.info. Esse unique ali é só uma variável, podes dar o nome que quiser.

isso dentro do Fluig não funciona no evento de processo. Cant find method com.datasul.technology.webdesk.customization.ScriptingLog.info(object,string,string). (#126)

Eu editei o código. Logo.info tens que concatenar a Strong…