Script para duplicar tabelas

O artigo de hoje vai te mostrar como duplicar uma tabela no ServiceNow já que não existe (eu pelo menos não conheço) nenhum recurso nativo que faça isso.

Esta é a forma mais simples que eu achei até o momento para duplicar qualquer tabela. Altere as variáveis, execute num background script e pronto.

copyTable('incident', 'u_incident_facilities', 'task');

function copyTable(originalTable, newTable, extendTable) {
    var grOrig = new GlideRecord(originalTable);
    grOrig.initialize();
    var td = GlideTableDescriptor.get(originalTable);
    var displayName = td.getDisplayName();
    var tLabel = grOrig.getLabel();
    var creator = new TableDescriptor(newTable, tLabel);
    if (extendTable) {
    	creator.setExtends(extendTable);
    }
    creator.setFields(grOrig);
    creator.copyAttributes(td);
    creator.setRoles(td);
    creator.create();
    creator.copyIndexes(originalTable, newTable);
}

Explicando o código acima, criamos uma função que recebe 3 parâmetros, primeiro o nome da tabela base (a que vai ser copiada), depois o nome da tabela que será criada (a cópia), e por último se ela deve extender alguma outra tabela. Por exemplo a tabela “incident” extende “Task”, então se voce quiser manter essa hierarquia, passe o nome dessa tabela no terceiro argumento.

O código vai copiar os campos, atributos, definições e inclusive os indices da tabela original na sua nova tabela! Detalhe importante, não esqueça que o nome da sua nova tabela DEVE começar com “u_” para que fique claro que se trata de uma tabela customizada (boas práticas)!

Outro detalhe importante, a execução desse script não gera registros em UpdateSet!

Até a próxima!

Leave a Reply

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