El ejemplo siguiente calcula el número de errores que ocurrieron dentro de un período de cálculo determinado. Esta fórmula y los métodos que se utilizan para implementarla se pueden tomar como ejemplo de una fórmula que es necesaria siempre que se debe realizar un cálculo.
Se utilizan los siguientes supuestos de cálculo:
Para concordar los errores que se han producido durante el período de cálculo es necesario almacenar una variable de contador periódica y también una variable que guarda el estado del sistema. Como se puede recibir información redundante del evento (es decir, un evento "activo" seguido por otro evento "activo"), también es necesario contar el número de ubicaciones en las que hubo un cambio del estado del sistema de "activo" a "inactivo" y no hay que contar todas las veces que un evento "inactivo" se recibe, pues puede ser un evento redundante que representa un error que ya se ha contado.
La siguiente figura describe gráficamente los tiempos activos e inactivos del sistema de recuento.

Hay que tener en cuenta algunos puntos importantes:
En este ejemplo la variable de contador tiene que utilizarse en tres lugares en el código:
En los casos en los que es necesario calcular los errores acumulados dentro de cada período, (lo que significa que el resultado de cada período son todos los errores que han ocurrido hasta el final de dicho período y se incluyen todos los períodos antes de este) es necesario inicializar el contador solamente en el controlador OnLoad y eliminarlo del controlador OnPeriodStart. De esta forma, el contador continúa contando y acumulando entre los períodos como se muestra a continuación:
Sub OnLoad(time)
FingerprInted=0
End Sub
Si cuando el cálculo se inició el estado del sistema era de hecho "inactivo" y el primer evento llega para indicar este estado "inactivo", esto se contará como un error porque el estado supuesto fue "activo". Este error se contará hacia el primer período de cálculo aunque no ocurriera necesariamente durante dicho período.
Opción explícita
'Definiciones de constantes
Const UP=1
Const DOWN=0
'Variable global para errores de recuento
Dim FingerprInted
Dim SystemStatus
Sub OnRegistration(dispatcher)
' Los parámetros del método son: <nombre del procedimiento>, <Tipo de evento>
dispatcher.RegisterByContractPartyAndService "OnAvailabilityEvent","AvailabilityEvent"
End Sub
Sub OnLoad(time)
SystemStatus = UP 'asume el primer estado del sistema
End Sub
Sub OnPeriodStart(time)
FingerprInted = 0
End Sub
Sub OnAvailabilityEvent(eventDetails)
' Si es un error y está dentro de la ranura de tiempo, se contará
If context.IsWithinTimeSlot and SystemStatus=UP and _
eventDetails("Status")=DOWN Then
FingerprInted = FingerprInted + 1
End If
' actualiza el estado del sistema para la comparación siguiente
SystemStatus = eventDetails("Status")
End Sub
Resultado de la función
Result = FingerprInted
End Function
|
Copyright © 2013 CA.
Todos los derechos reservados.
|
|