Script Includes : rendre le code ServiceNow réutilisable et testable
Une même transformation de texte apparaît dans plusieurs scripts de votre application. Vous corrigez un cas particulier à un endroit, puis oubliez les autres copies. Un Script Include permet de donner à cette logique un emplacement identifié et un contrat clair : une entrée, un traitement, un résultat.
Commencer par une responsabilité limitée
Dans cet exemple, nous voulons préparer une description courte avant son utilisation par une application. La règle retenue pour l’exercice est volontairement simple : accepter une valeur absente, retirer les espaces au début et à la fin, puis limiter le résultat à quatre-vingts caractères. Cette limite est un choix d’exemple, pas une limite universelle de ServiceNow.
Créer le Script Include côté serveur
Créez un Script Include actif nommé SnowledgeTextUtils. Cet exemple est réservé aux appels serveur : laissez l’option d’appel client désactivée. Dans une application cloisonnée, réalisez le premier appel depuis le même scope.
var SnowledgeTextUtils = Class.create();
SnowledgeTextUtils.prototype = {
initialize: function() {},
normaliserDescription: function(valeur) {
if (valeur === null || typeof valeur === 'undefined') {
return '';
}
var texte = String(valeur).trim();
return texte.substring(0, 80);
},
type: 'SnowledgeTextUtils'
};
Dans ce modèle de classe, le nom du Script Include, celui de la classe et la propriété type doivent rester cohérents. La méthode renvoie une chaîne ; elle ne modifie aucun enregistrement. Ce choix rend le comportement facile à examiner sans lui ajouter une dépendance à une table.
L’appeler et vérifier son comportement
var outil = new SnowledgeTextUtils();
var resultat = outil.normaliserDescription(' Acces VPN ');
gs.info('[Snowledge] Resultat : ' + resultat);
Le résultat attendu est Acces VPN. Il s’agit d’une attente de test, pas d’un résultat exécuté sur votre instance. Vérifiez aussi une chaîne vide, une valeur null, une valeur non fournie et un texte dépassant quatre-vingts caractères. Si les textes métier contiennent des emojis ou des caractères composés, définissez une règle de longueur adaptée : substring() découpe des unités UTF-16, pas des caractères visuels.
Ce que la centralisation change
Une correction de cette méthode bénéficie à ses différents appelants. Elle impose aussi de connaître ces appelants avant de changer son comportement. Notez donc le format des paramètres, le type du résultat et les cas limites attendus. Un nom précis aide davantage qu’une classe utilitaire qui accumule des fonctions sans rapport entre elles.
Garder une frontière claire entre serveur et navigateur
Rendre un Script Include réutilisable côté serveur ne signifie pas le rendre appelable depuis le navigateur. L’exposition client relève d’une conception distincte, avec validation des paramètres et contrôle des données accessibles. N’activez pas cette option uniquement pour essayer de résoudre une erreur d’appel entre scopes.
Référence : documentation officielle des Script Includes. Adaptez la configuration et les appels au scope et à la version de votre application.
Cette démarche de code réutilisable s’inscrit dans les projets de développement logiciel sur mesure de Snowledge.