Comme nous l'avons mentionné, les entrées de la logique applicative sont les événements de moteur et les événements de données brutes.
Les événements de données brutes reçus par la logique applicative sont déterminés par la fonction d'enregistrement, dans laquelle le code demande une définition spécifique des événements de données brutes définis par leur type d'événement et leur identificateur de ressource.
Dans la logique applicative, l'enregistrement associe également une sous-routine définie par l'utilisateur, qui est exécutée afin de gérer l'événement de données brutes une fois qu'un événement est reçu. (Valeur par défaut, c'est l'événement OnXXXEvent, qui doit être renommé de façon plus explicite.)
Les événements de moteur sont déclenchés par le moteur d'après les définitions des contrats et les métriques associées. Lorsque l'événement de moteur est déclenché et reçu, le moteur exécute le gestionnaire d'événements pertinent. Chaque événement de moteur possède un gestionnaire d'événements implicite. Ces gestionnaires d'événements sont des fonctions et des procédures définies au-dessus de VBScript. Le gestionnaire d'événements qui maîtrise l'enregistrement et la fonction result doivent obligatoirement être implémentés dans le code. Tous les autres gestionnaires d'événements sont facultatifs. Toutefois, la logique applicative ne s'occupe pas des événements de moteur pour lesquels les gestionnaires d'événements ne sont pas implémentés. Par conséquent, il est recommandé de les laisser tous en place (même s'ils ne sont pas utilisés) en prévision d'améliorations futures.
Remarque : Lors de l'écriture du script de logique applicative, il est important d'implémenter tous les événements du moteur afin de couvrir toutes les possibilités finales. Par exemple, même si pendant la première étape de l'implémentation une définition de période d'application n'était pas applicable, mais le sera dans l'avenir, toutes les formules nécessiteront une modification. Il est par conséquent recommandé que l'expert en logique applicative définisse d'avance le comportement durant la période d'application et en dehors de la période d'application, même si initialement ces définitions ne sont pas applicables, afin de réduire les modifications nécessaires lorsque le comportement sera introduit.
Voici divers événements de moteur et leurs gestionnaires d'événements :

Les éléments suivants sont les étapes suivies par le mécanisme de calcul (service PslWriter) pour traiter une formule de calcul de logique applicative unique :
Remarque : Lorsque la version de contrat est d'abord validée et qu'une prévision a été sélectionnée, la fonction Forecast est appelée au lieu de la fonction de résultat. Cette opération, toutefois, se produit uniquement dans ce cas pour chaque version)
Pendant chaque cycle de calcul, le moteur évalue quels sont les événements de moteur et les événements de données brutes pertinents en fonction de la période de calcul. Il va les trier d'abord par heure, puis les envoyer aux formules pertinentes pour être calculés. L'heure de l'événement de données brutes est son horodatage et le moment de l'événement de moteur est son heure de déclenchement. Ces deux types d'événement sont alors combinés dans une séquence de temps et envoyés pour être calculés.
Les périodes des événements sont basées sur la métrique locale associée, mais le paramètre Time des gestionnaires d'événements (c.-à-d., OnPeriodStart (Time)) et l'horodatage de l'événement de données brutes sont basés sur leur valeur UTC. Le moteur les compare en fonction de leurs valeurs UTC pour utiliser un point fixe de référence.
Exemple :
Si la différence UTC de fuseau horaire d'une métrique est de deux heures (c.-à-d. GMT+2), et que la valeur d'horodatage d'un événement d'ouverture d'incident est 10:00 heures du matin, l'horodatage utilisé par le gestionnaire d'événements dans le moteur sera en fait déplacé en conséquence et démarrera réellement à 8:00 heures du matin UTC. En supposant que l'adaptateur est configuré pour utiliser ce même fuseau horaire, les événements de données brutes seront également reculés de 2 heures UTC dans la base de données. Lorsque les événements sont transmis à la logique applicative, l'agent de calcul chargé du calcul des événements pendant la période démarrant à 10:00 heures du matin utilisera en fait l'heure UTC pour les événements, c-à-d 8:00 heures du matin. Toutefois, si vous utilisez le message out.log dans le code pour imprimer les horodatages, il indiquera que l'horodatage a adopté le temps UTC et affichera donc 08:00 heures du matin, bien que la période spécifiée (selon la métrique) est 10 heures du matin.
Dans la condition de calcul suivante, il est important de convertir l'horodatage de l'événement avant de l'utiliser :
Si une métrique est de calculer le nombre d'incidents qui ont été clôturés le même jour de leur ouverture, il est nécessaire de comparer l'heure d'ouverture et l'heure de fermeture de chaque incident. Si l'ouverture d'un incident et l'heure de fermeture correspondent au même jour (et dans une période d'application définie), l'incident sera pris en compte.
Il est possible que durant le processus d'adoption de l'heure UTC par l'incident à partir de son heure locale d'origine, le jour change. (c.-à-d. utilisation de GMT+2). Un incident ouvert à 1 heure du matin sera reculé à 23 heures UTC du jour précédent). Il ne sera alors pas compté même s'il devait l'être. Il s'agit d'une situation où le temps doit être reconverti en heure métrique locale, puis seulement alors comparé. Dans ce cas, utilisez la méthode GetLocaleTime(utcTime). Cette méthode convertit une heure donnée dans un fuseau horaire UTC en un fuseau horaire de la métrique locale.
Les informations suivantes sont le code de gestionnaire d'événements :
Sub OnIncidentEvent(eventDetails)
If dateDiff("d",Tools.GetLocaleTime(eventDetails.time),_
Tools.GetLocaleTime(eventDetails("ClosedAt)))=0 then
CountIncidents=CountIncidents+1
End If
End sub
|
Copyright © 2013 CA.
Tous droits réservés.
|
|