Variáveis do Catálogo de serviços com script

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 4 min. de leitura
  • Você pode usar script para fazer referência a qualquer variável de item da solicitação de uma tabela em ambiente com escopo e sem escopo.

    Segue um exemplo de referência de variável.
    current.variables.<variable_name>
    Onde atual se refere ao registro atual <variable_name> é o nome da sua variável.
    Nota:
    Para fazer referência a uma variável do JavaScript, ela deve ter um nome.

    Quando uma variável faz parte de um conjunto de variáveis, você pode fazer referência a ela como current.variables.<variable_name> ou current.variables.<variable_set_name>.<variable_name>.

    O conjunto de variáveis também é um cidadão de primeira classe no Catálogo de serviços. Assim como as variáveis, um conjunto de variáveis tem funções de leitura, gravação e criação. Se funções forem fornecidas para um conjunto de variáveis, as funções serão aplicáveis às variáveis no conjunto. As funções de uma variável individual são substituídas pelas funções do conjunto de variáveis.

    Imprimir uma variável

    var original = current.variables.original_number;
    gs.print(original);
    

    Definir uma variável

    current.variables.name = "Auto-Generated:" + current.variables.asset_tag;

    Criar um item de inventário com campos definidos a partir de variáveis

    doCreation(); 
    
    function doCreation ( ) { 
    var create = current.variables.create_item; 
    if (create == 'true') { // we want to create an asset 
      var computer = new GlideRecord('cmdb_ci_computer');
      computer.initialize();
      computer.asset_tag = current.variables.asset_tag;
      computer.serial_number = current.variables.serial_number;
      computer.name = current.variables.name;
      computer.manufacturer = current.variables.company;
      computer.insert(); } }

    Obter GlideElementVariable de variáveis e conjuntos de variáveis associados a um GlideRecord

    now_GR.variables

    Obter o par de nome e valor de variáveis associadas a um GlideRecord

    now_GR.variables.getVariableValue();

    Obter uma lista de GlideElementVariable para variáveis em um registro de tarefa

    now_GR.variables.getElements();

    Obter uma lista de GlideElementVariable para variáveis (inclusive conjunto de variáveis com várias linhas) em um registro de tarefa

    now_GR.variables.getElements(true);
    Nota:
    O método getElements() retorna todas as variáveis presentes no registro de tarefa fornecido, exceto as variáveis do formatador, como rótulo, pausa, término do contêiner, divisão do contêiner e assim por diante.

    APIs para GlideElementVariable

    • now_GR.variables.<var_name>.isMultiRow(): obtenha se a GlideElementVariable for um conjunto de variáveis com várias linhas ou uma variável.
    • now_GR.variables.<var_name>.getQuestion(): obtenha o objeto Question para uma variável. Aplicável somente para uma variável (isMultiRow() é falso) e não para um conjunto de variáveis com várias linhas.
    • now_GR.variables.<var_name>.getLabel(): obtenha o rótulo da GlideElementVariable. Para uma variável, o rótulo da variável é retornado. Para o conjunto de variáveis com várias linhas, o título do conjunto de variáveis é retornado.
    • now_GR.variables.<var_name>.canRead(): obtenha se o usuário puder exibir uma variável ou um conjunto de variáveis com várias linhas.
    • now_GR.variables.<var_name>.canWrite(): obtenha se o usuário puder editar uma variável ou um conjunto de variáveis com várias linhas.
    • now_GR.variables.<var_name>.getDecryptedValue(): obtenha o valor descriptografado de uma variável mascarada. Aplicável somente para uma variável mascarada.
    • now_GR.variables.<var_name>.getRows(): obtenha a lista de objetos de linha para um conjunto de variáveis com várias linhas. Aplicável somente para um conjunto de variáveis com várias linhas (isMultiRow() é verdadeiro).
    • now_GR.variables.<var_name>.getRowCount(): obtenha o número de linhas para conjunto de variáveis com várias linhas. Aplicável somente para um conjunto de variáveis com várias linhas (isMultiRow() é verdadeiro).

    Exemplo para acessar variáveis de GlideRecord para a Tabela de tarefas

    var now_GR = new GlideRecord('sc_req_item'); 
    if (now_GR.get('635a1f5387320300e0ef0cf888cb0b73')) { 
        var variables = now_GR.variables.getElements(); 
        for (var i=0;i<variables.length;i++) { 
            var question = variables[i].getQuestion(); 
            gs.log(question.getLabel() + ":" + question.getValue()) 
        } 
    }

    Exemplo para acessar um conjunto de variáveis com várias linhas de GlideRecord para a Tabela de tarefas

    var now_GR = new GlideRecord('sc_req_item');
    now_GR.get('02c38dcd87013300e0ef0cf888cb0bb2');
    
    var vars = now_GR.variables.getElements(true);
    
    for (var i=0; i<vars.length; i++) {
        var now_V = vars[i];
        if (now_V.isMultiRow()) {
            var rows = now_V.getRows();
            for (var j=0; j<now_V.getRowCount(); j++) {
                var row = rows[j];
                var cells = row.getCells();
                for (var k=0; k<cells.length; k++) {
                    var cell = cells[k];
                    gs.info(cell.getLabel() + ":" + cell.getCellDisplayValue())
                }
            }
        }
    }

    Conjunto de variáveis com várias linhas

    Tabela 1. Conjunto de variáveis com várias linhas
    Operação Uso
    Operações de tabela
    Retornar valor da matriz JSON como cadeia de caracteres
    now_GR.variables.table_var
    Valor do conjunto de variáveis com várias linhas
    now_GR.variables.table_var = <val>
    Nota:
    Uma matriz de pares ordenados (chave, valor) também é aplicável como entrada.
    Obter valor de coluna, var1, de um conjunto de variáveis com várias linhas
    now_GR.variables.table_var.var1
    Definir valor de um conjunto de variáveis, var1
    now_GR.variables.table_var.var1 = <val>
    Nota:
    Uma matriz de pares ordenados (chave, valor) também é aplicável como entrada.
    Operações de linha
    Obter a contagem de linhas atual
    now_GR.variables.table_var.getRowCount()
    Retorna a linha especificada pela variável "i" - getRow(<int> i)
    var row = now_GR.variables.table_var.getRow(<int> i);
    Obter o valor da célula para uma coluna de pergunta mapeada para <var_name>
    row.<var_name>
    Definir o valor da célula para uma coluna de pergunta mapeada para <var_name>
    row.setCellValue('<var_name>',value)
    Definir o valor da célula para uma coluna de pergunta mapeada para <var_name>
    row.<var_name> = value
    Adicionar uma linha vazia no final da tabela e retornar um objeto programável
    var row = now_GR.variables.table_var.addRow()
    Excluir uma linha
    row.deleteRow()

    Observações e limitações

    • //Coluna única de table_Var
    • now_GR.variables.table_var.var1
    • now_GR.variables.table_var.var1 = <val>
    1. Você só pode definir uma variável em uma regra de negócio anterior. Variáveis definidas em uma regra posterior não são gravadas no banco de dados.
    2. Não há nada em vigor para impedir a colisão de namespace com variáveis. Criar duas variáveis chamadas computer_speed resultaria na exibição de apenas uma delas; o segundo substituiria o primeiro.
    3. As variáveis de data/hora usam a mesma formatação de fuso horário e regras de armazenamento de todas as outras datas no sistema. Elas são armazenadas internamente no GMT, mas traduzidas no fuso horário local do usuário e no formato para exibição.