Aprovação simultânea

Boa tarde!

Gostaria de saber se tem como fazer uma aprovação simultânea em uma etapa do processo, por exemplo, se um dos aprovadores não aprovar o processo volta e só avança se tiver a aprovação dos dois aprovadores.

Olá Jose!

Voce pode usar o evento de processo calculateAgreement .

1 - No Eclipse, crie um novo evento de processo clicando em SCRIPTS >> NOVO >> SCRIPT FLUIG

2 - Selecione a opção SCRIPT EVENTO WORKFLOW
image

3 - Selecione a opção calculateAgreement , e relecione ao processo desejado.

O trecho abaixo é um exemplo de como implementar o a regra. Lembrando que é necessario parametrizar na atividade, as opções Atividade Conjunta e %Consenso

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", "marcos");
}

Jorge, bom dia!

como no meu processo preciso da aprovação de mais de um usuário/aprovador na parte do agreementData.put("currentDestUsers", "marcos"); preciso colocar esse código mais de uma vez para cada aprovador?

esse evento seria nessa etapa de aprovação que vou deixar abaixo

to achando que to errando no codigo da função

function calculateAgreement(currentState, agreementData) {
	//Implementation here
	
	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", 22);
    agreementData.put("currentDestUsers", "1275");
	
}

Olá, como você precisa que a tarefa seja concluída quando todos os responsáveis tome a decisão não é necessário usar o evento calculateAgreement. O Fluig passa por esse evento todas vez que uma tarefa em consenso é enviada, senda assim se você colocar o agreementData.put(“currentPercentage”, 100); você está atribuindo 100% ao consenso, então sempre vai passar no primeiro Usuário.

Tira o evento calculateAgreement e testa para ver se te atende!!

Abs

Olá, Eduardo fiz como informou é deu certo, porém aconteceu uma coisa, no meu processo temos dois aprovadores e percebi que a decisão do segundo aprovador está sendo a decisão final, no caso se o primeiro aprovador não aprovar mas o segundo sim o processo está dando continuidade, isso não deveria acontecer, saberia me informar o que poderia ser

José, provavelmente é por conta do mecanismo de atribuição. Como ele está configurado para o Grupo, qualquer membro do grupo que enviar a tarefa ela vai atingir o 100% requerido. Faz o seguinte, monta um mecanismo de atribuição customizado atribuindo a tarefa a todos os membros do grupo, assim todos serão responsáveis pela tarefa, fazendo assim mais sentido a parte do consenso

Vou mandar um exemplo do mecanismo:

function resolve(process,colleague){
	var userList = new java.util.ArrayList();
	var group = "CODIGO_GRUPO";

	var c1 = DatasetFactory.createConstraint('colleagueGroupPK.companyId', '1', '1', ConstraintType.MUST)
	var c2 = DatasetFactory.createConstraint('colleagueGroupPK.groupId', group, group, ConstraintType.MUST)
	
	var dsGroup = DatasetFactory.getDataset('colleagueGroup', null, new Array(c1, c2), null);

	if (dsGroup.rowsCount != 0) {
		for (var i = 0; i < dsGroup.rowsCount; i++) {
			userList.add(dsGroup.getValue(i, "colleagueGroupPK.colleagueId"));
		}
	} else {
		throw "Não foram encontradoes usuários no grupo.";
	}

	return userList;
}

Testa aí… Abs

Funcionou, agora não atinge o 100% requerido porém agora ele fica parado na etapa, não vai pra frente nem pra trás