En plus de la syntaxe VBScript connue, les formules de logique applicative peuvent intégrer des procédures spéciales comme suit :
Procédure appelée une fois au début des calculs. Vous pouvez l'utiliser pour initialiser des variables globales.
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.
Procédure appelée au début d'une nouvelle période.
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 :
Cette propriété permet à l'utilisateur de savoir si la méthode Onregistration est exécutée dans le cadre du calcul proprement dit ou pendant le traitement d'infrastructure. Cela peut parfois être utile, dans le cas où un client a une quantité importante de code dans la méthode OnRegistration. Ce code n'a aucun effet sur l'enregistrement, mais doit être exécuté à chaque modification de la structure de ressources (c.-à-d. qu'il doit s'exécuter à l'intérieur de la méthode OnRegistration).
L'utilisateur conserve souvent un plan de la structure de ressources à des fins de calcul. La structure de ressources est dynamique, la structure dans le plan doit être mise à jour lorsque la structure de ressources est modifiée. La fonction d'enregistrement est appelée à chaque modification de la structure de ressources.
Toutefois, l'étape consistant à compléter la carte n'est pas pertinente à des fins d'enregistrement. Cela signifie qu'elle affecte les performances de la fonction OnRegistration. Ce n'est pas important au cours de l'exécution, car cela ne se produit pas très souvent. Mais au cours du traitement d'infrastructure, cela peut se produire un grand nombre de fois et entraîner ainsi une dégradation significative des performances, sans aucun avantage.
L'exécution de ce code doit uniquement se produire lorsque le système calcule. La propriété IsRuntimeMode permet au client de détecter si le code doit être exécuté ou non.
Le renseignement des plans et autres tâches d'initialisation devant s'exécuter lors des modifications de structure de ressources (mais qui ne sont pas pertinentes pour l'enregistrement proprement dit), peuvent être effectués dans une fonction distincte.
Dans l'exemple 1 en deux parties présenté ci-dessous, la première routine (OnRegistration(dispatcher)) contient le code pertinent à l'enregistrement et qui doit rester dans la fonction OnRegistration. La deuxième routine (New) contient le code qui n'est pas pertinent à l'enregistrement et peut être placé dans la nouvelle fonction :
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 : Cette méthode n'est plus utilisée.
Cette méthode permet d'enregistrer les événements qui ont été envoyés par une métrique spécifique. La méthode reçoit les paramètres suivants:
Nom de la méthode à appeler lorsqu'un événement se produit.
Type d'événements reçus par cet enregistrement.
Nom de la ressource ou du groupe de ressources auxquels les événements sont envoyés ou Context.ClusterItem. Ce paramètre peut contenir une chaîne vide (""). Dans ce cas (chaîne vide), l'enregistrement s'effectue sur des événements qui ont été envoyés à toutes les ressources (dans SendEvent).
Ce paramètre définit si la métrique actuelle est enregistrée pour recevoir les événements de métrique de l'agent de suivi uniquement (auquel cas la valeur à fournir est tracking) ou pour recevoir les événements de tous les agents (chaque agent actif de la métrique actuelle reçoit les événements de l'agent correspondant au niveau de la métrique d'envoi). Par exemple, l'agent horaire reçoit les événements de l'agent horaire, l'agent quotidien ceux de l'agent quotidien, etc. La valeur qui doit être fournie dans ce cas est "equivalent". Les 2 valeurs possibles sont "tracking" et "equivalent".
Nom de la métrique qui transmet les événements.
Nom du contrat auquel la métrique ci-dessus appartient. Ce paramètre est facultatif. S'il n'est pas fourni, ne fournissez pas non plus le paramètre ContractPartyName (voir ci-dessous). Si ces paramètres ne sont pas fournis, le système suppose que MetricName appartient au contrat actuel.
Nom du contractant auquel le contrat ci-dessus appartient. Ce paramètre est facultatif. Si le paramètre n'est pas fourni, le système suppose que le paramètre ContractName appartient au même contractant que le contrat actuel.
Remarque : "ProcedureName" = "MethodName" et "EventType=EventTypeName"
Cette procédure est appelée à l'ouverture d'une période d'application.
Cette procédure est appelée à la fermeture d'une période d'application.
| Copyright © 2012 CA. Tous droits réservés. | Envoyer un courriel à CA Technologies sur cette rubrique |