GlideFilter - com escopo, global
A API GlideFilter permite a filtragem de consultas para determinar se um ou mais registros atendem a um conjunto especificado de requisitos.
Os métodos para esta API podem ser acessados usando o objeto global GlideFilter.
Sensibilidade a maiúsculas e minúsculas
A API GlideFilter faz distinção entre maiúsculas e minúsculas por padrão. Use o método setCaseSensitive() para habilitar ou desabilitar a diferenciação de maiúsculas e minúsculas. As consultasGlideRecord não diferenciam maiúsculas de minúsculas.
O exemplo a seguir mostra como uma consulta GlideRecord não diferencia maiúsculas de minúsculas e resulta no mesmo registro de usuário com letras maiúsculas ou minúsculas.
var gr_Query = new GlideRecord('sys_user');
gr_Query.addQuery('first_name', 'Abel');
gr_Query.query();
while (gr_Query.next())
gs.info("Upper case query: " + gr_Query.getDisplayValue());
var gr_Query = new GlideRecord('sys_user');
gr_Query.addQuery('first_name', 'abel');
gr_Query.query();
while (gr_Query.next())
gs.info("Lower case query: " + gr_Query.getDisplayValue());
Upper case query: Abel Tuter
Lower case query: Abel TuterO exemplo a seguir mostra como GlideFilter recupera somente o valor correspondente do registro para a condição maiúscula. A condição de minúsculas não fornece uma correspondência.
// Matches the 'Abel Tuter' user record
var gr_Query = new GlideRecord('sys_user');
gr_Query.query();
var condition = 'first_name=Abel';
var glideFilter = new GlideFilter(condition, 'filterCondition');
while (gr_Query.next()) {
if (glideFilter.match(gr_Query, true))
gs.info("Upper case condition: " + gr_Query.getDisplayValue());
}
// The following code does not match 'Abel Tuter' user record
var gr_Query = new GlideRecord('sys_user');
gr_Query.query();
var condition = 'first_name=abel';
var glideFilter = new GlideFilter(condition, 'filterCondition');
while (gr_Query.next()) {
if (glideFilter.match(gr_Query, true))
gs.info("Lower case condition: " + gr_Query.getDisplayValue());
}
Upper case condition: Abel TuterO exemplo a seguir mostra como desabilitar a distinção entre maiúsculas e minúsculas de GlideFilter com o método setCaseSensitive(). O filtro corresponde à condição, embora o caso não corresponda ao valor do campo.
// Matches the 'Abel Tuter' user record
var gr_Query = new GlideRecord('sys_user');
gr_Query.query();
var condition = 'first_name=Abel';
var glideFilter = new GlideFilter(condition, 'filterCondition');
while (gr_Query.next()) {
if (glideFilter.match(gr_Query, true))
gs.info("Upper case condition: " + gr_Query.getDisplayValue());
}
// The following code disables case sensitivity and matches the same record
var gr_Query = new GlideRecord('sys_user');
gr_Query.query();
var condition = 'first_name=abel';
var glideFilter = new GlideFilter(condition, 'filterCondition');
glideFilter.setCaseSensitive(false);
while (gr_Query.next()) {
if (glideFilter.match(gr_Query, true))
gs.info("Lower case condition: " + gr_Query.getDisplayValue());
}
Upper case condition: Abel Tuter
Lower case condition: Abel TuterFiltrar valores nulos
ISNOTEMPTY à condição de consulta. O exemplo a seguir mostra como o uso da mesma consulta codificada com GlideRecord e GlideFilter produz resultados diferentes.var insertRecordsGr = new GlideRecord('u_test_table');
insertRecordsGr.deleteMultiple();
var dates = ['', '2021-01-29', '2021-01-30', '2021-01-31'];
dates.forEach(function(val) {
insertRecordsGr.initialize();
insertRecordsGr.u_date_field = val;
insertRecordsGr.insert();
});
var now_GR = new GlideRecord('u_test_table');
now_GR.addEncodedQuery('u_date_field<javascript:gs.beginningOfToday()');
now_GR.query();
// Encoded query includes null values with GlideFilter, which might cause unexpected results
var condition = 'u_date_field<javascript:gs.beginningOfToday()';
var grWithGlideFilter = new GlideRecord('u_test_table');
grWithGlideFilter.query();
var filter = new GlideFilter(condition, 'filterCondition');
var countWithGlideFilter = 0;
while (grWithGlideFilter.next()) {
if (GlideFilter.checkRecord(grWithGlideFilter, condition))
countWithGlideFilter++;
}
gs.info('Record RowCount: ' + now_GR.getRowCount() + ' - Filter Count: ' + countWithGlideFilter);A saída mostra que GlideRecord retorna três registros, ignorando valores de data vazios. A consulta GlideFilter conta o valor de data vazio e retorna uma contagem de quatro registros.Record RowCount: 3 - Filter Count: 4ANDISNOTEMPTY ao campo consultado.// Encoded query includes null values with GlideFilter
var condition = 'u_date_field<=javascript:gs.beginningOfToday()^u_date_fieldISNOTEMPTY';A saída mostra que a consulta codificada com GlideFilter ignora o valor de data nulo e conta três resultados.Record RowCount: 3 - Filter Count: 3GlideFilter – GlideFilter (filtro de cadeia de caracteres, título de cadeia de caracteres)
Instancia um objeto GlideFilter.
| Nome | Tipo | Descrição |
|---|---|---|
| filtros | Cadeia de caracteres | Cadeia de caracteres de consulta codificada no formato Glide padrão. Consulte Cadeias de caracteres de consulta codificadas. Os resultados fazem distinção entre maiúsculas e minúsculas, a menos que sejam desabilitados usando o método setCaseSensitive(). Para excluir valores nulos dos resultados da consulta GlideFilter, adicione ISNOTEMPTY à condição de consulta. |
| título | Cadeia de caracteres | Título descritivo do filtro. |
O exemplo a seguir mostra como filtrar o número de usuários chamados Rebekah.
var now_GR = new GlideRecord('sys_user');
now_GR.query();
var condition = 'first_name=rebekah';
var filter = new GlideFilter(condition, 'filterCondition');
filter.setCaseSensitive(false);
var countResults = 0;
while (now_GR.next()) {
if (filter.match(now_GR, true))
countResults++;
}
gs.info('Number of users named Rebekah: ' + countResults);
Number of users named Rebekah: 2GlideFilter - checkRecord (GlideRecord now_GR, filtro de cadeia de caracteres, correspondência booliana)
Compara um filtro especificado com o conteúdo de um GlideRecord especificado.
Se o filtro especificado contiver uma condição, o método retornará verdadeiro se o registro atender à condição.
Os filtros são compatíveis com várias condições, por exemplo, "active=true^number=abc^category=request". Você pode usar o parâmetro match para definir se todas as condições devem ser atendidas para determinar uma correspondência ou apenas uma única condição.
| Nome | Tipo | Descrição |
|---|---|---|
| now_GR | GlideRecord | GlideRecord a ser avaliado. |
| filtros | Cadeia de caracteres | Cadeia de caracteres de consulta codificada no formato Glide padrão. Consulte Cadeias de caracteres de consulta codificadas. Para excluir valores nulos dos resultados da consulta GlideFilter, adicione ISNOTEMPTY à condição de consulta. Nota: Os valores filter fazem distinção entre maiúsculas e minúsculas. Além disso, você não pode usar setCaseSensitive(false) para alterar o valor que diferencia maiúsculas de minúsculas. |
| correspondência | Booliano | Opcional. Sinalizador que indica se todas as condições devem ser atendidas se o parâmetro filter contiver várias condições. Valores válidos:
Padrão: verdadeiro |
| Tipo | Descrição |
|---|---|
| Booliano | Resultados da comparação de filtros.
|
O exemplo a seguir mostra como exibir verdadeiro para cada registro na tabela Incidente que atende à condição de filtro. Caso contrário, falso.
var rec = new GlideRecord('incident');
rec.query();
var bool = true;
while(rec.next())
{
bool = GlideFilter.checkRecord(rec, "active=true");
gs.info("number "+ rec.number + " is " + bool);
}
number INC0000060 is false
number INC0009002 is false
number INC0000009 is false
...
number INC0000015 is true
number INC0000016 is true
number INC0000017 is true
...GlideFilter - match(GlideRecord now_GR, correspondência booliana)
Avalia um filtro em relação a um GlideRecord especificado.
| Nome | Tipo | Descrição |
|---|---|---|
| now_GR | GlideRecord | GlideRecord a ser avaliado. |
| correspondência | Booliano | Sinalizador que indica se todas as condições de filtro devem corresponder. Valores válidos:
Padrão: falso |
| Tipo | Descrição |
|---|---|
| Booliano | Resultados da verificação de correspondência.
|
O exemplo a seguir mostra como garantir que as condições do filtro correspondam ao GlideRecord fornecido.
var now_GR = new GlideRecord('sys_user');
now_GR.query();
var condition = 'first_name=rebekah';
var filter = new GlideFilter(condition, 'filterCondition');
filter.setCaseSensitive(false);
var countResults = 0;
while (now_GR.next()) {
if (filter.match(now_GR, true))
countResults++;
}
gs.info('Number of users named Rebekah: ' + countResults);
Number of users named Rebekah: 2GlideFilter - setCaseSensitive (booliano caseSensitive)
Habilita ou desabilita os resultados do filtro que diferenciam maiúsculas de minúsculas.
| Nome | Tipo | Descrição |
|---|---|---|
| caseSensitive | Booliano | Sinalizador que indica se o filtro faz distinção entre maiúsculas e minúsculas. Valores válidos:
Padrão: verdadeiro |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
O exemplo a seguir mostra como desabilitar resultados que diferenciam maiúsculas de minúsculas.
var now_GR = new GlideRecord('sys_user');
now_GR.query();
var condition = 'first_name=rebekah';
var filter = new GlideFilter(condition, 'filterCondition');
// Disable case-sensitive filtering
filter.setCaseSensitive(false);
while (now_GR.next()) {
if (filter.match(now_GR, true))
gs.info(now_GR.getDisplayValue());
}
A saída mostra que o filtro recupera resultados em maiúsculas com uma condição em minúsculas.
Rebekah Padley
Rebekah Lindboe
GlideFilter - setEnforceSecurity(Booliano forceSecurity)
Habilita ou desabilita a avaliação na área restrita da cadeia de caracteres do filtro.
| Nome | Tipo | Descrição |
|---|---|---|
| imporSegurança | Booliano |
Sinalizador que indica se o filtro deve ser avaliado na área restrita. Valores válidos:
Padrão: falso |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
O exemplo de código a seguir mostra como chamar este método.
var now_GR = new GlideRecord('sys_user');
now_GR.query();
var condition = 'first_name=rebekah';
var filter = new GlideFilter(condition, 'filterCondition');
filter.setEnforceSecurity(true);
var countResults = 0;
while (now_GR.next()) {
if (filter.match(now_GR, true))
countResults++;
}
gs.info('Number of users named Rebekah: ' + countResults);
Saída:
Number of users named Rebekah: 2