Tema anterior: Vínculo a módulos de lógica de negociosTema siguiente: Funciones de lógica de negocios


Procedimientos de lógica de negocios

Además de la sintaxis de VBScript conocida, las fórmulas de lógica de negocios pueden contener procedimientos especiales como el siguiente:

OnLoad(Time)

Llamado una vez al iniciar el cálculo. Se puede utilizar para inicializar variables globales.

OnPeriodEnd(Time, IsCompleteRecord)

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.

OnPeriodStart(Time)

Llamado cada vez que se inicia un nuevo período.

OnRegistration(Dispatcher)

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:

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: "ProcedureName" = "MethodName" y "EventType=EventTypeName"

OnTimeSlotEnter(Time)

Llamado al especificar una ranura de tiempo.

OnTimeSlotExit(Time)

Llamado al salir de una ranura de tiempo.