L'esempio seguente calcola il numero di errori che si sono verificati in un dato periodo di calcolo. La formula e i metodi utilizzati per implementarlo possono essere considerati come esempio di una formula richiesta quando è necessario calcolare qualcosa.
Vengono utilizzati i seguenti presupposti di calcolo:
Per conteggiare gli errori che si sono verificati durante il periodo di calcolo, è necessario archiviare una variabile di contatore periodico e anche una variabile che archivia lo stato del sistema. Poiché si potrebbero ricevere informazioni su eventi ridondanti (ad esempio, un evento Attivo seguito da un altro evento Attivo), è necessario inoltre calcolare il numero di ubicazioni in cui si è verificata una modifica dello stato di sistema da Attivo a Non attivo senza calcolare ogni volta che viene ricevuto un evento Non attivo, in quanto potrebbe essere un evento ridondante che rappresenta un errore già considerato.
Nella figura seguente è rappresentato graficamente il conteggio di stati Attivo e Non attivo del sistema.

Punti importanti da tenere in considerazione:
In questo esempio, è richiesto l'utilizzo della variabile del contatore in tre punti nel codice:
Nei casi in cui è richiesta per calcolare gli errori accumulati all'interno di ciascun periodo (vale a dire che il risultato di ogni periodo comprende tutti gli errori avvenuti fino al termine di tale periodo e compresi tutti i periodi precedenti), è necessaria per inizializzare il contatore solo nel gestore OnLoad e rimuoverla dal gestore OnPeriodStart. Pertanto, il contatore continua il conteggio e l'accumulo tra i periodi come indicato di seguito:
Sub OnLoad(time)
FingerprInted=0
End Sub
Se, una volta avviato il calcolo lo stato del sistema era effettivamente Non attivo e il primo evento ricevuto indica tale stato Non attivo, verrà considerato un errore in quanto lo stato presupposto era Attivo. Questo errore viene conteggiato per il primo periodo di calcolo, anche se non si verifica necessariamente durante tale periodo.
Option Explicit
'Definizioni di costanti
Const UP=1
Const DOWN=0
'Variabile globale per il conteggio di errori
Dim FingerprInted
Dim SystemStatus
Sub OnRegistration(dispatcher)
' I parametri del metodo sono: <procedure name>, <Event Type>
dispatcher.RegisterByContractPartyAndService "OnAvailabilityEvent","AvailabilityEvent"
End Sub
Sub OnLoad(time)
SystemStatus = UP 'presuppone il primo stato del sistema
End Sub
Sub OnPeriodStart(time)
FingerprInted = 0
End Sub
Sub OnAvailabilityEvent(eventDetails)
' In caso di un errore all'interno del periodo di applicazione, viene conteggiato
If context.IsWithinTimeSlot and SystemStatus=UP and _
eventDetails("Status")=DOWN Then
FingerprInted = FingerprInted + 1
End If
' aggiornare lo stato del sistema per il confronto successivo
SystemStatus = eventDetails("Status")
End Sub
Function Result
Result = FingerprInted
End Function
| Copyright © 2012 CA. Tutti i diritti riservati. | Contatta CA Technologies |