Script Includes
As inclusões de script são usadas para armazenar JavaScript executado no servidor.
Crie inclusões de script para armazenar funções e classes JavaScript para uso por scripts de servidor. Cada inclusão de script define uma classe de objeto ou uma função.
Considere usar inclusões de script em vez de regras de negócio globais porque as inclusões de script só são carregadas mediante solicitação.
Para obter mais informações, consulte Configurações de privacidade em inclusões de script de cliente chamável e Inclusões de script da Descoberta.
Formulário de inclusão de script
As inclusões de script têm um nome, uma descrição e um script. Eles também especificam se estão ativos ou não e se podem ser chamados de um client script. Exiba uma inclusão de script existente ou crie uma nova usando o formulário Inclusão de script.
Para acessar as inclusões de script, navegue até Definições do sistema > Inclusões de script.
| Campo | Descrição |
|---|---|
| Nome | O nome da inclusão de script. Se você estiver definindo uma classe, isso deve corresponder ao nome da classe, ao protótipo e ao tipo. Se você estiver usando uma inclusão de script sem classe (sob demanda), o nome deverá corresponder ao nome da função. |
| Nome da API | Nome da API somente leitura e preenchido automaticamente. |
| Cliente chamável | Disponibiliza a inclusão de script para client scripts, filtros de lista/relatório, qualificadores de referência ou se especificado como parte do URL. Quando selecionado, o link relacionado aos controles de acesso fica disponível. Para obter mais informações, consulte Configurações de privacidade em inclusões de script de cliente chamável. |
| Aplicação | A aplicação em que reside este script include. |
| Acessível de | Define quais aplicações podem acessar este script incluem:
|
| Ativo | Habilita a inclusão de script quando selecionado. Desmarque o campo ativo para desabilitar a inclusão de script. |
| Descrição | Fornece conteúdo descritivo sobre a inclusão de script. |
| Script | Define o script do lado do servidor a ser executado quando chamado de outros scripts. O script deve definir uma única classe JavaScript ou uma função global. O nome da classe ou da função deve corresponder ao campo Nome. |
| Pacote | O pacote que contém este script include. |
| Criado por | O usuário que criou este script include. |
| Atualizado por | O usuário que atualizou mais recentemente esta inclusão de script. |
| Política de proteção | Define o nível de proteção da inclusão de script:
|
| Listas relacionadas na exibição de formulário: | |
| Versões | Mostra todas as versões da inclusão de script. Use esta lista para comparar versões ou para reverter para uma versão anterior. Consulte Versões. |
| Controles de acesso | Torna-se disponível quando a caixa de seleção Cliente chamável é marcada e oculta das inclusões de script padrão. Use para proteger um CCSI contra uso não autorizado quando o acesso público não for concedido. |
Usar inclusões de script
As inclusões de script são encontradas em Definição do sistema ou IU do sistema. Você pode chamar as inclusões de script existentes a partir de um script ou criar uma nova inclusão de script.
Para criar uma inclusão de script totalmente nova, você pode seguir o formato de qualquer uma das inclusões de script existentes. Neste exemplo, o nome da inclusão de script é NewInclude e há uma única função chamada myFunction. É importante que o nome da inclusão de script corresponda ao nome da classe, do protótipo e do tipo. Quando você cria uma nova inclusão de script e atribui um nome a ela, o sistema fornece um snippet de código com a classe e o protótipo configurados corretamente.
var NewInclude =Class.create();
NewInclude.prototype={
initialize :function(){},
myFunction :function(){<Put function code here>},
type :'NewInclude'};Você pode usar a linha myFunction desta forma:
var foo =new NewInclude();
foo.myFunction();Script chamável pelo cliente inclui
As Inclusões de script de cliente chamável (CCSI) disponibilizam a inclusão de script para scripts de cliente, filtros de lista/relatório, qualificadores de referência ou se especificado como parte do URL.
Antes de Iniciar
Função necessária: administrador
Procedimento
Configurações de privacidade em inclusões de script de cliente chamável
As configurações de privacidade para inclusões de script de cliente chamável (CCSI) determinam quem pode acessar uma inclusão de script de cliente chamável.
Configuração de privacidade privada
A configuração de privacidade privada significa que os convidados que acessam páginas públicas não podem acessar o script-include de cliente chamável. Um script privado não pode ser executado por um usuário que não esteja conectado.
Configuração de privacidade pública
Uma configuração de privacidade pública significa que o script do cliente pode ser executado por usuários não conectados que criam uma solicitação HTTP apropriada. Isso pode criar um problema de segurança se o script do cliente fornecer informações confidenciais.
- GlideSystemAjax
- SysMessageAjax
- KnowledgeMessagingAjax
- KnowledgeAjax
- PasswordResetAjax
Definir privacidade em todas as inclusões de script de cliente chamável
Altere a configuração de privacidade em todas as inclusões de script de cliente chamável.
Para fornecer mais controle sobre todas as inclusões de script de cliente chamável, os administradores podem adicionar a propriedade glide.script.ccsi.ispublic. Esta propriedade muda a visibilidade das inclusões de script de cliente chamável, tornando-as todas públicas ou privadas. Configure a propriedade da seguinte forma:
| Título | Propriedade |
|---|---|
| Nome | glide.script.ccsi.ispublic |
| Tipo | verdadeiro|falso |
| Valor | falso |
Alterar a privacidade em uma única inclusão de script de cliente chamável
Altere a configuração de privacidade de uma única inclusão de script de cliente chamável adicionando a função isPublic ().
A configuração isPublic () tem precedência sobre a propriedade glide.script.ccsi.ispublic. Por exemplo, se a propriedade for definida como false, tornando privadas todas as inclusões de script de cliente chamável, e um script definir isPublic() como true, o script será público.
Para alterar a privacidade de uma única inclusão de script de cliente chamável, adicione o seguinte método à inclusão de script:
isPublic:function(){return[true/false];},var NewInclude =Class.create();
NewInclude.prototype={
initialize:function(){},
myFunction:function(){//Put function code here},
isPublic:function(){return false;},
type:'NewInclude'};
Segurança em inclusões de script de cliente chamável
Protejaa inclusão de script de cliente chamável (CCSI) contra uso não autorizado. Para todos os registros de CCSI que são criados como uma aplicação do cliente, são exibidas recomendações que podem ajudar a reduzir o risco de segurança.
Ao criar um CCSI, o sistema exibe as seguintes recomendações de segurança, caso ainda não tenham sido configuradas:
- Adicione ou defina um controle de acesso, a menos que o CCSI tenha acesso público.
- Use GlideRecordSecure em vez da API GlideRecord para melhorar a segurança, se o script consultar o banco de dados.Nota:Para desabilitar as mensagens de recomendação de segurança, defina a propriedade glide.script.ccsi.customer_scoped.security_msgs_enabled como falsa na tabela sys_properties. O valor padrão é definido como verdadeiro.
Consulte Configurações de proteção de segurança da instância para obter informações adicionais sobre conformidade de segurança.
Inclusões de script da Descoberta
Descoberta script includes definem classes JavaScript que você pode usar para realizar Descoberta tarefas.
Uso de GlideRecordUtil para trabalhar com GlideRecords
GlideRecordUtil é uma classe de utilitário que fornece métodos que são úteis para trabalhar com GlideRecords durante Descoberta. Consulte GlideRecordUtil para obter descrições dos métodos disponíveis.
Obtenção de uma instância de GlideRecord
var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");Obtendo todos os campos em um GlideRecord
var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var fields = new GlideRecordUtil().getFields(now_GR);
gs.log(fields.join(" ")); // List all the fields that are in a computer CIPreenchendo campos de objeto GlideRecord
var objectToPopulate = { };
var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var ignore = {"sys_created_on": true, "sys_updated_by": true};
new GlideRecordUtil.03().populateFromGR(objectToPopulate, gr, ignore);
// Now the objectToPopulate contains field/value pairs from the computer GlideRecordvar now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var obj = {"name": "xyz", "os": "windows 2000", "sys_created_by", "aleck.lin"};
var ignore = {"sys_created_by": true};
new GlideRecordUtil().mergeToGR(obj, gr, ignore);
gr.update();Obtendo hierarquias de tabela
var tables = new GlideRecordUtil().getTables("cmdb_ci_linux_server");
gs.log(tables.join(","));
// The result would be "cmdb_ci, cmdb_ci_computer, cmdb_ci_server, cmdb_ci_linux_server".Usando DiscoveryException e AutomationException
Ao gravar Descoberta sensores e scripts relacionados ao sensor, convém usar DiscoveryException ou AutomationException para indicar que uma exceção veio de Descoberta.
function foo() {
if(//condition matches) throw new DiscoveryException("The message", "The cause"); }try {
foo();
}
catch(e) {
if(e instanceof DiscoveryException)
gs.log("A DiscoveryException occurred. It is " + e. getMessage() + " caused by " + e.getCause()); }O exemplo acima também se aplica a AutomationException. DiscoveryException é normalmente usado para fornecer processamento de exceção especificamente para o Discovery, enquanto AutomationException é usado para processamento de exceção que se aplica ao Orchestration e Descoberta.