GlideDBFunctionBuilder - Inclus dans le champ d’application, global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 14 minutes de lecture
  • L’API GlideDBFunctionBuilder fournit des méthodes permettant de générer des fonctions pour effectuer des opérations SQL dans la base de données.

    Les méthodes GlideDBFunctionBuilder fournissent un moyen de générer des fonctions RDBMS (Relational Database Management System) pour effectuer des opérations SQL sur les données d’enregistrement. Vous pouvez utiliser ces méthodes dans les scripts de serveur inclus dans le champ d’application et globaux.

    Pour utiliser les fonctions de la plateforme :
    • Construisez une fonction à l’aide du constructeur GlideDBFunctionBuilder et des méthodes associées.
    • Après avoir créé une fonction, vous l’appliquez à l’enregistrement actuel à l’aide de la méthode addFunction() de la classe GlideRecord .
    • Ajoutez la fonction à une requête à l’aide de la méthode addQuery() de la classe GlideRecord .
    • Récupérez les résultats de la fonction à l’aide des méthodes API GlideRecord existantes telles que getValue() et getElement().

    Par exemple :

    var functionBuilder = new GlideDBFunctionBuilder();
    var dbFunction = functionBuilder.position();
    dbFunction = functionBuilder.constant('my'); // search_term: Text to search for in the specified table column.
    dbFunction = functionBuilder.field('short_description');  // column: Name of the table column to search.
    dbFunction = functionBuilder.build();
    
    gs.log(dbFunction);
    
    var gr_incident = new GlideRecord('incident'); // Table containing the column to search
    gr_incident.addFunction(dbFunction);
    gr_incident.addQuery("short_description", "CONTAINS", "my");
    gr_incident.setLimit(20);
    gr_incident.query();
    while(gr_incident.next()) {
      gs.info(gr_incident.short_description + "\n position('my', short_description): " + gr_incident.getValue(dbFunction));
    }

    Pour plus d’informations sur les champs de fonction, reportez-vous à Function field.

    GlideDBFunctionBuilder inclus dans le périmètre : GlideDBFunctionBuilder()

    Instancie un objet GlideDBFunctionBuilder.

    Tableau 1. Paramètres
    Nom Type Description
    Néant
    var builder = new GlideDBFunctionBuilder();
    

    GlideDBFunctionBuilder inclus dans le champ d’application - andFunc(expr1, expr2, ...)

    Commence une nouvelle expression ET, qui renvoie true uniquement si toutes les expressions qui lui sont fournies en tant que paramètres sont true. Au moins une expression à valeurs booléennes doit être fournie en tant que paramètre.

    Tableau 2. Paramètres
    Nom Type Description
    expression Expression GlideFunction à valeur booléenne À l’heure actuelle, les fonctions glide qui répondent à ce critère incluent and(),or() et compare().
    Tableau 3. Renvoie
    Type Description
    Chaîne L’expression GlideFunction résultante.

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

    var expr = new GlideDBFunctionBuilder() 
        .andFunc() 
            .compare().field('first_name').constant('=').constant('John').endfunc() 
            .compare().field('active').constant('=').constant(1).endfunc() 
        .endfunc() 
        .build(); 
    gs.info("Expression: " + expr);

    Sortie :

    Expression: glidefunction:and(compare(first_name,'=','John'),compare(active,'=','1'))

    GlideDBFunctionBuilder inclus dans le champ d’application : add()

    Ajoute les valeurs de deux champs entiers ou plus.

    Utilisez la méthode field (champ String) pour définir les champs sur lesquels l’opération est effectuée.

    Tableau 4. Paramètres
    Nom Type Description
    Aucun
    Tableau 5. Renvoie
    Type Description
    nul
    var functionBuilder = new GlideDBFunctionBuilder();
    var myAddingFunction = functionBuilder.add();
    myAddingFunction = functionBuilder.field('order');
    myAddingFunction = functionBuilder.field('priority');
    myAddingFunction = functionBuilder.build();

    GlideDBFunctionBuilder inclus dans le champ d’application : build()

    Génère la fonction de base de données définie par l’objet GlideDBFunctionBuilder.

    Tableau 6. Paramètres
    Nom Type Description
    Aucun
    Tableau 7. Renvoie
    Type Description
    nul
    var functionBuilder = new GlideDBFunctionBuilder();
    var myAddingFunction = functionBuilder.add();
    myAddingFunction = functionBuilder.field('order');
    myAddingFunction = functionBuilder.field('priority');
    myAddingFunction = functionBuilder.build();
    gs.info(myAddingFunction);
    Sortie :
    *** Script: glidefunction:add(order,priority)

    GlideDBFunctionBuilder inclus dans le périmètre : coalesce()

    Utilise un nombre quelconque de champs séparés par des virgules comme entrée et renvoie la première valeur non vide.

    Tableau 8. Paramètres
    Nom Type Description
    Argument Chaîne Liste contenant une valeur constante (chaînes, objets, booléens) ou un champ. Format accepté : glidefunction :coalesce(<string, string, string, etc.>). Un argument peut avoir n’importe quel nombre de paramètres, mais doit avoir au moins un paramètre défini.
    Tableau 9. Renvoie
    Type Description
    Chaîne La première valeur de la liste d’arguments qui n’est pas nulle. Si aucune valeur n’est différente, la valeur null est renvoyée. Si aucun argument n’est fourni lors de la création de l’objet fonction, « fonction non valide » est renvoyée sous forme de chaîne.

    L’exemple de demande suivant montre comment former la fonction guide de coalescence pour renvoyer des valeurs nulles en fonction des champs closed_at, resolved_at et sys_updated_on.

    var gr = new GlideRecord('incident');
    var func = "glidefunction:coalesce(closed_at, resolved_at,sys_updated_on)";
    gr.addFunction(func);
    gr.query(); 
    while(gr.next())
    gs.info(gr.getValue(func));

    Le script renvoie la première valeur non nulle d’un champ de cette liste : [closed_at, resolved_at, sys_updated_on] pour chaque enregistrement d’incident de la table d’incidents et génère gs.info.

    2016-12-14 02:46:44
    2018-01-09 22:55:16
    2018-01-07 22:54:55
    2018-01-13 23:02:54
    2018-01-09 23:12:02

    GlideDBFunctionBuilder inclus dans le champ d’application : compare(exp1, op, exp2)

    Commence une nouvelle expression COMPARE qui effectue une comparaison entre deux expressions.

    Tableau 10. Paramètres
    Nom Type Description
    exp1 Chaîne Expression de comparaison à gauche. Peut être une constante, une référence à un champ ou une autre fonction Glide.
    Op Chaîne Un opérateur de comparaison, entouré de guillemets. Valeurs acceptées :
    • "'='"
    • "'<'"
    • "'>'"
    • "'<='"
    • "'>='"
    exp2 Chaîne Expression de comparaison correcte. Peut être une constante, une référence à un champ ou une autre fonction Glide.
    Tableau 11. Renvoie
    Type Description
    Chaîne L’expression GlideFunction résultante.

    L’exemple suivant montre comment construire une expression glidefunction à l’aide de l’opération compare(). Après avoir appelé compare(), trois appels supplémentaires doivent être effectués pour spécifier chacun des trois paramètres requis, qui sont ensuite complétés par un seul appel à endfun(). Ci-dessous, nous créons deux expressions compare() distinctes et les fournissons comme paramètres à l’expression or().

    var expr = new GlideDBFunctionBuilder() 
        .orFunc() 
            .compare().field('first_name').constant('=').constant('John').endfunc() 
            .compare().field('active').constant('=').constant(1).endfunc() 
        .endfunc() 
        .build();

    Sortie :

    Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))

    GlideDBFunctionBuilder inclus dans le champ d’application : concat()

    Concatène les valeurs de deux champs ou plus.

    Utilisez la méthode field (champ String) pour définir les champs sur lesquels l’opération est effectuée.

    Tableau 12. Paramètres
    Nom Type Description
    Aucun
    Tableau 13. Renvoie
    Type Description
    nul
    var functionBuilder = new GlideDBFunctionBuilder();
    var myConcatFunction = functionBuilder.concat();
    myConcatFunction = functionBuilder.field('short_description');
    myConcatFunction = functionBuilder.field('caller_id.name');
    myConcatFunction = functionBuilder.build();

    GlideDBFunctionBuilder inclus dans le champ d’application : constant(constante de chaîne)

    Définit une valeur constante à utiliser dans la fonction. Si elle est utilisée avec la méthode dayofweek(), la chaîne définit s’il faut utiliser le dimanche ou le lundi comme premier jour de la semaine.

    Tableau 14. Paramètres
    Nom Type Description
    Constante Chaîne Valeur constante utilisée dans une fonction.

    Lorsqu’elle est utilisée avec la méthode dayofweek(), la valeur définit si la semaine commence un dimanche ou un lundi.

    • 1 : La semaine commence le dimanche.
    • 2 : La semaine commence le lundi.

    Cette définition permet à la méthode dayofweek() de renvoyer le jour correct de la semaine à partir d’une date donnée. Si une valeur autre que 1 ou 2 est fournie, la méthode dayofweek() utilise le dimanche comme premier jour de la semaine.

    Tableau 15. Renvoie
    Type Description
    nul

    L’exemple de code suivant montre comment appeler cette méthode.

    var functionBuilder = new GlideDBFunctionBuilder();
    var dbFunction = functionBuilder.position();
    dbFunction = functionBuilder.constant('my');
    dbFunction = functionBuilder.field('short_description');
    dbFunction = functionBuilder.build();
    
    gs.log(dbFunction);
    
    var g = new GlideRecord('incident');
    g.addFunction(dbFunction);
    g.addQuery("short_description", "CONTAINS", "my");
    g.setLimit(20);
    g.query();
    while(g.next()) {
      gs.info(g.short_description + "\n position('my', short_description): " + g.getValue(dbFunction));
    }

    GlideDBFunctionBuilder inclus dans le champ d’application : datediff()

    Détermine la durée à l’aide d’une date/heure de début et d’une date/heure de fin données.

    Utilisez la méthode field (champ de chaîne) pour définir les champs de date/heure de début et de fin.

    Tableau 16. Paramètres
    Nom Type Description
    Aucun
    Tableau 17. Renvoie
    Type Description
    nul
    var functionBuilder = new GlideDBFunctionBuilder();
    var myDateDiffFunction = functionBuilder.datediff();
    myDateDiffFunction = functionBuilder.field('sys_updated_on');
    myDateDiffFunction = functionBuilder.field('opened_at');
    myDateDiffFunction = functionBuilder.build();

    GlideDBFunctionBuilder inclus dans l’étendue : dayofweek()

    Renvoie un nombre entier représentant le jour de la semaine pour une date donnée.

    Utilisez la méthode field (champ de chaîne) pour définir la date/heure donnée. Utilisez la méthode constant(String constant) pour définir si la semaine commence un dimanche ou un lundi.

    Cette méthode ne peut être utilisée qu’avec les bases de données MySQL, Oracle et Microsoft SQL Server. Si vous utilisez une base de données Oracle, le paramètre de NLS_TERRITORY doit être défini sur un territoire dont le premier jour de la semaine est le dimanche.

    Tableau 18. Paramètres
    Nom Type Description
    Aucun
    Tableau 19. Renvoie
    Type Description
    Entier

    Si le premier jour de la semaine est défini sur le dimanche dans la méthode constante(String constant), les valeurs de retour sont associées aux jours suivants de la semaine :

    • 1 : Dimanche
    • 2 : Lundi
    • 3 : Mardi
    • 4 : Mercredi
    • 5 : Jeudi
    • 6 : Vendredi
    • 7 : Samedi

    Si le premier jour de la semaine est défini sur le lundi :

    • 1 : Lundi
    • 2 : Mardi
    • 3 : Mercredi
    • 4 : Jeudi
    • 5 : Vendredi
    • 6 : Samedi
    • 7 : Dimanche

    Si une valeur autre que 1 ou 2 est fournie dans la méthode constant(String constant), la méthode dayofweek() utilise le dimanche comme premier jour de la semaine.

    var functionBuilder = new GlideDBFunctionBuilder();
    var dayOfWeekFunction = functionBuilder.dayofweek();
    dayOfWeekFunction = functionBuilder.field('opened_at');
    dayOfWeekFunction = functionBuilder.constant('2');
    dayOfWeekFunction = functionBuilder.build();
    
    var now_GR = new GlideRecord('incident');
    now_GR.addFunction(dayOfWeekFunction);
    now_GR.query();
    while(now_GR.next())
    gs.log(now_GR.getValue(dayOfWeekFunction));
    

    GlideDBFunctionBuilder inclus dans le champ d’application : divide()

    Divise la valeur d’un champ entier par un autre.

    Utilisez la méthode field (champ String) pour définir les champs sur lesquels l’opération est effectuée.

    Tableau 20. Paramètres
    Nom Type Description
    Aucun
    Tableau 21. Renvoie
    Type Description
    nul
    var functionBuilder = new GlideDBFunctionBuilder();
    var myDivideFunction = functionBuilder.divide();
    myDivideFunction = functionBuilder.field('order');
    myDivideFunction = functionBuilder.field('priority');
    myDivideFunction = functionBuilder.build();

    GlideDBFunctionBuilder inclus dans le champ d’application : champ (champ de chaîne)

    Définit un champ sur lequel une opération SQL est effectuée.

    Tableau 22. Paramètres
    Nom Type Description
    champ Chaîne Champ sur lequel vous effectuez l’opération SQL.
    Tableau 23. Renvoie
    Type Description
    nul
    var functionBuilder = new GlideDBFunctionBuilder();
    var myAddingFunction = functionBuilder.add();
    myAddingFunction = functionBuilder.field('order');
    myAddingFunction = functionBuilder.field('priority');
    myAddingFunction = functionBuilder.build();

    GlideDBFunctionBuilder inclus dans le champ d’application : length()

    Détermine le nombre d’unités de code dans un champ.

    Utilisez la méthode field (champ String) pour définir les champs sur lesquels l’opération est effectuée.

    Tableau 24. Paramètres
    Nom Type Description
    Aucun
    Tableau 25. Renvoie
    Type Description
    nul
    var functionBuilder = new GlideDBFunctionBuilder();
    var myLengthFunction = functionBuilder.length();
    myLengthFunction = functionBuilder.field('short_description');
    myLengthFunction = functionBuilder.build();
    

    GlideDBFunctionBuilder inclus dans le champ d’application : multiply()

    Multiplie les valeurs de deux champs de nombre entier.

    Utilisez la méthode field (champ String) pour définir les champs sur lesquels l’opération est effectuée.

    Tableau 26. Paramètres
    Nom Type Description
    Aucun
    Tableau 27. Renvoie
    Type Description
    nul
    var functionBuilder = new GlideDBFunctionBuilder();
    var myMultiplyFunction = functionBuilder.multiply();
    myMultiplyFunction = functionBuilder.field('order');
    myMultiplyFunction = functionBuilder.field('priority');
    myMultiplyFunction = functionBuilder.build();

    GlideDBFunctionBuilder inclus dans le périmètre : orFunc(expression)

    Commence une nouvelle expression OR qui renvoie true si au moins une des expressions qui lui sont fournies en tant que paramètre est true.

    Au moins une expression à valeurs booléennes doit être fournie en tant que paramètre.

    Tableau 28. Paramètres
    Nom Type Description
    expression Expression GlideFunction à valeur booléenne À l’heure actuelle, les fonctions Glide qui répondent à ce critère incluent and(), or() et compare().
    Tableau 29. Renvoie
    Type Description
    Chaîne L’expression GlideFunction résultante.

    L’exemple suivant montre comment construire une expression glidefunction à l’aide de l’opération or(). L’expression renvoie la valeur true si le first_name champ est « John » ou si le active champ est vrai. La chaîne d’expression résultante peut ensuite être utilisée partout où les expressions glidefunction sont acceptées.

    var expr = new GlideDBFunctionBuilder() 
        .orFunc() 
            .compare().field('first_name').constant('=').constant('John').endfunc() 
            .compare().field('active').constant('=').constant(1).endfunc() 
        .endfunc() 
        .build(); 
    gs.info("Expression: " + expr);

    Sortie :

    Expression: glidefunction:or(compare(first_name,'=','John'),compare(active,'=','1'))

    GlideDBFunctionBuilder inclus dans le champ d’application : position()

    Renvoie la première occurrence d’une chaîne spécifiée dans une colonne d’une table.

    Si vous le souhaitez, vous pouvez spécifier un emplacement dans la chaîne pour démarrer la recherche. Cette méthode équivaut à LOCATE(sous-chaîne, str, position) dans MySQL.

    Vous pouvez utiliser cette méthode pour trouver des points de données intéressants ou des rapports personnalisés par des analystes de données. En règle générale, vous utiliserez cette méthode pour l’entreposage de données ou pour extraire, transformer et charger des données (ETL) dans des systèmes moins flexibles.

    Pour utiliser cette méthode dans les enregistrements de dictionnaire, utilisez glidefunction :position(<serarch_term>,<column>).

    Remarque :
    Les paramètres spécifiés dans le tableau suivant ne sont pas transmis avec l’appel de méthode, mais sont plutôt définis dans l’objet GlideDBFunctionBuilder().
    Tableau 30. Paramètres
    Nom Type Description
    search_term Chaîne Texte à rechercher dans la colonne de table spécifiée.
    Colonne Chaîne Nom de la colonne de table à rechercher. La table est spécifiée dans l’objet GlideRecord associé.
    start_position Numéro Facultatif. Emplacement dans le texte de la colonne pour lancer la recherche.

    Valeur par défaut : 1

    Tableau 31. Renvoie
    Type Description
    Néant Position de la première occurrence du terme de recherche spécifié.

    Renvoie la valeur 0 si le terme recherché est introuvable dans le texte associé. Renvoie la valeur NULL si un argument requis est NULL.

    L’exemple de code suivant montre comment appeler cette méthode.

    var functionBuilder = new GlideDBFunctionBuilder();
    var dbFunction = functionBuilder.position();
    dbFunction = functionBuilder.constant('my'); // search_term: Text to search for in the specified table column.
    dbFunction = functionBuilder.field('short_description');  // column: Name of the table column to search.
    dbFunction = functionBuilder.build();
    
    gs.log(dbFunction);
    
    var gr_incident = new GlideRecord('incident'); // Table containing the column to search
    gr_incident.addFunction(dbFunction);
    gr_incident.addQuery("short_description", "CONTAINS", "my");
    gr_incident.setLimit(20);
    gr_incident.query();
    while(gr_incident.next()) {
      gs.info(gr_incident.short_description + "\n position('my', short_description): " + gr_incident.getValue(dbFunction));
    }

    Sortie :

    *** Script: glidefunction:position('my',short_description)
    *** Script: Wireless access is down in my area
     position('my', short_description): 28
    *** Script: Printer in my office is out of toner
     position('my', short_description): 12
    *** Script: Reset my password
     position('my', short_description): 7
    *** Script: I can't launch my VPN client since the last software update
     position('my', short_description): 16
    *** Script: Missing my home directory
     position('my', short_description): 9
    *** Script: Seem to have an issue with my hard drive...
     position('my', short_description): 28
    *** Script: Please remove the latest hotfix from my PC
     position('my', short_description): 38
    *** Script: I can't get my weather report
     position('my', short_description): 13
    *** Script: Reset my password
     position('my', short_description): 7
    *** Script: my PDF docs are all locked from editing
     position('my', short_description): 1
    *** Script: My desk phone does not work
     position('my', short_description): 1
    *** Script: Can't log into SAP from my laptop today
     position('my', short_description): 25
    *** Script: My computer is not detecting the headphone device
     position('my', short_description): 1
    *** Script: My disk is still having issues. Can't delete a file
     position('my', short_description): 1
    *** Script: The USB port on my PC stopped working
     position('my', short_description): 17

    GlideDBFunctionBuilder inclus dans le champ d’application - subtract()

    Soustrait la valeur d’un champ entier d’un autre.

    Utilisez la méthode field (champ String) pour définir les champs sur lesquels l’opération est effectuée.

    Tableau 32. Paramètres
    Nom Type Description
    Aucun
    Tableau 33. Renvoie
    Type Description
    nul
    var functionBuilder = new GlideDBFunctionBuilder();
    var mySubtractFunction = functionBuilder.subtract();
    mySubtractFunction = functionBuilder.field('order');
    mySubtractFunction = functionBuilder.field('priority');
    mySubtractFunction = functionBuilder.build();

    GlideDBFunctionBuilder inclus dans le champ d’application : substring()

    Renvoie une sous-chaîne d’une colonne spécifiée d’une table commençant à un emplacement spécifié.

    Si vous le souhaitez, vous pouvez également spécifier un emplacement dans la chaîne où arrêter l’extraction de texte. Cette méthode équivaut à LOCATE(sous-chaîne, str, position) dans MySQL.

    Cette méthode fonctionne de la même manière que JavaScript, mais au niveau de la base de données. Vous pouvez utiliser cette méthode pour trouver des points de données intéressants ou des rapports personnalisés pour les analystes de données. En règle générale, vous utiliserez cette méthode pour l’entreposage de données ou pour extraire, transformer et charger des données (ETL) dans des systèmes moins flexibles.

    Pour utiliser cette méthode dans les enregistrements de dictionnaire, utilisez glidefunction :substring(<field>,<start_position>,<end_position>)

    Remarque :
    Les paramètres spécifiés dans le tableau suivant ne sont pas transmis avec l’appel de méthode, mais sont plutôt définis dans l’objet GlideDBFunctionBuilder().
    Tableau 34. Paramètres
    Nom Type Description
    champ Chaîne Nom de colonne de la table à partir de laquelle obtenir le texte. La table est spécifiée dans l’objet GlideRecord associé.
    start_position Numéro Emplacement dans la colonne Texte pour commencer l’extraction du texte.
    end_position Numéro Facultatif. Emplacement dans la colonne de texte pour arrêter l’extraction de texte.

    Par défaut : fin du texte dans la colonne spécifiée.

    Tableau 35. Renvoie
    Type Description
    Chaîne Texte extrait de la colonne de table spécifiée.

    L’exemple de code suivant montre comment appeler cette méthode.

    var functionBuilder = new GlideDBFunctionBuilder();
    var dbFunction = functionBuilder.substring();
    dbFunction = functionBuilder.field('short_description');  // field: Column within the table to obtain the substring
    dbFunction = functionBuilder.constant(0); // start_position: Location in the column text to start extracting text
    dbFunction = functionBuilder.constant(20); // end_position: Location in the column text to stop extracting text.
    dbFunction = functionBuilder.build();
    
    gs.log(dbFunction);
    
    var gr_incident = new GlideRecord('incident'); // Table containing the column from which to extract the text
    gr_incident.addFunction(dbFunction);
    gr_incident.addQuery("short_description", "CONTAINS", "my");
    gr_incident.setLimit(20);
    gr_incident.query();
    while(gr_incident.next()) {
      gs.info(gr_incident.short_description + "\n substring(short_description, 0, 20): " + gr_incident.getValue(dbFunction));
    }

    Sortie :

    *** Script: glidefunction:substring(short_description,'0','20')
    *** Script: Wireless access is down in my area
     substring(short_description, 0, 20): Wireless access is 
    *** Script: Printer in my office is out of toner
     substring(short_description, 0, 20): Printer in my offic
    *** Script: Reset my password
     substring(short_description, 0, 20): Reset my password
    *** Script: I can't launch my VPN client since the last software update
     substring(short_description, 0, 20): I can't launch my V
    *** Script: Missing my home directory
     substring(short_description, 0, 20): Missing my home dir
    *** Script: Seem to have an issue with my hard drive...
     substring(short_description, 0, 20): Seem to have an iss
    *** Script: Please remove the latest hotfix from my PC
     substring(short_description, 0, 20): Please remove the l
    *** Script: I can't get my weather report
     substring(short_description, 0, 20): I can't get my weat
    *** Script: Reset my password
     substring(short_description, 0, 20): Reset my password
    *** Script: my PDF docs are all locked from editing
     substring(short_description, 0, 20): my PDF docs are all
    *** Script: My desk phone does not work
     substring(short_description, 0, 20): My desk phone does 
    *** Script: Can't log into SAP from my laptop today
     substring(short_description, 0, 20): Can't log into SAP 
    *** Script: My computer is not detecting the headphone device
     substring(short_description, 0, 20): My computer is not 
    *** Script: My disk is still having issues. Can't delete a file
     substring(short_description, 0, 20): My disk is still ha
    *** Script: The USB port on my PC stopped working
     substring(short_description, 0, 20): The USB port on my