É possivel Enviar E-mail para um grupo?

Tenho criado, alguns templates de e-mails personalizados que já estão funcionando corretamente seus disparos. O que preciso saber é, se é possível enviar o email disparado do Workflow para um grupo de usuários ao invés de selecionar um por um?

Evento do E-mail


function afterTaskComplete(colleagueId,nextSequenceId,userList){

    var atividade = getValue("WKNumState");    
    var WKUser = getValue("WKUser");
    var nome = hAPI.getCardValue("nome");
    var nofiticaAdmissao = hAPI.getCardValue("nofiticaAdmissao");

        if (atividade == 38) {
            try {
                // Monta mapa com parametros do template
                var parametros = new java.util.HashMap();            


                parametros.put("nome", nome);
                parametros.put("nofiticaAdmissao", nofiticaAdmissao);





                // Este parametro e obrigatorio e representa o assunto do e-mail
                parametros.put("subject", "Confirmação de Admissão");

                // Monta lista de destinatarios
                var destinatarios = new java.util.ArrayList();
                destinatarios.add(nofiticaAdmissao);


                // Envia e-mail
                notifier.notify("admin", "template_admissao", parametros, destinatarios,"text/html");

            } catch (e) {
                log.info(e);
            }
        }    
}

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

Não, o que é possível seria buscar os usuários por dataset e separá-los por vírgula e enviar no campo destinatário. É uma adição interessante para se sugerir como melhoria, só deve tomar cuidado pro seu servidor SMTP não acabar incluindo o remetente no blacklist devido a muitos e-mails repetidos.

Por agora, Separa-los por virgula me ajudaria. mas como eu faria isso dentro de um campo Select ? Pois já estou passando os usuários por select, mas como não tem essa separação por virgula, acaba dando erro no log.

Karina, basta transformar o seu separador em virgula, ou então se for um grupo do fluig, fazer uma busca no Dataset colleagueGroup e passar os ids dos destinatários.

Boa tarde,

O que você pode fazer é incluir um campo SELECT que exiba os grupos cadastrados no Fluig e no seu evento buscar os usuários do Grupo e enviar o email para os mesmos.

Exemplo:

Formulário:


<input id="part" class="hide" name="cod_grp">
<input type="zoom" id="grupos" class="form-control" name="grupos"
    data-zoom="{'displayKey':'groupDescription',
    'datasetId':'group','filterValues':'groupPK.companyId,1',
    'fields':[{'field':'groupDescription','label':'Nome do Grupo','search':'true'
    },{'field':'groupId',
        'label':'Código'}] }">


<script type="text/javascript">
    function setSelectedZoomItem(selectedItem) {

        if (selectedItem.inputName == "grupos") {
            eval('$("#cod_grp").val(selectedItem.groupId)');
        }

    }
</script>

Evento:


var field    = hAPI.getCardValue("cod_grp");
// Consulta o Dataset para ver quem sao os usuarios deste grupo
var grpCode  = DatasetFactory.createConstraint("colleagueGroupPK.groupId", field, field, ConstraintType.MUST);
var chavesDS = new Array( grpCode );
var dsUsrGrp = DatasetFactory.getDataset("colleagueGroup", null, chavesDS, null);

for(var j = 0; j < dsUsrGrp.rowsCount; j++) {
    destinatarios.add( dsUsrGrp.getValue(j, "colleagueGroupPK.colleagueId") );
    log.info("[AVISO] Adicionou usuario: " + dsUsrGrp.getValue(j, "colleagueGroupPK.colleagueId"));
}


EDIT:

Para permitir múltiplos:

Formulário:


<div class="table-responsive col-md-6">
    <table tablename="tbGrupo" id="tbGrupo" noaddbutton="true" nodeletebutton="true" colspan="1"
        class="table table-condensed table-striped table-responsive">
        <thead>
            <tr>
                <th>Grupo</th>
                <th>
                    <span class="fluigicon fluigicon-plus-sign fluigicon-md" onclick="wdkAddChild('tbGrupo');"></span>
                </th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <input id="part" class="hide" name="cod_grp">
                    <input type="zoom" id="grupos" class="form-control" name="grupos"
                    data-zoom="{'displayKey':'groupDescription',
                    'datasetId':'group','filterValues':'groupPK.companyId,1',
                    'fields':[{'field':'groupDescription','label':'Nome do Grupo','search':'true'
                    },{'field':'groupId',
                        'label':'Código'}] }">
                </td>
                <td>
                    <span class="fluigicon fluigicon-minus-sign fluigicon-md" onclick="fnWdkRemoveChild(this);"></span>
                </td>
            </tr>
        </tbody>
    </table>
</div>
<script>
function setSelectedZoomItem(selectedItem) {

    field = selectedItem.inputName;
    campo = field.substr(0,6);

    if (campo == "grupos") {
        aux = field.substr(6, field.length);
        eval('$("#cod_grp' + aux + '").val(selectedItem.groupId)');
    }

</script>

Evento:


// Como nao tem acesso direto ao form.getChildrenIndexes, tente usar essa 'medida de contorno'
for (var i = 1; i <= 99; i++) {
    try {
        var field = hAPI.getCardValue("cod_grp___" + i);                 // pega o codigo do grupo
        if ( (field!= "") && (field != null) && (field!="undefined")  ){

            // Consulta o Dataset para ver quem sao os usuarios deste grupo
            var grpCode  = DatasetFactory.createConstraint("colleagueGroupPK.groupId", field, field, ConstraintType.MUST);
            var chavesDS = new Array( grpCode );
            var dsUsrGrp = DatasetFactory.getDataset("colleagueGroup", null, chavesDS, null);

            for(var j = 0; j < dsUsrGrp.rowsCount; j++) {
                destinatarios.add( dsUsrGrp.getValue(j, "colleagueGroupPK.colleagueId") );
                log.info("[AVISOS] Adicionou usuario: " + dsUsrGrp.getValue(j, "colleagueGroupPK.colleagueId"));
            }


        } else{ continue; }
    }catch(err) {
        // Se nao conseguiu pegar o valor, vai pro proximo
        continue;
    }
}

Qualquer dúvida, comenta aqui..

Boa sorte.

Legal. Primeira Dúvida: Ele só deixa eu Adicionar 1 grupo. como faço para Adicionar mais de um Grupo?
E eu não entendi quando vc diz pra eu colocar no “Evento”, seria no evento que faz o envio do E-mail ou no DisplayFields ?

Karina, é o evento eu que você faz o envio do email (no seu caso o afterTaskComplete). Para permitir múltiplos registros você precisaria incluir o campo de grupo em Pai X Filho e então varrer a tabela e pegar os códigos dos grupos.

Ok. Vou tentar aqui. Obrigada!!

@Luiz Postal, tentei com mais de um grupo, da forma que você atualizou na sua resposta.
Quando coloco apenas um grupo, ele só envia para um usuário do grupo.
Quando incluo Dois Grupos, No primeiro Grupo, ele envia APENAS para um usuário do grupo. No segundo Grupo, ele não envia para nenhum usuário.

@Karina, consegue me mandar o console pra eu ver o que está ocorrendo? Tenho um script similar a esse e funciona corretamente.

vou incluir na pergunta como anexo.

@luiz, inclui o anexo, mas não sei se você consegue ver. caso não, me avise para eu te enviar de outra forma. Obrigada pela força.

@Karina, não aparece o anexo. Se puder, me manda por e-mail: luiz.postal@totvs.com.br

Luiz, Algum retorno ?

@Karina, não recebi seu e-mail. Tente enviar os arquivos dentro de um .RAR pois alguns servidores de e-mail bloqueiam arquivos .JS