Rubrique précédente: Lier à des modules de logique applicative

Rubrique suivante: Fonctions de logique applicative

Procédures de logique applicative

En plus de la syntaxe VBScript connue, les formules de logique applicative peuvent intégrer des procédures spéciales comme suit :

OnLoad(Time)

Procédure appelée une fois au début des calculs. Vous pouvez l'utiliser pour initialiser des variables globales.

OnPeriodEnd(Time, IsCompleteRecord)

Procédure appelée à la fin de chaque période. IsCompleteRecord est définie sur True à la fin de la période de suivi et sur False lors de la réalisation d'un calcul intermédiaire.

OnPeriodStart(Time)

Procédure appelée au début d'une nouvelle période.

OnRegistration(Dispatcher)

Une procédure obligatoire pour associer des événements aux procédures définies par l'utilisateur. OnRegistration est appelée une fois par le moteur de calcul au début du calcul de la métrique.

Les événements sont associés aux procédures à l'aide des méthodes de l'objet Dispatcher, comme illustré ci-après :

Exemple 1

Sub OnRegistration(dispatcher)
   Dim MyResource
   MyResource = Context.ClusterItem
   Dispatcher.RegisterByResource "OnEvent", "Mon type d'événement", MyResource
End sub

Sub New
   Dim ThisResourceMap
   Set GlobalResourceVector= CreateObject("SlalomVector.Vector")
   Dim resource
   Set ThisResourceMap = Context.ResourcesOfResourceGroup(Context.ClusterItem)
   Pour chaque ressource dans ThisResourceMap
      Ressource GlobalResourceVector.Add
   Next
End sub

Exemple 2

Sub OnRegistration(dispatcher)
      Dispatcher.RegisterByResource 'OnEvent', 'mon type d'événement', 'my resource'
      Dim a
      For a = 1 to 1000000: next
End sub

Ce code aurait un effet défavorable sur l'étape de traitement d'infrastructure des calculs, sans raison.

Vous pouvez désormais utiliser à la place :

Sub OnRegistration(dispatcher)
      Dispatcher.RegisterByResource 'OnEvent', 'mon type d'événement', 'my resource'
      If (dispatcher.IsRuntimeMode) then
            Dim a
            For a = 1 to 1000000: next
      End If
End sub

Remarque : "ProcedureName" = "MethodName" et "EventType=EventTypeName"

OnTimeSlotEnter(Time)

Cette procédure est appelée à l'ouverture d'une période d'application.

OnTimeSlotExit(Time)

Cette procédure est appelée à la fermeture d'une période d'application.