Validando User Criteria em scripts

User Criterias são bastante conhecidos por todos que utilizam ServiceNow e são usados para permitir (ou bloquear) usuários de acessarem certos conteúdos tais como Itens de Catálogo, Bases de Conhecimento entre outros. É um registro bastante versátil e simples aonde definimos quem é incluído pelas configurações.

Mas e se tivermos que aplicar esta validação em um script? Devemos transportar os critérios da validação e usá-los em nosso script hard-coded? Não!

Este artigo irei demonstrar como implementar uma validação server-side de User Criteria sobre um usuário. Esta abordagem permite a centralização da validação, e caso seja necessaria uma mudança no futuro, basta ajustar o registro de User Criteria e todos os scripts que se baseiam nela passarão a refletir as mudanças!

Existe uma biblioteca não documentada do ServiceNow que irá nos fornecer algumas funcionalidades interessantes, como por exemplo verificar se um usuario atende alguma User Criteria de uma lista, ou se atende a todas as User Criteria providas. Veremos cada caso.

Cenário #1 – Verificar se o usuario atende ao menos um critério

Vamos supor que voce queira aplicar três User Criteria contra um usuario e saber se ao menos uma delas o usuário foi aprovado, não importando qual foi.

// Lista de User Criterias
var userCriterias = ['36ceb72bebb23010e0ef83c45e5228e9','cb8e06e9d7103100f2d224837e610339'];
var userMatches = sn_uc.UserCriteriaLoader.userMatches(gs.getUserID(), userCriterias);
gs.info(userMatches);
// true

Este snippet irá retornar true se o usuario atendeu a pelo menos uma das duas User Criterias informadas.

Cenário #2 – Verificar e identificar qual o critério atendido

Mesmo cenário anterior, mas a função devolve o SysID do criterio que foi atendido por aquele usuário.

var userCriterias = ['36ceb72bebb23010e0ef83c45e5228e9','cb8e06e9d7103100f2d224837e610339'];
var matchingCriterias = sn_uc.UserCriteriaLoader.getMatchingCriteria(gs.getUserID(), userCriterias);
gs.info(matchingCriterias);
// 36ceb72bebb23010e0ef83c45e5228e9

Interessante quando é necessário tomar alguma ação baseado em qual critério foi atendido.

Créditos

Achei muito interessante este assunto e resolvi replicar neste post ja que artigos da comunidade costumam desaparecer com certa frequencia. O post original foi por feito por Alikutty A neste link aqui. Obrigado Alikutty!

Leave a Reply

Your email address will not be published. Required fields are marked *