Como pegar o aprovador atual via Evento de Workflow

Olá, bom dia!

Gostaria de saber se existe a possibilidade de pegar e-mail que está registrado para o aprovador atual de uma atividade.

Falo isso, pois, estou personalizando um envio de e-mail através do evento BeforeStateEntry e lá eu preciso passar um array com o e-mail do aprovador da atividade. Mas nesse caso, os aprovadores costumam alterar frequentemente, inviabilizando realizar com um e-mail “chumbado”.

Essa é a melhor maneira de se customizar esse envio de e-mail ?

Olá, para pegar o usuário que finalizou a tarefa, use o dataset processTask, pegue o colleagueId, depois use no dataset colleague para pegar o e-mail… Segue um exemplo

    var task = "NUMERO DA TAREFA"
    var numSolicitacao = "NUMERO DA SOLICITACAO"

    
    /* processTask => DATA SET PARA PEGAR USUARIO QUE EXECUTOU A TASK */
    var c1 = DatasetFactory.createConstraint("choosedSequence", task, task, ConstraintType.MUST)
	var c2 = DatasetFactory.createConstraint("processTaskPK.processInstanceId", numSolicitacao, numSolicitacao, ConstraintType.MUST)

	var constraints = new Array(c1, c2)

	var ds = DatasetFactory.getDataset("processTask", null, constraints, null);


    /* colleague => DATASET PARA PEGAR O E-MAIL DO USUARIO USANDO COMO CONSTRAINT O RESULTADO DO DATASET processTask */
    c1 = DatasetFactory.createConstraint("colleaguePK.colleagueId", ds.getValue(0, 'processTaskPK.colleagueId'), ds.getValue(0, 'processTaskPK.colleagueId'), ConstraintType.MUST)

    constraints = new Array(c1)

    ds = DatasetFactory.getDataset("colleague", null, constraints, null)

    var mail = ds.getValue(0, "mail")

Acho que isso resolve. Qualquer coisa responde aí que a gente vai testando.

Abs

3 curtidas

Olá eduardo, bom dia!

Primeiramente muito obrigado pela ajuda!

Segundo:

  • Uma dúvida, nesse caso eu vou conseguir pegar o e-mail do usuário somente depois da aprovação, correto? Pois eu precisava pegar o e-mail da pessoa antes mesmo de ela aprovar

Olá Julio.

Da sim. Nesse caso você precisa pegar o usuário responsável pela tarefa .

Você vai usar a mesma consulta, porém, na hora que buscar no dataset colleague, você vai mudar o campo recuperado do dataset processTask

Onde está:

c1 = DatasetFactory.createConstraint("colleaguePK.colleagueId", ds.getValue(0, 'processTaskPK.colleagueId'), ds.getValue(0, 'processTaskPK.colleagueId'), ConstraintType.MUST)

Você coloca:

c1 = DatasetFactory.createConstraint("colleaguePK.colleagueId", ds.getValue(0, 'choosedColleagueId'), ds.getValue(0, 'choosedColleagueId'), ConstraintType.MUST)

Lembrando que se você for fazer no formulário, muda como pegar o valor do dataset, usa-se ds.values[0].choosedColleagueId.

Se eu entendi certo é isso.

Abs.

3 curtidas

Muito obrigado!

Vou testar.

1 curtida