GlideDBFunctionCaseBuilder : global

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 7 minutes de lecture
  • L’API GlideDBCaseStatementBuilder vous permet de créer des instructions SQL CASE et de renvoyer des valeurs en fonction d’une série de conditions.

    Vous pouvez utiliser cette API dans le cadre de la définition de l’API GlideElement : global ou lors de l’interrogation d’une table. Pour créer une instruction CASE, commencez par instancier l’objet GlideDBFunctionCaseBuilder à l’aide de son constructeur, GlideDBFunctionCaseBuilder(). Ensuite, définissez un ou plusieurs cas à l’aide d’une série d’appels when() et then() suivis d’un seul appel optionnel otherwise(). Enfin, appelez la méthode build() pour finaliser le générateur et produire l’instruction de ticket de fonction de base de données terminée. Cette instruction peut ensuite être utilisée directement ou dans le cadre d’autres définitions de fonctions Glide.

    Rôles requis : administrateur, function_field_admin.

    GlideDBFunctionCaseBuilder : GlideDBFunctionCaseBuilder()

    Instancie un objet GlideDBFunctionCaseBuilder.

    Tableau 1. Paramètres
    Nom Type Description
    Aucun

    Cet exemple instancie un objet GlideDBFunctionCaseBuilder.

    var caseBuilder = new GlideDBFunctionCaseBuilder();
    

    GlideDBFunctionCaseBuilder : build()

    Conclut la liste des conditions et génère l’instruction CASE finale.

    Tableau 2. Paramètres
    Nom Type Description
    Aucun
    Tableau 3. Renvoie
    Type Description
    chaîne Énoncé de ticket rempli.

    L’exemple suivant montre comment définir et construire une instruction de cas simple. En fonction de la valeur numérique du champ d’impact, il générera l’une des quatre chaînes différentes.

    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)]);
    }

    Sortie :

    *** 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 : autrement(exp. de chaîne)

    Facultatif. Après au moins une paire d’appels à when et then, l’appel à otherwise() vous permet de spécifier une valeur à afficher si aucune des expressions when n’est satisfaite.

    Tableau 4. Paramètres
    Nom Type Description
    Exp Chaîne Valeur à extraire. Il peut s’agir d’une constante, d’une référence à un champ ou d’une autre fonction Glide.
    Tableau 5. Renvoie
    Type Description
    Générateur de cas GlideDBFunctionCaseBuilder L’objet Fluent Builder pour continuer à construire l’instruction.

    L’exemple suivant montre comment définir et construire une instruction de cas simple.

    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)]);
    }

    Sortie :

    *** 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 - then(String exp)

    À la suite de n’importe quelle méthode when(),then() vous permet de spécifier une valeur à afficher si l’expression when() est satisfaite.

    Tableau 6. Paramètres
    Nom Type Description
    Exp Chaîne Valeur à extraire. Il peut s’agir d’une constante, d’une référence à un champ ou d’une autre fonction Glide.
    Tableau 7. Renvoie
    Type Description
    Générateur de cas GlideDBFunctionCaseBuilder L’objet Fluent Builder pour continuer à construire l’instruction.

    L’exemple suivant montre comment définir et construire une instruction de cas simple. Dans ce cas, les expressions then() montrent comment vous pouvez générer non seulement des chaînes, mais aussi les résultats d’autres fonctions glide telles que length(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)]);
    }

    Sortie :

    *** 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 : quand(String func)

    La plus polyvalente des expressions 'when' prises en charge, la méthode when() vous permet de fournir n’importe quelle fonction Glide à valeur booléenne comme condition à satisfaire.

    Tableau 8. Paramètres
    Nom Type Description
    Fonction Chaîne Fonction Glide qui génère un résultat à valeur booléenne lors de l’évaluation. Valeurs possibles :
    • glidefunction :compare
    • glidefunction :et
    • glidefunction :ou
    Tableau 9. Renvoie
    Type Description
    glideDBFunctionCaseBuilder L’objet pour continuer à construire l’instruction.

    L’exemple suivant montre comment définir et construire une instruction de cas simple. Dans ce cas, la méthode when() est utilisée pour spécifier des expressions de comparaison plus complexes. Si l’expression est évaluée comme vraie, la chaîne correspondante est renvoyée.

    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)]); 
    }

    Sortie :

    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(String exp1, String op, String exp2)

    Commence une condition de ticket de comparaison.

    Tableau 10. Paramètres
    Nom Type Description
    exp1 Chaîne Expression de comparaison à gauche. Il peut s’agir d’une constante, d’une référence à un champ ou d’une autre fonction Glide.
    Op Chaîne Opérateur de comparaison, entouré de guillemets.

    Valeurs valides :

    • "'='"
    • "'<'"
    • "'>'"
    • "'<='"
    • "'>='"
    exp2 Chaîne Expression de comparaison à droite. Il peut s’agir d’une constante, d’une référence à un champ ou d’une autre fonction Glide.
    Tableau 11. Renvoie
    Type Description
    Générateur de cas GlideDBFunctionCaseBuilder L’objet Function Builder pour continuer à construire l’instruction.

    L’exemple suivant montre comment définir et construire une instruction de cas simple. Dans ce cas, la méthode whenCompare() est utilisée pour comparer la valeur du champ d’impact à un nombre et générer une chaîne spécifiée s’ils correspondent.

    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)]);
    }

    Sortie :

    *** 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(String exp1, String exp2)

    Semblable à whenCompare(),whenEqual() est une méthode pratique pour vérifier l’égalité. Il est équivalent à whenCompare(leftExpression, '=', rightExpression).

    Tableau 12. Paramètres
    Nom Type Description
    exp1 Chaîne Expression de comparaison à gauche. Il peut s’agir d’une constante, d’une référence à un champ ou d’une autre fonction Glide.
    exp2 Chaîne Expression de comparaison à droite. Il peut s’agir d’une constante, d’une référence à un champ ou d’une autre fonction Glide.
    Tableau 13. Renvoie
    Type Description
    Générateur de cas GlideDBFunctionCaseBuilder L’objet Function Builder pour continuer à construire l’instruction.

    L’exemple suivant montre comment définir et construire une instruction de cas simple. Dans ce cas, la méthode whenEqual() est utilisée pour comparer la valeur du champ d’impact à un nombre et générer une chaîne spécifiée s’ils correspondent.

    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)]);
    }

    Sortie :

    *** 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