Restringir o campo atribuído a por função

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 1 min. de leitura
  • Este exemplo mostra como usar JavaScript e uma regra de negócios para restringir as opções de campo Atribuído a incidente somente aos usuários com a função itil_admin.

    Antes de Iniciar

    Função necessária: personalize_dictionary ou administrador

    Por Que e Quando Desempenhar Esta Tarefa

    Você também pode alterar itil_admin para qualquer outra função em um campo de referência que se refira à tabela Usuário [sys_user].

    Procedimento

    1. Abra um incidente.
    2. No canto superior esquerdo da tela, clique no menu de contexto do formulário e selecione Configurar > Dicionário.
    3. No campo Qual de referência, insira javascript:"sys_idIN"+getRoledUsers("itil_admin").join(),").
    4. Salve o registro.
    5. Para ver a regra de negócios do sistema de base que este código JavaScript chama, navegue até Definição do Sistema > Regras de negócios.
    6. Abra getRoledUsers.
      A regra de negócios usa o seguinte código JavaScript.
      // Return an array of sys_ids of the users that have at least one role
      // optional parameters allow the exclusion (NOT IN) of some roles or
      // look for specific roles (IN)
      //
      // optional: queryCondition - 'IN' or 'NOT IN'
      // optional: roleList - a comma separated list of role names
      //
      function getRoledUsers(queryCondition, roleList) {
         var roleListIds;
         if (queryCondition && roleList) {
            roleListIds = getRoleListIds(roleList);
         }
      
         var users = {};
         var now_GR = new GlideRecord('sys_user_has_role');
         if (roleListIds) {
            now_GR.addQuery('role', queryCondition, roleListIds);
         }
         now_GR.query();
         while (now_GR.next()) {
            users[now_GR.user.toString()] = true;
         }
         
         var ids = [];
         for (var id in users)
            ids.push(id);
            
         return ids;
      }
      
      // get sys_id's for the named roles
      function getRoleListIds(roleList) {
         var ids = [];
         var now_GR = new GlideRecord('sys_user_role');
         now_GR.addQuery('name','IN',roleList);
         now_GR.query();
         while (now_GR.next()) {
            ids.push(now_GR.sys_id.toString());
         }
         return ids;
      }