As páginas de IU podem ser usadas para criar e exibir formulários, caixas de diálogo, listas e outros componentes de IU.

Use páginas de IU como widgets em painéis. Para localizar as páginas de IU, navegue até IU do Sistema > Páginas de IU.

Esta funcionalidade requer um conhecimento de HTML ou Jelly. Você também pode criar aplicações AngularJS simples usando páginas de IU.

O formulário da página de IU contém os seguintes campos:
Tabela 1. Página de IU
Campo Descrição
Nome Nome usado para invocar a página por meio de uma URL (não deve conter espaços).
Aplicação Exibe o escopo da aplicação atual.
Descrição A descrição da página de IU e para que ela é usada.
Direto Marque esta caixa de seleção para uma página de IU direta [sys_ui_page]. Uma página de IU direta não inclui HTML, CSS e scripts comuns. Esta configuração requer a adição de CSS e JavaScript personalizados para usar na página.
HTML Componente principal da página em que você define o que é renderizado quando a página é mostrada. Ele pode conter XHTML estático, conteúdo gerado dinamicamente definido como Jelly ou inclusões de script de chamada e macros de IU.
Nota: Se GlideRecord/GlideDBQuery for usado em vez de GlideRecordSecure, uma mensagem de recomendação de segurança será exibida.
Client script Inclua o JavaScript do lado do cliente que é executado no navegador, como funções chamadas por botões. Ele tem como objetivo lidar com qualquer processamento do lado do cliente necessário, como definir o foco para um campo ou outros recursos DHTML interativos depois que uma página é carregada.

Os client scripts da página de IU são implantados no navegador em um marcador <script/>, para que o conteúdo possa ser definido de forma semelhante no campo HTML. O campo Script de cliente pode ser usado para definir esses scripts de forma concisa para manter a gerenciabilidade do Jelly e do HTML.

Script de processamento Script que é executado no servidor quando a página é enviada. Isso é útil se a página tiver um formulário definido com os marcadores <g:ui_form/> ou <g:form/>.
Nota: Se GlideRecord/GlideDBQuery for usado em vez de GlideRecordSecure, uma mensagem de recomendação de segurança será exibida.
processadores-personalizados-obsoletos
Nota: Este recurso está obsoleto. Embora os processadores personalizados legados e existentes continuem sendo compatíveis, a criação de novos processadores personalizados foi descontinuada. Em vez disso, use o Scripted REST APIs.
Listas relacionadas na exibição de formulário:
Controles de acesso Exibir e configurar controles de acesso para a página de IU. Para obter mais informações, consulte Usar controles de acesso em páginas de IU.
Versões Mostra todas as versões da página de IU. Use esta lista para comparar versões ou reverter para uma versão anterior.

Controle de acesso

Uma página de IU pode ser protegida criando uma ACL com os seguintes parâmetros:

  • Tipo: ui_page
  • Operação: ler
  • Nome: nome da página de IU a ser protegida
  • Função: função do usuário que tem permissão para acessar o registro
Ao salvar uma nova Página de IU, você será solicitado a atribuir uma função para controle de acesso.Seleção de função para controle de acesso a uma nova página de IU.
Nota: Uma entrada com o mesmo nome da página de IU é criada na tabela Controle de acesso.
Para obter detalhes sobre como criar uma regra de ACL, consulte Criação de uma regra de ACL.

Páginas de IU de alto risco

As Páginas de IU são consideradas de alto risco com qualquer um dos seguintes atributos:
  • Usa GlideRecord ou GlideDBQuery em vez de GlideRecordSecure.
    Nota: Isso se aplica a campos HTML e de script de processamento, e não a scripts de cliente.
  • Não tem uma ACL correspondente configurada.
  • Indica que é uma Página de IU pública e está inserida no registro sys_public.
  • Mostra uma mensagem para indicar a página de IU de alto risco.
  • Para instâncias com glide.installation.developer definido como verdadeiro.
  • Se o recurso for um conteúdo personalizado para uma instância do cliente.

Acesso à página de IU

Cada página de IU tem um URL calculado a partir do escopo da aplicação, do nome da página e da extensão de arquivo .do.

Por exemplo, para exibir a página chamada glidewindow_example no sistema de demonstração, você deve navegar até https://<instance name> .service-now.com/glidewindow_example.do . Se a página fizer parte de uma aplicação personalizada chamada example_app, você deverá navegar até https://<instance name> .service-now.com/x_example_app_glidewindow_example.do .

Você também pode adicionar parâmetros adicionais a um URL que pode ser acessado na seção HTML de uma página como variáveis Jelly. Ou seja, anexar argumentos ao URL da seguinte forma: /my_test_page.do?sysparm_verbose=true cria variáveis Jelly chamadas verbose que podem ser acessadas da seguinte forma:
<j2:if test="$[!empty(sysparm_verbose)]"> <span>show extra stuff </span> </j2:if >

Um exemplo prático comum disso pode ser a recuperação de um registro de banco de dados para exibição. Para criar uma lista das funções de um usuário, passe um parâmetro com o sys_id do usuário. Invoque a seguinte página de IU para exibir uma lista de funções para esse usuário com o código Jelly:

role_select.do?sysparm_user=5137153cc611227c000bbd1bd8cd2007
<j:set var = "jvar_user_id" value = "${sysparm_user}" />
 
  <g:evaluate> var userRoles = new GlideRecord('sys_user_has_role');
    userRoles.addQuery('user','${jvar_user_id}');
    userRoles.query(); 
  </g:evaluate>
 
  <select id='select_role'> 
      <j:while test = "${userRoles.next()}"> 
          <option value = "${userRoles.sys_id}"> ${userRoles.role.name} </option> 
      </j:while> 
  </select>

Uma exceção a ter cuidado, no entanto, é o nome de variável reservada sys_id. Esta variável sempre contém o ID da própria página de IU, independentemente do que está especificado no URL. Um nome de variável substituta comum é sysparm_id.

Não use parâmetros de URL para carregar client scripts em páginas de IU. O sistema não avalia mais os scripts passados pelo parâmetro de URL. Se sua implementação depender desse comportamento, você poderá adicionar a propriedade do sistema [glide.security.disable_ui_pages_sysparm_client_script] e defini-la como falsa para permitir temporariamente a avaliação de parâmetros de URL que passam scripts em páginas de IU.

Usar controles de acesso em páginas de IU

Consulte os controles de acesso diretamente no formulário da Página de IU e adicione o controle de acesso baseado em função ao criar ou editar um registro de Página de IU.

Antes de Iniciar

Os controles de acesso que foram adicionados a uma página de IU existente podem ser acessados e editados abrindo o registro da página de IU em links relacionados.

Função necessária: security_admin e administrador

Procedimento

  1. Eleve para a função security_admin.
    Para obter detalhes sobre a elevação de função, consulte Elevar para uma função privilegiada.
  2. Navegar até Todos > IU do Sistema > Páginas de IU.
  3. Selecione Novo.
  4. Preencha o formulário.
    Consulte Páginas de IU para obter informações adicionais sobre descrições de campos de IU.
  5. Selecione Enviar ou Salvar.
    Um modal é exibido solicitando que você crie um controle de acesso baseado em função para a página de IU.Exibe o modal de controle de acesso baseado em função.
  6. Selecione uma função.
  7. Selecione OK para atribuir a função.
    Você retornará à lista de páginas de IU.
Adicionar, editar ou exibir controles de acesso para uma página de IU existente:
  1. Abra uma página de IU na tabela de páginas de IU.
  2. Exiba os Controles de acesso nas listas relacionadas.
  3. Selecione Novo para criar um novo controle de acesso ou selecione uma entrada existente para edição.
    O formulário de controle de acesso é carregado. Os detalhes da Página de IU são exibidos.
  4. Preencha o formulário e atribua uma função à página de IU.
    Para obter informações adicionais sobre controle de acesso, consulte Criação de uma regra de ACL.
  5. Selecione Enviar para um novo controle de acesso ou Atualizar para edições.
    Nota: Pode haver vários controles de acesso por página de IU.

Páginas de IU seguras

Os controles de acesso e as mensagens de segurança relacionadas são integrados em Páginas de IU de alto risco para maior segurança.

Uma mensagem informativa é exibida em páginas de IU de alto risco para informar o cliente a adicionar um controle de acesso baseado em função à página de IU.

Mensagens de recomendação de segurança da página de IU.

A mensagem é exibida nas seguintes condições:
  • Se uma ACL (lista de controle de acesso) estiver ausente
  • Se GlideRecord/GlideDBQuery for usado em vez de GlideRecordSecure nas seções de scriptHTMLou de processamento Exemplos de script de HTML e processamento.
  • Se a página de IU estiver configurada como pública em sys_public
    Nota: Páginas de IU públicas que são públicas ou que usam GlideRecord não mostram um aviso de ACL ausente.
Consulte Páginas de IU para obter detalhes sobre páginas de IU de alto risco.

Condições que exibem a mensagem de recomendações de segurança

A mensagem é exibida nas seguintes condições:

  • Todas as instâncias internas do Eclipse/IJ em que glide.installation.developer=verdadeiro.
  • Todos os recursos da Página de IU com escopo do cliente.
  • Qualquer Página de IU personalizada quando a propriedade glide.script.ui_page.customer_scoped.security_msgs_enabled estiver definida como verdadeira. (O valor padrão é verdadeiro).

Condições que não exibem a mensagem de recomendações de segurança

A mensagem não será exibida nas seguintes condições:

  • A Página de IU é pública.
  • A Página de IU está no escopo Global.
  • O glide.script.ui_page.customer_scoped.security_msgs_enabled está definido como falso.
Nota: Para desabilitar o aviso de criação de ACL baseada em função, defina a propriedade glide.ui_page.enable_acl_create_ux como falsa. A propriedade é definida como verdadeira por padrão.

Scripts de processo da página de IU

Se a sua página de IU contiver um formulário (usa o<g:form> tag), você pode enviar o formulário e fazer com que o script do processo seja executado.

O script de processamento pode acessar naturalmente os campos no formulário. Por exemplo, se o seu formulário contiver o campo application_sys_id :

<g:ui_form>
  <p>Click OK to run the processing script.</p>
  <g:dialog_buttons_ok_cancel ok="return true" />
  <input type="hidden" name="application_sys_id" value="499836460a0a0b1700003e7ad950b5da" />
</g:ui_form>
Você pode acessar o campo usando application_sys_id:
var application = new GlideRecord('hr_application');
 application.get(application_sys_id);
 application.status = "Rejected";
 application.update();
 var urlOnStack = GlideSession.get().getStack().bottom();
 response.sendRedirect(urlOnStack);
Importante: O script anterior só pode ser usado com aplicações globais.

Se você estiver usando a página de IU para um diálogo, também poderá fazer referência ao URL mais recente na pilha usando o código acima e enviar a resposta para esse local. Isso é útil se você quiser que o script de processamento do diálogo atualize algo e exiba novamente a tela que abriu o diálogo.