Reiniciando Workflows via Script

Quantas vezes nos deparamos com cenários de erros que o workflow se perde e não podemos criar um novo registro? Ou para gerar um novo registro as vezes é algo muito demorado. Fica aqui a dica sobre como reiniciar um workflow via background script.

Para reiniciar o workflow, uma linha de comando:

new Workflow().restartWorkflow(grCR);

Aonde grCR é o GlideRecord do registro que você quer reiniciar.

Uma coisa que precisamos ter atenção é, caso um workflow precise ser reiniciado, se existem aprovações na execução atual. Quando um workflow é reiniciado, é importante que estas aprovações sejam desconsideradas (canceladas) para que durante a nova execução não gerem dúvidas ou até mesmo afete a execução do workflow.

Para cancelar as aprovações de um workflow, use:

new WorkflowApprovalUtils().cancelAll(grCR, 'Sua mensagem aqui'); 

Aonde grCR é o registro referência no qual as aprovações estão apontando.

Ao cancelar as aprovações, é possível incluir uma mensagem customizada explicando o motivo do cancelamento (o que é bastante útil!)

Segue abaixo um exemplo completo de um registro de Change Request sendo reiniciado e tendo suas aprovações canceladas:

comment = 'This CR approval was cancelled due to issues on the SN platform.';

var grCR = new GlideRecord('change_request');
if (grCR.get('9e4e23091b5ee81074dd620bbc4bcbe3')) {
   new WorkflowApprovalUtils().cancelAll(grCR, comment); 
   new Workflow().restartWorkflow(grCR);
}

Abraço a todos!

Leave a Reply

Your email address will not be published. Required fields are marked *