GlideMultiRecurrence : dans le champ d’application

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 4 minutes de lecture
  • L’API GlideMultiRecurrence fournit des méthodes qui renvoient des objets GlideDateTime qui décrivent les temps d’exécution pour une tâche planifiée spécifiée.

    Utilisez cette API lorsque vous devez déterminer quand une tâche périodique ou périodique spécifique doit être exécutée, également connue sous le nom d’occurrence.

    Cette API s’exécute dans l’espace de noms sn_schdl_ns .

    Pour utiliser cette API, la table de planification associée doit contenir un ou plusieurs des champs suivants (déclencheurs).
    Déclencheur Description
    effective_end Date et heure de fin planifiées de la tâche.
    effective_start Planifiez la date et l’heure de début de la tâche.
    fréquence Nombre d’occurrences à renvoyer.
    run_dayofmonth Jour du mois pour exécuter la tâche. Valeurs valides : 1-31
    run_dayofweek Jour de la semaine pour exécuter la tâche. Valeurs valides : 1 (dimanche) - 7 (samedi)
    run_month Mois de l’année pour exécuter la tâche. Valeurs valides : 1-12
    run_time Heure GMT de la journée d’exécution de la tâche.
    run_weekinmonth Semaine du mois pour exécuter la tâche. Valeurs valides : 1-6
    time_zone Fuseau horaire de la tâche planifiée.
    trigger_type
    • 0 : Exécuter une fois
    • 1 : Répéter
    • 2 : Sur demande
    • 3 : Jour de la semaine
    • 4 : Jour du mois
    • 5 : Semaine du mois
    • 6 : Jour et mois de l’année
    • 7 : Jour de la semaine du mois et de l’année
    • 8 : Exécuter aux heures spécifiées
    • 9 : Exécuter au démarrage du système
    • 10 : Intervalle
    • 11 : Tous les jours
    Lorsque vous utilisez cette API, vous devez d’abord créer un objet GlideRecord pour la table de planification sur laquelle l’API doit agir. Vous récupérez ensuite l’enregistrement de planification pour lequel vous souhaitez obtenir les enregistrements d’occurrences. Par exemple :
    var table_nameGR = new GlideRecord('<table_name>'); // Scheduling table, such as sys_trigger
    table_nameGR.addQuery('sys_id', '<sys_id>'); // Sys_id of the scheduling record
    table_nameGR.query();
    table_nameGR.next();  // Retrieve the scheduling record

    GlideMultiRecurrence : getOccurrences()

    Retourne un objet GlideDateTime pour chaque heure d’exécution planifiée (occurrence) qu’une tâche planifiée spécifiée doit exécuter dans une période spécifique, en fonction des déclencheurs définis dans l’enregistrement de calendrier associé (GlideRecord).

    Cette méthode analyse l’objet de planification GlideRecord actuel, à l’aide des déclencheurs définis dans l’objet de planification, pour déterminer quand la tâche doit s’exécuter.

    Propriétés qui contrôlent les résultats de retour :
    • com.glide.schedule.recurrence.num_occurrences_max : nombre maximum d’occurrences à renvoyer.
    • com.glide.schedule.recurrence.num_occurrences_default : nombre d’occurrences par défaut à renvoyer.
    La méthode applique les règles suivantes pour déterminer les occurrences à renvoyer pour la période définie et les déclencheurs associés :
    • S’il s’agit d’un effective_start champ valide et non nul ou vide, utilisez-le comme date de début du renvoi des occurrences. Sinon, utilisez la date actuelle.
    • Si le champ de effective_end date est valide et non nul ou vide, renvoie les occurrences entre le champ et effective_start le champ de effective_end date.

      Exception à la règle ci-dessus : si la effective_end date est trop éloignée dans le futur, ce qui entraîne le retour d’un nombre d’occurrences supérieur au nombre spécifié dans la propriété com.glide.schedule.recurrence.num_occurrences_max, le résultat est limité à la valeur spécifiée dans com.glide.schedule.recurrence.num_occurrences_max (500 par défaut).

    • Si le champ de effective_end date est nul ou vide mais que le champ est défini, utilisez-le frequencyfrequency pour déterminer le nombre d’occurrences à renvoyer.
    • Renvoyer les dates historiques si le champ de effective_start date est dans le passé.
    • Si les champs et frequencyeffective_end date sont tous les deux spécifiés, utilisez la effective_end date avec le nombre maximal d’occurrences limité à la valeur spécifiée dans la propriété com.glide.schedule.recurrence.num_occurrences_max.
    Si aucune des règles ci-dessus n’est vraie, la méthode renvoie les occurrences en fonction du paramètre par défaut des propriétés système.
    Remarque :
    MAX_Drift n’est pas pris en charge par cette API.

    Exemple : Les deux frequency et effective_end sont spécifiés. Effective_end La date a priorité et frequency est ignorée.

    • frequency : 10
    • effective_start: 1er août 2022
    • effective_end: 10 octobre 2022
    • Type de déclencheur : Jour du mois
    • Jour d’exécution du mois : 15

    Nombre d’objets GlideDateTime renvoyés = 2.

    Occurrences renvoyées : 15 août 2022, 15 septembre 2022.

    Exemple : Les deux frequency et effective_end sont spécifiés. Effective_end date a la priorité et frequency est ignorée, cependant, le nombre d’occurrences renvoyées est limité par la valeur de la propriété com.glide.schedule.recurrence.num_occurrences_max.

    • frequency: 20
    • effective_start: 1er août 2022
    • effective_end: 30 octobre 2070
    • Type de déclencheur : Jour du mois
    • Jour d’exécution du mois : 15

    Nombre d’objets GlideDateTime renvoyés = 500.

    Tableau 1. Paramètres
    Nom Type Description
    grSchedule GlideRecord Objet GlideRecord pointant vers l’enregistrement contenant la tâche pour laquelle vous souhaitez obtenir les occurrences de calendrier.
    Tableau 2. Renvoie
    Type Description
    Tableau d’objets GlideDateTime Objet GlideDateTime pour chaque fois que la tâche planifiée doit s’exécuter.

    L’exemple suivant montre comment récupérer les objets GlideDateTime pour toutes les dates/heures d’exécution planifiées pour une période spécifique pour un enregistrement de calendrier de tâche spécifié. La tâche sélectionnée est planifiée pour s’exécuter toutes les heures.

    var sys_id = 'a9e30c7dc61122760116894de7bcc7bd'; // Sys_id of the job schedule record
    var table = 'sys_trigger'; // Table that contains the job schedule record
    
    var grSchedule = new GlideRecord(table);
    if
     (grSchedule.get(sys_id)) {
      var multiRecurrence = new sn_schdl_ns.GlideMultiRecurrence();
      var dates = multiRecurrence.getOccurrences(grSchedule); // Display the list of occurrences
      for(var i=0; i<dates.length; i++) {
        gs.info('occurrence = ' + dates[i]);
      }
    }

    Sortie :

    occurrence = 2022-11-21 16:23:23
    occurrence = 2022-11-21 17:23:23
    occurrence = 2022-11-21 18:23:23
    occurrence = 2022-11-21 19:23:23
    occurrence = 2022-11-21 20:23:23
    occurrence = 2022-11-21 21:23:23
    occurrence = 2022-11-21 22:23:23
    occurrence = 2022-11-21 23:23:23
    occurrence = 2022-11-22 00:23:23
    occurrence = 2022-11-22 01:23:23