Comment implémenter une durée relative
Vous pouvez implémenter une durée relative en créant la table cmn_relative_duration et l’include de script DurationCalculator .
Avant de commencer
Procédure
- Créez la table cmn_relative_duration.
- Créez l’include de script DurationCalculator.
- Créez un exemple d’entrée de durée relative (par exemple, « Jour ouvrable suivant à 16 h »).
- Ajoutez les champs nécessaires aux tables de SLA pour prendre en charge les durées relatives.
- Modifiez le calcul de durée pour les SLA.
- Modifier le calcul du minuteur du pourcentage de SLA pour les SLA (cela doit utiliser work_seconds).
- Ajoutez des champs de calendrier au workflow : calendrier et fuseau horaire (sélectionnés en fonction du champ de la table de workflow).
- Ajoutez des champs de prise en charge de durée à l’activité de tâche de workflow.
- Implémentez un script de calcul de durée pour l’activité de tâche.
La table de durée relative et les méthodes DurationCalculator
La table cmn_relative_duration prend en charge la définition d’une date d’échéance en tant que durée ou durée relative.
Cette table se compose de deux champs : « nom » et « script ». Le champ « script » contient le script de calcul de la durée relative. Ce script inclut la variable « calculatrice », qui est utilisée pour calculer la date d’échéance.
Le script include DurationCalculator peut être utilisé pour effectuer les calculs de durée. Voici les méthodes disponibles dans cet include de script.
| Méthode | Description |
|---|---|
| setSchedule(String schedID, [String fuseau horaire]) | Définit le calendrier et le fuseau horaire à utiliser pour calculer la date d’échéance. |
| setStartDateTime(début GlideDateTime) | Définit l’heure de début des calculs de durée. Si « début » est vide, utilise la date/heure actuelle. |
| calcDuration(int secondes) | Calcule la date et l’heure de fin. Une fois les propriétés this.endDateTime et this.seconds terminées, elles sont définies pour indiquer les résultats du calcul. |
| calcRelativeDuration(String relativeDurationID) | Calcule la durée à l’aide du script de durée relative spécifié. Une fois les propriétés this.endDateTime et this.seconds terminées, elles sont définies pour indiquer les résultats du calcul. |
| getEndDateTime() | Obtient la propriété this.endDateTime qui a été définie par calcDuration/calcRelativeDuration, indiquant la date et l’heure de fin de la durée. |
| getSeconds() | Obtient la propriété this.seconds définie par calcDuration/calcRelativeDuration, indiquant le nombre total de secondes de travail à effectuer pour la durée. Remarque : Il s’agit du temps de travail total, et non du temps total entre les heures de début et de fin. Il peut être utilisé pour déterminer des pourcentages du temps de travail |
| getTotalSeconds() | Obtient la propriété this.totalSeconds définie par calcDuration/calcRelativeDuration, indiquant le nombre total de secondes entre les heures de début et de fin de la durée. |
Les fonctions suivantes sont utilisées dans les scripts de durée relative :
| Fonction | Description |
|---|---|
| booléen isAfter(GlideDateTime dt, heure de la chaîne) | Est-ce que « l’heure » du jour est postérieure à l’heure de la journée spécifiée par « dt » ? DT, s’il est vide, utilise la date/heure actuelle. L’heure est au format « HH :mm :SS » au format 24 heures. |
| calcRelativeDueDate(GlideDateTime start, int days, String endTime) | Calcule la date d’échéance à partir de « début » et en ajoutant des « jours » à l’aide du calendrier et du fuseau horaire. Lorsque nous trouvons le jour auquel le travail est dû, définissez l’heure sur « endTime » de ce jour. Une fois l’opération terminée, les propriétés this.endDateTime et this.seconds sont définies pour indiquer les résultats du calcul. Si endTime est vide, utilisez la fin de la journée de travail qui se termine. |