Oltre alla nota sintassi VBScript, le formule di business logic formule possono contenere speciali procedure come segue:
Invocato una volta all'inizio del calcolo. Può essere utilizzato per inizializzare le variabili globali.
Invocato ogni volta che un periodo termina. IsCompleteRecord è True quando il periodo di riferimento è terminato e False quando si effettua un calcolo intermedio.
Invocato ogni volta che un nuovo periodo inizia.
Una routine obbligatoria per l'associazione di eventi con le procedure definite dall'utente. OnRegistration viene chiamata una volta dal motore di calcolo all'inizio del calcolo della metrica.
Gli eventi sono associati alle le procedure mediante i metodi del dispatcher, come mostrato di seguito:
Questa proprietà consente all'utente di sapere se il metodo Onregistration è in esecuzione come parte del calcolo effettivo o durante l'elaborazione dell'infrastruttura. Si tratta di una proprietà utile perché a volte un cliente dispone di un codice quantità significativo nel metodo OnRegistration. Questo codice non ha effetto sulla registrazione, ma deve essere eseguito ogni volta che la struttura della risorsa cambia (ad esempio, l'esecuzione deve avvenire all'interno del metodo OnRegistration).
Gli utenti spesso tengono una mappa della struttura della risorsa per il calcolo. Poiché la struttura della risorsa è dinamica, la struttura nella mappa deve essere aggiornata quando la struttura della risorsa viene modificata. La funzione di registrazione viene chiamata ogni volta che la struttura della risorsa viene modificata.
Tuttavia, la compilazione della mappa non è rilevante per la registrazione. Questo significa che la compilazione della mappa riduce le prestazioni della funzione OnRegistration. Questo non è importante durante il runtime, perché non si verifica di frequente. Ma durante l'elaborazione dell'infrastruttura, questa situazione può verificarsi un grande numero di volte risultando in una notevole riduzione delle prestazioni senza alcun vantaggio.
In realtà, il codice deve essere eseguito solo quando il sistema sta eseguendo il calcolo. La proprietà IsRuntimeMode consente al cliente di scoprire se il codice deve essere eseguito o no.
Le attività di compilazione delle mappe e tutte le altre inizializzazioni che devono essere eseguite quando una struttura di risorsa cambia (ma che non sono rilevanti per la registrazione effettiva) possono essere eseguite in una funzione separata.
Nell'esempio 1 formato da due parti qui di seguito, la prima routine (OnRegistration(dispatcher)) contiene il codice che è rilevante per la registrazione e che deve rimanere nella funzione OnRegistration. La seconda routine (Nuova) contiene il codice che non è rilevante per la registrazione e può essere inserito nella nuova funzione:
Esempio 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)
Per ogni risorsa in ThisResourceMap
Risorsa GlobalResourceVector.Add
Avanti
End Sub
Esempio 2
Sub OnRegistration(dispatcher)
Dispatcher.RegisterByResource “OnEvent”, ”my event type”, “my resource”
Dim a
Per un = 1 a 1000000: successivo
End Sub
Questo codice potrebbe compromettere la fase di elaborazione dell'infrastruttura di calcoli senza motivo.
In alternativa, è possibile utilizzare:
Sub OnRegistration(dispatcher)
Dispatcher.RegisterByResource “OnEvent”, ”my event type”, “my resource”
Se (dispatcher.isruntimemode) allora
Dim a
Per un = 1 a 1000000: successivo
End If
End Sub
Nota: questo metodo non è più utilizzato.
Questo metodo attiva la registrazione di eventi inviati da una determinata metrica. Il metodo riceve i seguenti parametri:
Nome del metodo da chiamare quando viene ricevuto un evento.
Tipo di eventi ricevuti da questa registrazione.
Nome della risorsa o un gruppo di risorse in cui gli eventi vengono inviati o Context.ClusterItem'. Questo parametro può contenere la stringa vuota (""). In questo caso (stringa vuota), la registrazione viene eseguita per gli eventi che sono stati inviati a tutte le risorse (in SendEvent).
Questo parametro indica se la metrica corrente esegue la registrazione per ricevere eventi di metrica solo dall'agente di riferimento (in questo caso il valore fornito è "Riferimento") o per ricevere eventi da tutti gli agenti (ogni agente funzionante della metrica corrente riceve gli eventi dall'agente corrispondente della metrica che esegue l'invio. Ad esempio, l'agente orario riceve gli eventi dall'agente orario, agente giornaliero dall'agente giornaliero, ecc. Il valore che deve essere specificato in questo caso è "equivalente"). I 2 valori possibili sono "riferimento" e "equivalente".
Nome della metrica dalla quale sir ricevono gli eventi.
Nome del contratto al quale la metrica di sopra appartiene. Questo parametro è facoltativo. Se non è specificato, non specificare neanche ContractPartyName (consultare la sezione di seguito). Se questi parametri non sono specificati, il sistema presuppone che MetricName appartiene al contratto corrente.
Nome del contraente al quale il contratto di sopra appartiene. Questo parametro è facoltativo. Se il parametro non viene fornito, il sistema presuppone che ContractName appartiene allo stesso contraente del contratto corrente.
Nota: "ProcedureName" = "MethodName" e "EventType=EventTypeName"
Chiamata durante l'immissione di un periodo di applicazione.
Chiamata durante l'uscita da un periodo di applicazione.
|
Copyright © 2013 CA.
Tutti i diritti riservati.
|
|