Mecanismo de Atribuição customizado para transferencia

Boa tarde!

Encontrei um exemplo de criar mecanismo de atribuição customizado que trata se for uma transferência, segue comando abaixo.

function resolve(process,colleague){ log.info('== Mecanismo Atribuicao Usuario Resolver');

var userList = new java.util.ArrayList(); var isTransfer = getValue("WKIsTransfer"); var destino = hAPI.getCardValue("destino");

log.info(' ===WKIsTransfer === '+ isTransfer); log.info(' === destino == '+ destino);

if (isTransfer !== null) { log.info(' === isTransfer == '+ JSON.parse(isTransfer)); if (JSON.parse(isTransfer)) { log.info("==Entrou if json.parse=="); userList.add('Pool:Role:user'); } else { log.info("==Entrou else json.parse=="); userList.add('Pool:Role:resolver_ti_sustencao'); } }else { //userList.add(destino); userList.add('Pool:Role:resolver_ti_sustencao'); }

return userList;

}

porem quando faço a transferência da atividade não aparece a lista de usuário para que eu escolha a quem transferir e transfere para o usuário q estou logado.

Alguém já utiliza essa função? E poderia me ajudar

Grato

Em vez de passar userList.add(‘Pool:Role:user’) passa só o Role:user, ai o fluig vai apresentar a listagem

Boa tarde Thiago,

não aparece a seleção de usuários porque o mecânismo está retornando um usuário Pool (userList.add('Pool:Role:user')). Para o workflow isso é apenas um usuário e não a lista de usuários contidos no papel "user", e quando é retornado apenas um usuário ele não vai abrir a lista de seleção de usuários.

Se no lugar de:

userList.add('Pool:Role:user');

Você colocar:

userList.add('user1'); userList.add('user2');

ele irá apresentar a tela de seleção.

======

Se você quiser buscar os usuários de um determinado papel pra alimentar seu mecânismo, podes utilizar o Dataset "workflowColleagueRole":


var c1 = DatasetFactory.createConstraint("workflowColleagueRolePK.roleId", "user", "user", ConstraintType.MUST);
var constraints   = new Array(c1);
var sortingFields = new Array("workflowColleagueRolePK.colleagueId");

var roles = DatasetFactory.getDataset("workflowColleagueRole", null, constraints, sortingFields);

for(var i = 0; i < roles.rowsCount; i++) {
   userList.add(roles.getValue(i, "workflowColleagueRolePK.colleagueId"));
}

Vou tentar fazer isso, olhando o log, percebi que o getValue(“WKIsTransfer”) retorna true até quando não é uma transferencia

fiz o procedimento mesmo assim não deu certo, me parece que o valor do parâmetro é true mesmo quando não é transferencia

Poderia postar como ficou o código do seu mecânismo, e o log? Se for esse o caso mesmo, da variável sempre for true, seria um bug e teria que abrir um chamado