Estrutura do script de uma política PaCE

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 6 min. de leitura
  • Esta seção descreve a estrutura do script de uma política PaCE.

    Quando uma política é executada, um conjunto de parâmetros é aprovado e o desenvolvedor da política pode usar esses parâmetros nesse script de política para decidir se está em conformidade, se não está em conformidade ou se é uma conformidade com exceção e retornar essa decisão ao serviço de chamada. A imagem a seguir mostra um exemplo de script:
    Figura 1. Exemplo de script de política
    Exemplo de política de script.

    A tabela a seguir lista os parâmetros de função da política e como eles podem ser usados em seu script de política.

    Nome da Variável Descrição
    agente Agente é um objeto que o codificador de política pode usar para registrar mensagens. As mensagens de log são armazenadas na tabela sn_pace_execution_log. Você pode revisar essas mensagens de log para fins de depuração, acompanhamento ou monitoramento. As mensagens de log podem ser registradas em log com um dos seguintes níveis:
    • 1: info
    • 2: depurar
    • 3: aviso
    • 4: erro

    Quando uma política é invocada por meio da API, você pode especificar o nível de log desejado. Por exemplo:o formato é o seguinte:

    logger.info(“** snapshotId é:” +snapshotId);

    atual

    Registro

    currentRecord é um objeto da versão atual da política que é executado quando a política é usada. Para exibir os detalhes do currentRecord, navegue até a guia Versões na página inicial da Política e localize a política cujo estado da versão está definido como Atual.
    Na imagem abaixo, podemos ver que a versão ativa atual da política está realçada. Ela mostra os seguintes detalhes:
    • número da versão
    • data da última atualização
    • o nome do usuário que atualizou a versão
    • o número de vezes que ela foi executada pela aplicação de chamada
    • o número de vezes que ela foi executada no ambiente de testes
    O script da política pode acessar esses dados durante o tempo de execução da política interagindo com o objeto currentRecord aprovado para a política.

    Detalhes da versão PaCE
    Este exemplo mostra como um desenvolvedor de política pode acessar as propriedades do registro de versão da política:
    (function(logger, currentRecord, documentRecord, apiVars, configParams, recordRefs, dataCollectors, childrenOutputs, output) {
         //retrieve the input values
         logger.info(currentRecord.getValue('name'));
      }
     )(logger, currentRecord, documentRecord, apiVars, configParams, recordRefs, dataCollectors, childrenOutputs, output);
    
    documento

    Registro

    O documentRecord é usado para mapear a política para o objeto relevante (tabela e documentID) que está sendo validado. O documentRecord é uma combinação de nome_tabela e sysID. Com base nas propriedades do objeto, a lógica da política é usada para gerenciar e interagir com o objeto que está sendo validado para determinar a decisão correta.
    Por exemplo: no ambiente Configuração de DevOps, uma política pode ser mapeada para o implantável. Quando a API é invocada, uma consulta é iniciada na tabela do documento (implantável) e no ID do sistema do implantável.
    {
               "table": "sn_cdm_deployable",
               "sysId": "d1be8f5e87d80110eec7dbdd3fbb357d"
    		}
    Este exemplo mostra como o documentRecord pode ser usado no script de uma política:
    (function(logger, currentRecord, documentRecord, apiVars, configParams, recordRefs, dataCollectors, childrenOutputs, output) 
    {
    //assuming that associated document has state field
      var documentState = documentRecord.getValue(“state”);
    if (documentState == “new”)
       …
    else
       …
    }
    )(logger, currentRecord, documentRecord, apiVars, configParams, recordRefs, dataCollectors, childrenOutputs, output);
    

    callerInput

    As callerInput são passadas para a API PaCE quando ela é invocada. Ela inclui todas as variáveis de de entrada do solicitante definidas na versão da política. Consulte a seção <Definir entradas do solicitando> para obter detalhes

    O Exemplo de script de política mostra como as políticas podem ser usadas para validar dados de configuração no ambiente DevOps. No script de exemplo, a variável apiVars é definida como
    var snapshotId = apiVars.snapshotId;
    em que o snapshotId especificado é mapeado para o snapshotId correspondente do implantável da Configuração de DevOps que está sendo validado com base nos critérios especificados.

    O desenvolvedor de política pode definir a lógica no script de política para usar os valores de callerInput passados quando a API é invocada para determinar a decisão. Por exemplo, o SnapshotID passado é usado para identificar valores-chave relacionados ao snapshotID específico para um implantável transmitido no objeto documentRecord.

    mappedInput

    das entradas de mapeamentosão variáveis passadas ao mapear a política e incluem todas as variáveis de das entradas de mapeamento definidas para uma versão específica da política.

    A variável mappedInput é definida da seguinte forma no Exemplo de script de política.
    var dbPort = configParams.dbPort;
    O desenvolvedor de política pode definir a lógica no script da política para usar os valores passados no mapeamento para determinar a decisão. Por exemplo, o número dbPort deve ser menor que 30000, caso contrário, a política será considerada não conforme.
    recordRefs As referências de registro definem consultas para extrair dados de qualquer tabela ServiceNow® e usar os dados para configurar a lógica da política. Há uma função de preenchimento automático que pode selecionar a referência de registro no Editor Javascript.
    dataCollectors A função de coletores de dados coleta dados do processo de entrada de ServiceNow ou de uma fonte de dados externa para fornecer uma saída.
    secundários

    Saídas

    Sem suporte nesta versão.
    saída

    Este parâmetro é usado para passar a saída da execução da política que inclui a decisão de volta para o serviço de chamada. Ele fornece uma decisão relacionada a esta política, com informações adicionais, como erros, avisos e detalhes do resultado.

    Este exemplo mostra uma amostra de saída com decisões conformes e não conformes:
    
    {
        "decision": "compliant",
        "results": [],
        "warnings": [],
        "failures": [],
        "state": "complete"
    }
    
    
    {
        "decision": "non_compliant",
        "results": [],
        "warnings": [],
        "failures": [“Failed to validate key”],
        "state": "complete"
    }
    
    output.

    decision

    A propriedade de decisão pode ser definida como:
    • Conforme: determina que a política está em conformidade com os requisitos.
    • Não conforme: determina que a política não está em conformidade com os requisitos.
    • Conformidade com exceção: determina que uma exceção à política foi aprovada e todas as políticas que não estão em conformidade são definidas para o estado de conformidade com exceção.

    A decisão é retornada em um formato JSON para o serviço de chamada.

    Nota:
    Se um valor não for especificado no campo output.decision no script, quando a política for executada, por padrão, esse campo será definido como compatível se não houver falhas.
    output.

    results

    A propriedade de resultados pode ser usada para passar dados de volta para o serviço de chamada em decisões tomadas durante a fase de validação de política. Um objeto de lista com uma lista de resultados pode ser passado de volta para o serviço de chamada.

    output.

    warnings

    A propriedade de avisos pode ser usada para passar dados de volta para o serviço de chamada em todos os avisos que ocorreram durante a fase de validação da política.

    output.

    failures

    A propriedade falhas pode ser usada para passar dados de volta para o serviço de chamada em quaisquer erros que ocorreram durante a fase de validação da política.

    Nota:
    Os campos a seguir são preenchidos automaticamente quando o script de política PaCE é executado.
    output.

    name

    O nome (versão atual) da política que está sendo executada.
    output.

    state

    Indica o estado da invocação da política.
    • Concluído: a invocação foi concluída com sucesso.
    • Pendente: indica que não foi possível executar a política com sucesso e está em um estado incompleto.
    Nota:
    • As sugestões de preenchimento automático estão disponíveis no editor de script de política para o parâmetro logger.callerInput e mappedInput.
    • Para exibir informações adicionais de um parâmetro, insira o nome do parâmetro e selecione uma das opções a seguir:
      Detalhes do parâmetro adicional de PaCE