Das folgende Beispiel berechnet die Anzahl der Fehler, die innerhalb eines bestimmten Berechnungszeitraums auftraten. Diese Formel und die Methoden, mit denen sie implementiert wurde, können als Beispiel einer Formel verwendet werden, die immer erforderlich ist, wenn etwas berechnet werden soll.
Es wurden folgende Annahmen für die Berechnung getroffen:
Es ist notwendig, eine periodische Zähler-Variable und auch eine Variable zur Speicherung des Systemzustands zu speichern, um die Fehler, die während des Berechnungszeitraums auftreten, zu zählen. Da redundante Event-Informationen aufgenommen werden können (d. h. ein "Aufwärts"-Event gefolgt von einem anderen "Aufwärts"-Event), ist es auch notwendig, die Anzahl von Orten, an denen eine Änderung des Systemstatus von "Aufwärts" zu "Abwärts" vorkommt, und nicht nur den Empfang eines "Abwärts"-Events zu zählen. Dies könne ein redundantes Event sein, dass einen bereits gezählten Fehler repräsentiert.
Die folgende Abbildung zeigt grafisch, wie die "Aufwärts"- und "Abwärts"-Zeiten des Systems gezählt werden.

Wichtige Punkte, die berücksichtigt werden sollten:
In diesem Beispiel muss die Zählervariable an drei Stellen im Code verwendet werden:
Wenn es notwendig ist, die akkumulierten Fehler innerhalb jedes Zeitraums zu berechnen (d. h. das Ergebnis von jedem Zeitraum umfasst alle bis zum Ende dieses Zeitraums aufgetretenen Fehler, einschließlich aller vorherigen Zeiträume), dann muss der Zähler nur in der OnLoad-Routine initialisiert und aus der OnPeriodStart-Routine gelöscht werden. Auf diese Weise fährt der Zähler fort, zu zählen und die Ergebnisse zwischen den Zeiträumen wie nachfolgend gezeigt zu akkumulieren:
Sub OnLoad(time)
FingerprInted=0
End Sub
Wenn die Berechnung gestartet wurde und das System in Wirklichkeit den Status "Abwärts" hat und dann das erste Event den Status "Abwärts"-Status anzeigt, wird dies als Fehler gezählt, da der angenommene Status "Aufwärts" war. Dieser Fehler wird für den ersten Berechnungszeitraum gezählt, auch wenn er nicht notwendigerweise während dieses Zeitraums aufgetreten.
Option Explicit
'Konstantendefinitionen
Const UP=1
Const DOWN=0
'Global variable for counting failures
Dim FingerprInted
Dim SystemStatus
Sub OnRegistration(dispatcher)
' The parameters of the method are: <procedure name>, <Event Type>
dispatcher.RegisterByContractPartyAndService "OnAvailabilityEvent","AvailabilityEvent"
End Sub
Sub OnLoad(time)
SystemStatus = UP 'assume the first system status
End Sub
Sub OnPeriodStart(time)
FingerprInted = 0
End Sub
Sub OnAvailabilityEvent(eventDetails)
' In case it's a failure and within the timeslot then it is counted
If context.IsWithinTimeSlot and SystemStatus=UP and _
eventDetails("Status")=DOWN Then
FingerprInted = FingerprInted + 1
End If
' update the system status for next comparison
SystemStatus = eventDetails("Status")
End Sub
Function Result
Result = FingerprInted
End Function
| Copyright © 2012 CA. Alle Rechte vorbehalten. | Senden Sie CA Technologies eine E-Mail zu diesem Thema. |