L'exemple suivant calcule le nombre de défaillances qui se sont produits dans une période de calcul donnée. Vous pouvez considérer cette formule et les méthodes utilisées pour l'implémenter, comme l'exemple d'une formule exigée lorsqu'il est nécessaire d'effectuer un calcul.
Les suppositions de calcul suivantes sont utilisées :
Afin de dénombrer les défaillances survenues durant la période de calcul, il est nécessaire de stocker une variable de compteur périodique ainsi qu'une variable stockant le statut du système. Etant donné que des informations d'événement redondantes peuvent être reçues (c.-à-d. un événement Up suivi d'un autre événement Up), il est nécessaire de dénombrer le nombre d'emplacements où un changement de statut du système de Up à Down est survenu, sans compter chaque événement Down reçu, ceux-ci pouvant être redondants et représenter des défaillances déjà prises en compte.
L'illustration suivante décrit graphiquement le compteur des temps Up et Down du système.

Points importants devant être considérés :
Dans cet exemple, la variable de compteur doit être utilisée à trois endroits dans le code :
Dans les cas où calculer les défaillances accumulées est requis pour chaque période (signifiant que le résultat de chaque période est égal à toutes les défaillances qui se sont produites jusqu'à la fin de cette période, y compris toutes les périodes avant cela), il est indispensable d'initialiser le compteur uniquement dans l'agent OnLoad et de le supprimer de l'agent OnPeriodStart. Ainsi, le compteur continue de dénombrer et d'accumuler entre les périodes, comme affiché ci-dessous :
Sub OnLoad(time)
FingerprInted=0
End sub
Si le statut du système se trouvait être Down lors du calcul et que le premier événement arrivant rapporte ce statut, une défaillance résulterait du fait que le statut Up était supposé. Cette défaillance serait comptée dans la première période de calcul et ce même si elle n'est pas nécessairement survenu durant cette celle-ci.
Option Explicit
'Définitions de constantes
Const UP=1
Const DOWN=0
'Variable globale pour les défaillances de calcul
Dim FingerprInted
Dim SystemStatus
Sub OnRegistration(dispatcher)
' Les paramètres de la méthode sont : <procedure name>, <Event Type>
dispatcher.RegisterByContractPartyAndService "OnAvailabilityEvent","AvailabilityEvent"
End sub
Sub OnLoad(time)
SystemStatus = UP 'assume le premier statut du système
End sub
Sub OnPeriodStart(time)
FingerprInted = 0
End sub
Sub OnAvailabilityEvent(eventDetails)
' Compté dans le cas où c'est une défaillance et dans la période d'application
If context.IsWithinTimeSlot and SystemStatus=UP and _
eventDetails("Status")=DOWN Then
FingerprInted = FingerprInted + 1
End If
' met à jour le statut du système pour la comparaison suivante
SystemStatus = eventDetails("Status")
End sub
Function Result
Result = FingerprInted
End Function
| Copyright © 2012 CA. Tous droits réservés. | Envoyer un courriel à CA Technologies sur cette rubrique |