Preciso movimentar uma atividade onde é possivel seguir o fluxo ou retornar ao solicitante, só que tenho somente 2 aprovadores.
No caso de 1 deles escolher retornar o fluxo, o fluxo é retornado imediatamente e caso escolha seguir, aguarda o segundo aprovador tomar a decisão.
Ou seja, a porcentagem de voltar para o solicitante é prioridade.
é possivel?
@Arnaldo você pode usar o evento do processo calculateAgreement para isso. Quando alguém movimentar, você verifica qual a decisão e se for não você seta 100 já na atividade de consenso e sairá para a atividade destino que você quer.
function calculateAgreement(currentState, agreementData) {
log.info("Consenso Atual: " + agreementData.get("currentPercentage"));
log.info("Atividade Destino Atual: " + agreementData.get("currentDestState"));
log.info("Usuario Destino Atual: " + agreementData.get("currentDestUsers"));
//Altera o consenso
agreementData.put("currentPercentage", 100);
agreementData.put("currentDestState", 2);
agreementData.put("currentDestUsers", "adm,teste,super");
}
Acima está a função como deve ficar.
O link está abaixo.
Link do Dev Fluig explicando melhor como utilizar
Espero ter ajudado.
Abraços
No caso de selecionar o usuario, “currentDestUsers”, preciso que volte para o solicitante… o que coloco aqui: agreementData.put(“currentDestUsers”, “???”);
Nesse parâmetro deve ser passado a matrícula do executar a atividade que você indicou ser a próxima —> agreementData.get(“currentDestState”)
Amigo, poderia mostrar em exemplo de implemantação: se usuario1 escolher movimentar para atividade 1, a atividade atual de consenso aguarda o usuario2. se o usuário2 escolhe outro caminho, o fluxo é movimentado para atividade anterior.
Esse método não funciona assim. Para aplicar, funcionaria mais ou menos assim:
- Imagina que a atividade de consenso está esperando uma aprovação de documento que está em anexo.
- O usuário 1 diz não. Como você precisa que os dois diga Sim, através do código que te mandei, automaticamente irá resolver o consenso e irá para a atividade que precisa voltar no caso da reprovação.
- Se o usuário 1 marcar Sim, a atividade irá esperar a resposta do Usuário 2.
Mas no caso tenho 2 usuário onde 1 diz sim e outro diz não(o não significa voltar para alterar solicitação). Ou seja, o não tem maior prioridade que o sim, entendeu? para seguir preciso de 2 “sim” e para retornar 1 “não” somente basta… é possivel?
Marcos, do jeito que esta, independente da opção que escolha, ele retorna para a atividade anterior, não é isso que quero. Desejo retornar somente se for 100%… esta errado
@Arnaldo a resposta do Marcos te deu o caminho das pedras para você implementar, é o evento calculate agreement que mata a charada pra você.
Como não tenho os códigos das atividades vou colocar explicações no código.
//Esse evento roda toda vez que um usuário no consenso movimentar a atividade.
function calculateAgreement(currentState, agreementData) {
var atividadeReprovacao = "123"; //aqui vai o código da atividade de reprovação
var atividadeDestino = agreementData.get("currentDestState");
if(atividadeDestino == atividadeReprovacao){
//Se a atividade escolhida for a de reprovação, FORÇA o consenso para reprovação.
//Fluig se encarrega de movimentar
agreementData.put("currentPercentage", 100);
}
}
Documentação está dentro da página sobre hAPI, mesmo link que o Marco passou. calculateAgreement
Bom dia Rafael. Eu consegui aplicar a funcionalidade com base no exemplo que você passou acima, porém a atividade destino que é executada após essa usaria a mesma funcionalidade de consenso, e acredito que por causa disso, a plataforma pede pra selecionar 1 responsável para a próxima atividade (pode haver mais de 1 usuário que deve executar a próxima etapa). Já aconteceu com você? Como eu faço pra etapa seguinte ficar para mais de 1 usuário?
Adilson, se tu ver o código do Marcos tem o agreementData.get(“currentDestUsers”), esse permite definir os usuários destinos caso mais de um. Então, tu teria que de alguma forma “calcular” seu mecanismo de atribuição da próxima atividade para carregar essa lista.
Eu tentei utilizar aplicar a lógica do mecanismo e definir os usuparios pelo agreementData.put(usuario), mas o resultado é o mesmo. Vou deixar aqui o link de um pastebin com o meu calculateAgreement → function calculateAgreement(currentState, agreementData) { if(currentState - Pastebin.com
Pra tu definir o valor da chave tu precisa identificar ela na chamada.
agreementData.put(“currentDestUsers”, “adm,teste,super”);
Pelo seu código, como está num laço de repetição, ficaria ± assim: agreementData.put(“currentDestUsers”, agreementData.get(“currentDestUsers”) + “,” + user);
Ou então tu só concatena numa variável “listaFinalUsuario” e só faz o put uma vez fora do laço de repetição.
@Adilson Honorato → como ficou o diagrama do seu processo?
Prezados, Como faço para no calculateAgreement enviar o processo para o criado do do mesmo?
Exemplo: O processo foi reprovado por 1 usuário porém eu preciso retornar para o criado do processo, não estou encontrado o termo correto para setar no agreementData.put("currentDestUsers", autor);
se Alguém puder ajudar.
Obrigado!