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 à 16h »).
- 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.
- Modifier le calcul de la minuterie du pourcentage de SLA pour les SLA (utiliser work_seconds).
- Ajoutez des champs de calendrier au workflow : calendrier et fuseau horaire (sélectionnés en fonction du champ dans la table de workflow).
- Ajoutez des champs de support de durée à l’activité Tâche du workflow.
- Implémentez le script de calcul de durée pour l’activité de la 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 comme une durée ou une durée relative.
Cette table se compose de deux champs : « nom » et « script ». Le champ « script » contient le script de calcul de durée relative. Ce script inclut la variable « calculatrice », qui est utilisée pour calculer la date d’échéance.
L’include de script DurationCalculator peut être utilisé pour effectuer les calculs de durée. Les méthodes suivantes sont disponibles dans cet include de script.
| Méthode | Description |
|---|---|
| setSchedule(String schedID, [String timezone]) | Définit le calendrier et le fuseau horaire à utiliser pour calculer la date d’échéance. |
| setStartDateTime (début de GlideDateTime) | Définit l’heure de début des calculs de durée. Si « démarrage » est vide, utilise la date/heure actuelle. |
| calcDuration(nombre entier de 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(Chaîne 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 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, qui indique le nombre total de secondes de travail à effectuer pendant 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, qui peut être utilisé pour déterminer les pourcentages du temps de travail |
| getTotalSeconds() | Obtient la propriété this.totalSeconds définie par calcDuration/calcRelativeDuration, qui indique 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, String time) | L’heure de la journée est-elle postérieure à l’heure de la journée spécifiée par 'dt' ? DT, si ce champ est vide, utilise la date/heure actuelle. L’heure est en « HH :MM :SS » au format 24 heures. |
| calcRelativeDueDate(GlideDateTime début, int jours, chaîne endTime) | Calcule la date d’échéance en commençant par « début » et en ajoutant « jours » à l’aide de la planification et du fuseau horaire. Lorsque nous trouvons le jour où le travail est dû, définissez l’heure de fin de ce jour. Une fois l’opération terminée, les propriétés this.endDateTime et this.seconds seront définies pour indiquer les résultats du calcul. Si endTime est vide, utilisez la fin de la journée de travail de fin. |