Inserir linhas em uma tabela pai x filho com base em outro processo
Imagine uma situação em que você precisa iniciar uma solicitação via hAPI.startProcess(), ou seja, um sub-processo não atende à demanda e você precisa enviar valores de uma tabela do processo A para um filho da solicitação do processo B. Como fazer isso no Fluig?Vou descrever um pouco melhor a situação com um exemplo prático.
Seu fluxo tem uma atividade do tipo serviço em que o processo A inicia uma nova solicitação do processo B. O processo A possui uma tabela pai e filho, sendo necessário inserir as linhas dessa tabela do processo A no pai x filho do processo B.
Claro que um sub-processo resolveria essa situação, porém, um sub-processo não atende à demanda, pois a solicitação inicial fica travada enquanto o sub-processo não é finalizado. Por essa razão, a nova solicitação é iniciada via startProcess no script da solicitação. Então, como obter os dados da tabela pai e filho da solicitação A se essa tabela é dinâmica e não há como saber previamente os IDs dos campos que serão gerados?
A resposta é simples e pode ser seguida passo a passo:
- Fazer uma busca nos campos do pai e filho utilizando o método getChildrenIndexes();
- Criar um novo HashMap;
- Atribuir novos valores ao HashMap recém-criado com base na busca dos dados do formulário da solicitação do processo A;
- Iniciar o processo B com os valores desejados do processo A.
function afterTaskSave(colleagueId, nextSequenceId, userList) {
/** Pai e filho de base */
var trucks = hAPI.getChildrenIndexes("table_trucks")
var formValues = new java.util.HashMap();
/** Aqui estamos obtendo os dados do pai e filho do processo principal e salvando na mesma posição do pai e filho do processo que será aberto */
for (var index = 0; index < trucks.length; index++) {
formValues.put('vl_plate___' + trucks[index], tb_trucks_children.get('vl_plate___' + trucks[index]));
formValues.put('nm_driver___' + trucks[index], tb_trucks_children.get('nm_driver___' + trucks[index]));
}
/** Atribuido o mesmo usuário que esta movendo a solicitação para iniciar a nova*/
var users = new java.util.ArrayList();
users.add(colleagueId);
/** Verifique na documentação os parametros utilizados no startProcess */
var idSubProcess = hAPI.startProcess(processId, targetTask, users, obs, completeTask, formValues, managerMode);
/** Gravando o ID da nova instância do processo B em um campo do processo A */
hAPI.setCardValue("idProcessB", idSubProcess);
}
Assinar:
Postar comentários
(
Atom
)

Nenhum comentário :
Postar um comentário