Neben der bekannten VBScript-Syntax können Business-Logik-Formeln die folgenden speziellen Prozeduren enthalten:
Wird einmal zu Beginn der Berechnung aufgerufen. Kann für die Initialisierung globaler Variablen verwendet werden.
Wird jedes Mal aufgerufen, wenn ein Zeitraum endet. "IsCompleteRecord" ist "True", wenn der Kontrollzeitraum beendet ist und "False", wenn eine Zwischenkalkulation vorgenommen wird.
Wird jedes Mal aufgerufen, wenn ein neuer Kontrollzeitraum beginnt.
Eine erforderliche Prozedur zur Verknüpfung von Events mit anwenderdefinierten Prozeduren. "OnRegistration" wird einmal zu Beginn der Metrikberechnung von der Berechnungs-Engine aufgerufen.
Die Events werden mithilfe der Methoden des Dispatcher-Objekts wie unten gezeigt mit den Prozeduren verknüpft.
Diese Eigenschaft informiert den Anwender, ob die OnRegistration-Methode als Teil der eigentlichen Berechnung oder während der Infrastrukturverarbeitung ausgeführt wird. Dies ist nützlich, weil die Codemenge für die OnRegistration-Methode bei einem Kunden zuweilen sehr groß sein kann. Dieser Code hat keine Auswirkung auf die Registrierung, muss jedoch immer dann ausgeführt werden, wenn sich die Ressourcenstruktur ändert (d. h. er muss innerhalb der OnRegistration-Methode ausgeführt werden).
Anwender legen oft eine Zuordnung der Ressourcenstruktur für Berechnungszwecke an. Da die Ressourcenstruktur dynamisch ist, sollte die Struktur in der Zuordnung aktualisiert werden, wenn sich die Ressourcenstruktur ändert. Die Registrierungsfunktion wird aufgerufen, sobald sich die Ressourcenstruktur ändert.
Allerdings ist das Ausfüllen der Zuordnung für die Registrierung nicht relevant. Das heißt, dass die Leistung der OnRegistration-Funktion durch das Ausfüllen der Zuordnung herabgesetzt wird. Dies ist zur Laufzeit nicht wichtig, da es nicht sehr oft geschieht. Während der Infrastrukturverarbeitung kann dies jedoch häufig vorkommen, was zu einem beträchtlichen Leistungsabfall führt, ohne einen Nutzen zu liefern.
Faktisch muss der Code nur ausgeführt werden, wenn das System tatsächlich eine Berechnung durchführt. Anhand der IsRuntimeMode-Eigenschaft kann der Kunde ermitteln, ob der Code ausgeführt werden muss.
Das Ausfüllen von Zuordnungen und alle anderen Initialisierungen, die ausgeführt werden müssen, wenn sich eine Ressourcenstruktur ändert (die jedoch für die eigentliche Registrierung unerheblich sind), können in einer separaten Funktion ausgeführt werden.
Im nachfolgenden zweiteiligen Beispiel 1 enthält die erste Routine ("OnRegistration(dispatcher)") den Code, der für die Registrierung relevant ist und der in der OnRegistration-Funktion verbleiben muss. Die zweite Routine ("New") enthält den Code, der für die Registrierung nicht relevant ist und in die neue Funktion eingefügt werden kann:
Beispiel 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-Ressource
Next
End Sub
Beispiel 2
Sub OnRegistration(dispatcher)
Dispatcher.RegisterByResource “OnEvent”, ”my event type”, “my resource”
Dim a
For a = 1 to 1000000: next
End Sub
Dieser Code hätte eine ungünstige Wirkung auf die Phase der Infrastrukturverarbeitung der Berechnungen, ohne einen Nutzen zu liefern.
Stattdessen können Sie jetzt folgenden Code verwenden:
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
Hinweis: Diese Methode wird nicht mehr verwendet.
Diese Methode ermöglicht das Registrieren von Events, die von einer bestimmten Metrik gesendet wurden. Die Methode empfängt folgende Parameter:
Name der Methode, die bei Eintreffen des Events aufzurufen ist.
Typ der Events, die von dieser Registrierung empfangen werden.
Name der Ressource oder Ressourcengruppe, für die Events gesendet werden, oder 'Context.ClusterItem'. Dieser Parameter kann eine leere Zeichenfolge enthalten ("). Im Fall einer leeren Zeichenfolge wird die Registrierung für Events ausgeführt, die an alle Ressourcen gesendet wurden (mit "SendEvent").
Mit diesem Parameter wird bestimmt, ob die aktuelle Metrik nur Metrik-Events vom Kontrollagenten (dann ist "tracking" der anzugebende Wert) oder von allen Agenten empfangen soll (jeder Arbeitsagent der aktuellen Metrik empfängt Events von dem entsprechenden Agenten der sendenden Metrik. So empfängt beispielweise der stündliche Agent Events vom stündlichen Agenten, der tägliche Agent vom täglichen Agenten usw. Der Wert, der in diesem Fall angegeben werden sollte, ist "equivalent"). Die beiden möglichen Werte sind "tracking" und "equivalent".
Name der Metrik, von der Events empfangen werden.
Name des Vertrags, zu dem die obige Metrik gehört. Dieser Parameter ist optional. Wenn er nicht angegeben wird, sollte der ContractPartyName-Parameter (siehe die folgende Beschreibung) ebenfalls nicht angegeben werden. Falls diese Parameter nicht angegeben werden, geht das System davon aus, dass "MetricName" zum aktuellen Vertrag gehört.
Name der Vertragspartei, zu der der obige Vertrag gehört. Dieser Parameter ist optional. Falls der Parameter nicht angegeben wird, geht das System davon aus, dass "ContractName" zu derselben Vertragspartei gehört wie der aktuelle Vertrag.
Hinweis: "ProcedureName" = "MethodName" und "EventType=EventTypeName"
Wird aufgerufen, wenn ein Zeitfenster erreicht wird.
Wird beim Verlassen eines Zeitfensters aufgerufen.
|
Copyright © 2013 CA.
Alle Rechte vorbehalten.
|
|