Rubrique précédente: Etude de cas 16 : Modèles de conception de logique applicativeRubrique suivante: Etude de cas 18 : Enregistrement


Etude de cas 17 : Fonctionnalité intégrée

Le programme ACE comporte une fonctionnalité intégrée et des outils pour divers buts. Il est préférable d'utiliser cette fonctionnalité intégrée plutôt que de l'écrire en VBS. Puisque VBS est un langage interprété, reproduire cette fonctionnalité en VBS en altère la performance.

Voici une liste des fonctions intégrées et de la façon appropriée de les utiliser :

IsWithinTimeslot

Voici la fonction intégrée la plus simple. Elle a pour but de permettre à la logique applicative de définir si le système se trouve actuellement dans une période d'application. Cela épargne la nécessité de gérer une variable dans les fonctions entrée et sortie de la période d'application pour effectuer la même opération. Par exemple, au lieu d'exécuter le code suivant :

Dim amIWithinATimeslot
Sub OnTimeslotEnter(time)
     amIWithinATimeslot = 1
End Sub
Sub OnTimeslotExit(time)
     amIWithinATimeslot = 0
End Sub
Sub OnEvent(eventDetails)
     If amIWithinATimeslot = 1 Then
           count = count + 1
     End if
End Sub

A la place, vous pouvez exécuter ce code beaucoup plus simple :

Sub OnEvent(eventDetails)
     If context.IsWithinTimeslot Then
          count = count + 1
     End if
End Sub

Si vous souhaitiez utiliser ou sauvegarder des informations à propos de l'horodatage des fonctions entrée et sortie de la période d'application, cette fonctionnalité ne couvrirait pas vos besoins. Mais normalement, cela n'est pas nécessaire. Ce code suffit.

TimeOfLastEvent

Cette fonction vous donne l'horodatage des dernières données brutes ou de l'événement de données intermédiaires géré. Cela veut dire que vous ne devez pas sauvegarder ces informations dans le gestionnaire d'événements, puisque vous pouvez y accéder directement à travers cette fonction. Par exemple :

Function result
     Dim LastEventTimestamp
     LastEventTimestamp = Context.TimeOfLastEvent
End function

TimeOfLastEventHandler

Cette fonction permet de retourner à l'horodatage du dernier gestionnaire d'événements appelé par ACE. Elle inclut non seulement des gestionnaires d'événements de données brutes et intermédiaires, mais également tout événement système qui aurait aussi été appelé. Elle est particulièrement utile pour des gestionnaires d'événements qui ne reçoivent pas le temps de la fonction de résultat, par exemple. Par exemple :

Function result
     Dim LastEventHandlerTimestamp
     LastEventHandlerTimestamp= Context.TimeOfLastEventHandler
End function

NetTime

Cette fonction vous permet de spécifier deux horodatages et de recevoir le temps net (en secondes) pendant lequel le système s'est trouvé dans la période d'application de la règle actuelle, intervalle entre ces deux horodatages. Il s'agit particulièrement d'une fonctionnalité peu pratique qui ne doit pas être implémentée dans VBS. L'implémenter dans VBS signifie conserver une liste de toutes les entrées et sorties de la période d'application ou calculer directement la différence entre chaque temps de sortie de la période d'application, afin d'évaluer la période de temps entre eux. Dans des cas extrêmes, cela pourrait se produire un grand nombre de fois et ce ne serait pas avantageux pour la vitesse de calcul. La fonction interne agit de la même façon après une optimisation significative, et avec plus d'efficacité. Par exemple :

Function result
     Dim MyNetTime
     MyNetTime = Tools.NetTime(MyBeginTimestamp, MyEndTimestamp)
End function

L'objet du contexte

L'objet du contexte a plusieurs paramètres qui fournissent des informations sur :

L'accès direct à ces informations depuis la base de données à l'aide de Safe ODBC est extrêmement inefficace et n'a pas d'importance puisque les informations sont directement accessibles à partir de l'objet de contexte. Si possible, l'utilisation continue de la fonctionnalité intégrée constitue un moyen de recevoir des informations.