Además de la sintaxis de VBScript conocida, las fórmulas de lógica de negocios pueden contener procedimientos especiales como el siguiente:
Llamado una vez al iniciar el cálculo. Se puede utilizar para inicializar variables globales.
Llamado cada vez que acaba un período. IsCompleteRecord es True cuando el período de seguimiento ha finalizado y False cuando se realiza un cálculo intermedio.
Llamado cada vez que se inicia un nuevo período.
Un procedimiento obligatorio para asociar eventos con procedimientos definidos por el usuario. El motor de cálculo llama a OnRegistration una vez al inicio del cálculo de la métrica.
Los eventos se asocian a procedimientos mediante el uso de los métodos del objeto Dispatcher, como se muestra a continuación:
Esta propiedad permite que el usuario sepa si el método Onregistration se ejecuta como parte del cálculo real o durante el procesamiento de infraestructuras. Esto resulta útil porque, a veces, un cliente tiene un código de cantidad significativo en el método OnRegistration. Este código no tiene ningún efecto en el registro, pero se debe ejecutar siempre que cambie la estructura del recurso (es decir, debe ejecutarse en el método OnRegistration).
Los usuarios suelen conservar una asignación de la estructura de recursos para su uso en los cálculos. Ya que la estructura de recursos es dinámica, la estructura de la asignación debe actualizarse cuando cambie la estructura del recurso. Se llama a la función de registro siempre que cambie la estructura del recurso.
Sin embargo, rellenar la asignación no es pertinente para los fines de registro. Esto significa que, al rellenar la asignación, se degrada el rendimiento de la función OnRegistration. Esto no es importante durante el tiempo de ejecución, ya que no sucede muy a menudo. Sin embargo, durante el procesamiento de infraestructuras, esto puede ocurrir muchas veces, de forma que se degradaría el rendimiento de forma significativa sin obtener beneficio alguno.
En realidad, el código debe ejecutarse solamente cuando el sistema está realizando cálculos. La propiedad IsRuntimeMode permite que el cliente detecte si el código debe ejecutarse o no.
Las tareas de asignaciones de relleno y todas las demás inicializaciones que deben ejecutarse cuando cambia una estructura de recurso (pero que no son pertinentes para el registro real) se pueden realizar en una función independiente.
En el ejemplo 1 de dos partes que se encuentra a continuación, la primera rutina (OnRegistration(dispatcher)) contiene el código que es pertinente para el registro y debe permanecer en la función OnRegistration. La segunda rutina (New) contiene el código que no es pertinente para el registro y se puede colocar en la función nueva:
Ejemplo 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)
For Each resource In ThisResourceMap
GlobalResourceVector.Add resource
Next
End Sub
Ejemplo 2
Sub OnRegistration(dispatcher)
Dispatcher.RegisterByResource “OnEvent”, ”my event type”, “my resource”
Dim a
For a = 1 to 1000000: next
End Sub
Este código tendría un efecto adverso en la etapa de procesamiento de infraestructuras de los cálculos sin motivo alguno.
En cambio, ahora puede utilizar:
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
Nota: Este método ya no se utiliza.
Este método permite registrarse en eventos enviados por una métrica específica. El método recibe los siguientes parámetros:
Nombre del método que se debe llamar cuando llega un evento.
Tipo de eventos recibidos por este registro.
Nombre del recurso o grupo de recursos en el que se envían eventos o 'Context.ClusterItem'. Este parámetro puede contener la cadena vacía (""). En este caso (una cadena vacía), el registro se realiza en eventos que se envían a todos los recursos (en SendEvent).
Este parámetro define si la métrica actual se registra para recibir eventos de métricas solamente del agente de seguimiento (en cuyo caso, el valor que se tiene que se proporcionará es el de seguimiento) o para recibir eventos de todos los agentes (cada agente en funcionamiento de la métrica actual recibe eventos del agente correspondiente de la métrica de envío. Por ejemplo, el agente por hora recibe eventos del agente por hora, el agente diario del agente diario, etc. El valor que se debe proporcionar en este caso es el de equivalente). Los dos valores posibles son seguimiento y equivalente.
Nombre de la métrica desde la que se recibirán eventos.
Nombre del contrato, al que pertenece la métrica anterior. Este parámetro es opcional (si no se proporciona, tampoco se ofrece ContractPartyName [consulte a continuación]). Si no se proporcionan estos parámetros, el sistema asume que MetricName pertenece al contrato actual.
Nombre de la parte contratante a la que pertenece el contrato anterior. Este parámetro es opcional. En caso de que no se proporcione el parámetro, el sistema asume que ContractName pertenece a la misma parte contratante que el contrato actual.
Nota: "ProcedureName" = "MethodName" y "EventType=EventTypeName"
Llamado al especificar una ranura de tiempo.
Llamado al salir de una ranura de tiempo.
|
Copyright © 2013 CA.
Todos los derechos reservados.
|
|