Comment implémenter une durée relative
Vous pouvez implémenter une durée relative en créant la table cmn_relative_duration et le script include DurationCalculator .
Avant de commencer
Procédure
- Créez la table cmn_relative_duration.
- Créez le script include DurationCalculator.
- Créez un exemple d’entrée de durée relative (par exemple, « Jour ouvrable suivant avant 16 h »).
- Ajoutez les champs nécessaires aux tables SLA pour prendre en charge les durées relatives.
- Modifiez le calcul de la durée pour les SLA.
- Modifiez le calcul du minuteur du pourcentage de SLA pour les SLA (cette option 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 support de durée à l’activité de tâche de workflow.
- Implémentez le script de calcul de durée pour l’activité de tâche.
Table de durée relative et 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 « calculator », 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 ce script include.
| 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émarrer » est vide, utilise la date/heure actuelles. |
| calcDuration(int secondes) | Calcule la date et l’heure de fin. 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. |
| calcRelativeDuration(String relativeDurationID) | Calcule la durée à l’aide du script de durée relative spécifié. 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. |
| 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, et peut être utilisé pour déterminer des pourcentages du temps de travail |
| getTotalSeconds() | Obtient la propriété this.totalSeconds qui a été 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 » de la journée est postérieure à l’heure spécifiée par « dt » ? DT, s’il n’est pas renseigné, 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 en commençant à « 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. |