Além da conhecida sintaxe VBScript, as fórmulas de lógica de negócios podem conter procedimentos especiais, como segue:
Chamado uma vez, no início dos cálculos. Pode ser usado para inicializar variáveis globais.
Chamado sempre que o período termina. IsCompleteRecord é Verdadeiro quando o período de monitoramento tiver terminado e Falso ao fazer um cálculo intermediário.
Chamado sempre que um novo período começa.
Um procedimento obrigatório para associar eventos com procedimentos definidos pelo usuário. OnRegistration é chamado uma vez pelo mecanismo de cálculo no começo do cálculo da métrica.
Os eventos são associados a procedimentos usando os métodos do objeto distribuidor, conforme mostrado abaixo:
Esta propriedade permite que o usuário saiba se o método Onregistration está sendo executado como parte do cálculo atual ou durante o processamento da infraestrutura. Isso é útil porque, algumas vezes, o cliente tem uma quantidade significativa de código no método OnRegistration. Esse código não tem efeito sobre o registro, mas deve ser executado sempre que a estrutura do recurso é alterada (isto é, deve ser executado dentro do método OnRegistration).
Os usuários geralmente mantêm um mapa da estrutura do recurso para uso do cálculo. Como a estrutura do recurso é dinâmica, a estrutura no mapa deve ser atualizada quando a estrutura do recurso é alterada. O função de registro é chamada sempre que a estrutura do recurso é alterada.
No entanto, preencher o mapa não é relevante para fins de registro. Isso significa que preencher o mapa degrada o desempenho da função OnRegistration. Isso não é importante durante o tempo de execução, uma vez que não acontece com muita frequência. Mas durante o processamento da infraestrutura, isso pode acontecer um grande número de vezes, resultando em uma degradação significativa no desempenho, sem nenhuma vantagem.
De fato, o código só precisa ser executado quando o sistema estiver realmente calculando. A propriedade IsRuntimeMode permite que o cliente detecte se o código precisa ser executado ou não.
As tarefas de preenchimento de mapas e todas as outras inicializações que devem ser executadas quando uma estrutura do recurso é alterada (mas que não são relevantes para o registro atual) podem ser realizadas em uma função separada.
No Exemplo 1 dividido em duas partes abaixo, a primeira rotina (OnRegistration(dispatcher)) contém o código que é relevante para o registro e deve permanecer na função OnRegistration. A segunda rotina (Novo) contém o código que não é relevante para o registro e pode ser colocado na nova função:
Exemplo 1
Sub OnRegistration(dispatcher) Dim MyResource MyResource = Context.ClusterItem Dispatcher.RegisterByResource "OnEvent", "My Event Type", MyResource End Sub
Sub New
Dim ThisResourceMap
Set GlobalResourceVector= CreateObject("SlalomVector.Vector")
Dim resource
Set ThisResourceMap = Context.ResourcesOfResourceGroup(Context.ClusterItem)
Para cada recurso em ThisResourceMap
GlobalResourceVector.Add resource
Próximo
End Sub
Exemplo 2
Sub OnRegistration(dispatcher)
Dispatcher.RegisterByResource “OnEvent”, ”my event type”, “my resource”
Dim a
For a = 1 to 1000000: next
End Sub
Esse código poderia ter um efeito adverso na infraestrutura do estágio de processamento dos cálculos sem nenhum motivo.
Em vez disso, você pode usar:
Sub OnRegistration(dispatcher)
Dispatcher.RegisterByResource “OnEvent”, ”my event type”, “my resource”
If (dispatcher.IsRuntimeMode) then
Dim a
For a = 1 to 1000000: next
End If
End Sub
Observação: esse método não é mais usado.
Esse método permite o registro de eventos que foram enviados por uma métrica específica. O método recebe os seguintes parâmetros:
O nome do método a ser chamado quando um evento chega.
Tipo de eventos que são recebidos por este registro.
Nome do recurso ou grupo de recursos no qual os eventos são enviados ou 'Context.ClusterItem'. Esse parâmetro pode conter a sequência de caracteres vazia (""). Nesse caso (uma sequência de caracteres vazia), o registro é executado em eventos que foram enviados para todos os recursos (em SendEvent).
Esse parâmetro define se a métrica atual registra para receber eventos de métrica somente do agente de monitoramento (caso em que o valor a ser fornecido é "monitoramento") ou para receber eventos de todos os agentes (cada agente atuante da métrica atual recebe eventos do agente correspondente da métrica de envio. Por exemplo, o agente de hora em hora recebe os eventos do agente de hora em hora, o agente diário do agente diário, etc. O valor que deve ser fornecido neste caso, é o "equivalente"). Os 2 valores possíveis são "monitoramento" e "equivalente".
Nome da métrica da qual receber eventos.
Nome do contrato ao qual a métrica acima pertence. Esse parâmetro é opcional - se não for fornecido, não forneça o ContractPartyName também (veja abaixo). Se esses parâmetros não forem fornecidos, o sistema presume que o MetricName pertence ao contrato atual.
Nome da parte contratual a que o contrato acima pertence. Esse parâmetro é opcional. Caso o parâmetro não seja fornecido, o sistema presumirá que o ContractName pertence à mesma parte contratual do contrato atual.
Observação: "ProcedureName" = "MethodName" e "EventType=EventTypeName"
Chamado ao inserir um período de atividade.
Chamado ao sair de um período de atividade.
| Copyright © 2012 CA. Todos os direitos reservados. | Enviar email à CA Technologies sobre este tópico |