GlideDBFunctionCaseBuilder - Global

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 7 min. de leitura
  • A API GlideDBCaseStatementBuilder permite criar instruções SQL CASE e retornar valores com base em uma série de condições.

    Você pode usar esta API como parte da definição da API GlideElement - Global ou ao consultar uma tabela. Para criar uma instrução CASE, comece instanciando o objeto GlideDBFunctionCaseBuilder usando seu construtor, GlideDBFunctionCaseBuilder(). Em seguida, defina um ou mais casos usando uma série de chamadas " when()" e " then() " seguidas por uma única chamada "caso contrário" (opcional). Por fim, chame o método build() para finalizar o construtor e produzir a declaração de caso de função de banco de dados concluída. Esta declaração pode ser usada diretamente ou como parte de outras definições de função do Glide.

    Funções necessárias: administrador, function_field_admin.

    GlideDBFunctionCaseBuilder - GlideDBFunctionCaseBuilder()

    Instancia um objeto GlideDBFunctionCaseBuilder.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    Nenhum(a)

    Este exemplo instancia um objeto GlideDBFunctionCaseBuilder.

    var caseBuilder = new GlideDBFunctionCaseBuilder();
    

    GlideDBFunctionCaseBuilder - build()

    Conclui a lista de condições e cria a declaração CASE final.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 3. Retorna
    Tipo Descrição
    Cadeia de caracteres A declaração de caso concluída.

    O exemplo a seguir mostra como definir e criar uma declaração de caso simples. Dependendo do valor numérico do campo de impacto, ele gerará uma de quatro cadeias de caracteres diferentes.

    const caseStatement = new GlideDBFunctionCaseBuilder()
        .whenCompare("impact", "'='", "'1'").then("'CRITICAL'")
        .whenCompare("impact", "'='", "'2'").then("'URGENT'")
        .whenCompare("impact", "'='", "'3'").then("'IMPORTANT'")
        .otherwise("'NOT IMPORTANT'")
        .build();
    
    const gr_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement);
    gr_incident.setLimit(10);
    gr_incident.query();
    while(gr_incident.next())  {
        gs.info("impact: {0}  case: {1}",
                [gr_incident.impact, gr_incident.getValue(caseStatement)]);
    }

    Saída:

    *** Script: impact: 2  case: URGENT
    *** Script: impact: 2  case: URGENT
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 2  case: URGENT
    *** Script: impact: 2  case: URGENT
    *** Script: impact: 3  case: IMPORTANT
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 3  case: IMPORTANT
    *** Script: impact: 3  case: IMPORTANT

    GlideDBFunctionCaseBuilder - caso contrário (cadeia de caracteres exp)

    Opcional. Após pelo menos um par de chamadas para quando e então, a chamada de outro modo () permite que você especifique um valor a ser gerado se nenhuma das expressões quando for atendida.

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    exp Cadeia de caracteres Valor para saída. Pode ser uma constante, uma referência a um campo ou outra função do Glide.
    Tabela 5. Retorna
    Tipo Descrição
    GlideDBFunctionCaseBuilder O objeto do construtor fluente para continuar criando a declaração.

    O exemplo a seguir mostra como definir e criar uma declaração de caso simples.

    const caseStatement = new GlideDBCaseFunctionBuilder()
        .whenEqual("impact", "'1'").then("'CRITICAL'") 
        .whenEqual("impact", "'2'").then("category")
        .whenEqual("impact", "'3'").then("length(short_description)")
        .otherwise("'NOT IMPORTANT'")
        .build();
    
    const gr_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement);
    gr_incident.setLimit(10);
    gr_incident.query();
    while(gr_incident.next())  {
          gs.info("impact: {0}  case: {1}",
                  [gr_incident.impact, gr_incident.getValue(caseStatement)]);
    }

    Saída:

    *** Script: impact: 2  case: inquiry
    *** Script: impact: 2  case: Hardware
    *** Script: impact: 1  case:  CRITICAL
    *** Script: impact: 2  case: database
    *** Script: impact: 2  case: inquiry
    *** Script: impact: 3  case: 28
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 3  case: 17
    *** Script: impact: 3  case: 29

    GlideDBFunctionCaseBuilder - então (cadeia de caracteres exp)

    Seguindo qualquer método quando(), então() permite que você especifique um valor a ser gerado se a expressão quando() for atendida.

    Tabela 6. Parâmetros
    Nome Tipo Descrição
    exp Cadeia de caracteres Valor para saída. Pode ser uma constante, referência a um campo ou outra função do Glide.
    Tabela 7. Retorna
    Tipo Descrição
    GlideDBFunctionCaseBuilder O objeto do construtor fluente para continuar criando a declaração.

    O exemplo a seguir mostra como definir e criar uma declaração de caso simples. Nesse caso, as expressões " then() " mostram como você pode gerar não apenas cadeias de caracteres, mas também os resultados de outras funções do glide, como o comprimento (short_description).

    const caseStatement = new GlideDBCaseFunctionBuilder()
        .whenEqual("impact", "'1'").then("'CRITICAL'") 
        .whenEqual("impact", "'2'").then("category")
        .whenEqual("impact", "'3'").then("length(short_description)")
        .otherwise("'NOT IMPORTANT'")
        .build();
    
    const gr_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement);
    gr_incident.setLimit(10);
    gr_incident.query();
    while(gr_incident.next())  {
          gs.info("impact: {0}  case: {1}",
                  [gr_incident.impact, gr_incident.getValue(caseStatement)]);
    }

    Saída:

    *** Script: impact: 2  case: inquiry
    *** Script: impact: 2  case: Hardware
    *** Script: impact: 1  case:  CRITICAL
    *** Script: impact: 2  case: database
    *** Script: impact: 2  case: inquiry
    *** Script: impact: 3  case: 28
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 3  case: 17
    *** Script: impact: 3  case: 29

    GlideDBFunctionCaseBuilder – quando (função de cadeia de caracteres)

    A mais versátil das expressões "when" compatíveis, o métodowhen() permite que você forneça qualquer função Glide com valor booliano como a condição a ser atendida.

    Tabela 8. Parâmetros
    Nome Tipo Descrição
    função Cadeia de caracteres Uma função do Glide que resulta em um resultado de valor booliano quando avaliada. Valores possíveis:
    • glidefunction: comparar
    • glidefunction:e
    • glidefunction:ou
    Tabela 9. Retorna
    Tipo Descrição
    glideDBFunctionCaseBuilder O objeto para continuar criando a declaração.

    O exemplo a seguir mostra como definir e criar uma declaração de caso simples. Nesse caso, o método quando() é usado para especificar expressões de comparação mais complexas. Se a expressão for avaliada como verdadeira, a cadeia de caracteres correspondente será retornada.

    const caseStatement = new GlideDBFunctionCaseBuilder() 
        // if impact == 1 AND category == 'Software' then output "CRITICAL SOFTWARE" 
        .when("and(compare(impact, '=', '1'), compare(category, '=',  
    'Software')") 
            .then("'CRITICAL SOFTWARE'") 
        // if impact == 1 then output "CRITICAL OTHER" 
        .when("compare(impact, '=', '1')") 
            .then("'CRITICAL OTHER'") 
        // if impact == 2 OR category == 'Software' then output "URGENT" 
        .when("or(compare(impact, '=', '2'), compare(category, '=', 'Software')") 
            .then("'URGENT'") 
        // If none of the above expressions are true, output "NOT IMPORTANT" 
        .otherwise("'NOT IMPORTANT'") 
        .build(); 
     
    const gr_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement); 
    gr_incident.setLimit(20); 
    gr_incident.query(); 
    while(gr_incident.next())  { 
          gs.info("impact: {0}  category: {1}  case: {2}", 
                [gr_incident.impact, gr_incident.category, gr_incident.getValue(caseStatement)]); 
    }

    Saída:

    impact: 2  category: inquiry  case: URGENT
    impact: 2  category: Hardware  case: URGENT
    impact: 1  category: inquiry  case:  CRITICAL OTHER
    impact: 2  category: database  case: URGENT
    impact: 2  category: inquiry  case: URGENT
    impact: 3  category: software  case: URGENT
    impact: 1  category: inquiry  case: CRITICAL OTHER
    impact: 1  category: inquiry  case: CRITICAL OTHER
    impact: 3  category: inquiry  case: NOT IMPORTANT
    impact: 3  category: inquiry  case: NOT IMPORTANT
    impact: 3  category: hardware  case: NOT IMPORTANT
    impact: 3  category: inquiry  case: NOT IMPORTANT
    impact: 3  category: hardware  case: NOT IMPORTANT
    impact: 3  category: inquiry  case: NOT IMPORTANT
    impact: 1  category: inquiry  case: CRITICAL OTHER
    impact: 1  category: software  case: CRITICAL SOFTWARE
    impact: 3  category: inquiry  case: NOT IMPORTANT
    impact: 3  category: inquiry  case: NOT IMPORTANT
    impact: 2  category: software  case: URGENT
    impact: 1  category: software  case: CRITICAL SOFTWARE

    GlideDBFunctionCaseBuilder -whenCompare(cadeia de caracteres exp1, cadeia de caracteres op, cadeia de caracteres exp2)

    Inicia uma condição de caso de comparação.

    Tabela 10. Parâmetros
    Nome Tipo Descrição
    exp1 Cadeia de caracteres Expressão de comparação à esquerda. Pode ser uma constante, referência a um campo ou outra função do Glide.
    op Cadeia de caracteres Operador de comparação entre aspas.

    Valores válidos:

    • "'='"
    • "'<'"
    • "'>'"
    • "'<='"
    • "'>='"
    exp2 Cadeia de caracteres Expressão de comparação à direita. Pode ser uma constante, referência a um campo ou outra função do Glide.
    Tabela 11. Retorna
    Tipo Descrição
    GlideDBFunctionCaseBuilder O objeto do construtor de funções para continuar criando a declaração.

    O exemplo a seguir mostra como definir e criar uma declaração de caso simples. Nesse caso, o métodowhenCompare() é usado para comparar o valor do campo de impacto com um número e gerar uma cadeia de caracteres especificada se eles corresponderem.

    const caseStatement = new GlideDBFunctionCaseBuilder()
        .whenCompare("impact", "'='", "'1'").then("'CRITICAL'")
        .whenCompare("impact", "'='", "'2'").then("URGENT")
        .whenCompare("impact", "'='", "'3'").then("IMPORTANT")
        .otherwise("'NOT IMPORTANT'")
        .build();
    
    const gr_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement);
    gr_incident.setLimit(10);
    gr_incident.query();
    while(gr_incident.next()) {
        gs.info("impact: {0} case: {1}",
                [gr_incident.impact, gr_incident.getValue(caseStatement)]);
    }

    Saída:

    *** Script: impact: 2  case: URGENT
    *** Script: impact: 2  case: URGENT
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 2  case: URGENT
    *** Script: impact: 2  case: URGENT
    *** Script: impact: 3  case: IMPORTANT
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 3  case: IMPORTANT
    *** Script: impact: 3  case: IMPORTANT
    

    GlideDBFunctionCaseBuilder -whenEqual(cadeia de caracteres exp1, cadeia de caracteres exp2)

    Semelhante a quandoCompare(), quandoEqual() é um método conveniente para verificar a igualdade. É equivalente awhenCompare(leftExpression, '=', rightExpression).

    Tabela 12. Parâmetros
    Nome Tipo Descrição
    exp1 Cadeia de caracteres Expressão de comparação à esquerda. Pode ser uma constante, uma referência a um campo ou outra função do Glide.
    exp2 Cadeia de caracteres Expressão de comparação à direita. Pode ser uma constante, uma referência a um campo ou outra função do Glide.
    Tabela 13. Retorna
    Tipo Descrição
    GlideDBFunctionCaseBuilder O objeto do construtor de funções para continuar criando a declaração.

    O exemplo a seguir mostra como definir e criar uma declaração de caso simples. Nesse caso, o métodowhenEqual() é usado para comparar o valor do campo de impacto com um número e gerar uma cadeia de caracteres especificada se eles corresponderem.

    const caseStatement = new GlideDBFunctionCaseBuilder()
        .whenEqual("impact", "'1'").then("'CRITICAL'")
        .whenEqual("impact", "'2'").then("'URGENT'")
        .whenEqual("impact", "'3'").then("'IMPORTANT'")
        .otherwise("'NOT IMPORTANT'")
        .build();
    
    const gr_incident = new GlideRecord("incident");
    gr_incident.addFunction(caseStatement);
    gr_incident.setLimit(10);
    gr_incident.query();
    while(gr_incident.next())  {
        gs.info("impact: {0}  case: {1}",
                [gr_incident.impact, gr_incident.getValue(caseStatement)]);
    }

    Saída:

    *** Script: impact: 2  case: URGENT
    *** Script: impact: 2  case: URGENT
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 2  case: URGENT
    *** Script: impact: 2  case: URGENT
    *** Script: impact: 3  case: IMPORTANT
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 1  case: CRITICAL
    *** Script: impact: 3  case: IMPORTANT
    *** Script: impact: 3  case: IMPORTANT