O exemplo a seguir calcula o número de falhas ocorridas em um determinado período do cálculo. A fórmula e os métodos usados para implementar podem ser usados como um exemplo de uma fórmula obrigatória sempre que for necessário calcular alguma coisa.
As suposições de cálculo a seguir são usadas:
Para calcular as falhas ocorridas durante o cálculo do período é necessário armazenar uma variável de contador periódico, bem como uma variável que armazena o status do sistema. Uma vez que as informações redundantes de eventos podem ser recebidas (ou seja, um evento Ativo seguido por outro evento Ativo), também é necessário contar o número de locais nos quais ocorreu uma alteração de status do sistema de Ativo para Inativo e não contar cada vez que um evento Inativo é recebido, pois isso pode ser um evento redundante que representa uma falha que já foi registrada.
A figura a seguir ilustra graficamente a contagem de horas ativas e inativas do sistema.

Pontos importantes que devem ser considerados:
Neste exemplo, a variável de contador precisa ser usada em três locais no código:
Nos casos em que é necessário calcular as falhas acumuladas em cada período (o que significa que o resultado de cada período consiste em todas as falhas ocorridas até o fim deste período, incluindo todos os períodos antes disso) é necessário inicializar o contador apenas no manipulador OnLoad e removê-lo do manipulador OnPeriodStart. Assim, o contador continua a contagem e a acumulação entre os períodos, como mostrado a seguir:
Sub OnLoad(time)
FingerprInted=0
End Sub
Se quando o cálculo for iniciado, o status do sistema estiver, de fato, Inativo e o primeiro evento chegar para indicar esse status, ele será contado como uma falha, pois o status presumido era Ativo. A falha será contabilizada no primeiro período do cálculo, mesmo se não ocorreu necessariamente durante esse período.
Option Explicit
Definições de constantes
Const UP=1
Const DOWN=0
Variável global de contagem de falhas
Dim FingerprInted
Dim SystemStatus
Sub OnRegistration(dispatcher)
'Os parâmetros de método são: <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)
Se ocorrer uma falha e estiver dentro do período de atividade, ela será contabilizada
If context.IsWithinTimeSlot and SystemStatus=UP and _
eventDetails("Status")=DOWN Then
FingerprInted = FingerprInted + 1
End If
'atualizar o status do sistema para a próxima comparação
SystemStatus = eventDetails("Status")
End Sub
Function Result
Result = FingerprInted
End Function
| Copyright © 2012 CA. Todos os direitos reservados. | Enviar email à CA Technologies sobre este tópico |