Vorheriges Thema: Fallstudie 16: Designmuster der Business-LogikNächstes Thema: Fallstudie 18: Registrierung


Fallstudie 17: Integrierte Funktionalität

ACE bietet integrierte Funktionalität und Tools für verschiedene Zwecke. Diese integrierte Funktionalität sollte in VBS geschrieben werden. Da VBS eine interpretierte Sprache ist, führt die Reproduzierung in VBS zu einer Verschlechterung der Leistung.

Im Folgenden finden Sie eine Liste der integrierten Funktionen und der entsprechenden Verwendungsweise:

IsWithinTimeslot

Dies ist die einfachste der integrierten Funktionen. Sie aktiviert die Business-Logik, die angibt, ob sich das System gegenwärtig in einem Zeitfenster befindet. Das heißt, es muss keine Variable in den Funktionen für den Eintritt in das Zeitfenster und das Verlassen des Zeitfensters verwaltet werden. Beispiel: Statt folgenden Code auszuführen:

Dim amIWithinATimeslot
Sub OnTimeslotEnter(time)
     amIWithinATimeslot = 1
End sub
Sub OnTimeslotExit(time)
     amIWithinATimeslot = 0
End sub
Sub OnEvent(eventDetails)
     If amIWithinATimeslot = 1 Then
           count = count + 1
     End if
End sub

können Sie diesen viel einfacheren Code ausführen:

Sub OnEvent(eventDetails)
     If context.IsWithinTimeslot Then
          count = count + 1
     End if
End sub

Wenn Sie Informationen zum Zeitstempel von Zeitfenstereintritt und Verlassen des Zeitfensters verwenden oder beibehalten möchten, ist diese Funktionalität nicht geeignet. Normalerweise ist dies aber nicht erforderlich, und dieser Code ist ausreichend.

TimeOfLastEvent

Diese Funktion gibt den Zeitstempel der letzten verarbeiteten Rohdaten oder des letzten verarbeiteten Zwischendaten-Events aus. Das heißt, dass Sie diese Informationen nicht im Event-Handler speichern müssen, da sie direkt über diese Funktion verfügbar sind. Zum Beispiel:

Function result
     Dim LastEventTimestamp
     LastEventTimestamp = Kontext.TimeOfLastEvent
End function

TimeOfLastEventHandler

Diese Funktion gibt den Zeitstempel der letzten von ACE aufgerufenen Event-Handler zurück. Dies schließt nicht nur Event-Handler für Roh- und Zwischendaten-, sondern auch System-Events ein, die ebenfalls aufgerufen wurden. Dies ist besonders nützlich bei Event-Handler, die die Zeit z. B. für die Ergebnisfunktion nicht empfangen. Zum Beispiel:

Function result
     Dim LastEventHandlerTimestamp
     LastEventHandlerTimestamp= Context.TimeOfLastEventHandler
End function

NetTime

Diese Funktion erlaubt es Ihnen, zwei Zeitstempel und die Nettozeit (in Sekunden) anzugeben, in der sich das System innerhalb des Zeitfensters für die aktuelle Regel zwischen diesen beiden Zeitstempeln befunden hat. Dies ist eine besonders aufwändige Funktionalität, die nicht in VBS implementiert werden sollte. Die Implementierung in VBS würde eine Liste aller Zeitfenstereintritte und -austritte beinhalten oder die direkte Berechnung des Unterschieds zwischen den Zeiten der Zeitfenstereintritte und -austritte, um die Zeitspanne dazwischen zu ermitteln. Unter extremen Bedingungen könnte dies oft geschehen und die Berechnungsleistung negativ beeinflussen. Mit der internen Funktion erreichen Sie nach umfassender Optimierung dasselbe, sind nur effizienter. Zum Beispiel:

Function result
     Dim MyNetTime
     MyNetTime = Tools.NetTime(MyBeginTimestamp, MyEndTimestamp)
End function

Das Kontextobjekt

Das Kontextobjekt umfasst verschiedene Parameter, die Informationen bieten zu:

Der Zugriff auf diese Informationen direkt über die Datenbank mit Safe ODBC ist nicht sehr effizient und nicht sinnvoll, da die Informationen bereits über das Kontextobjekt verfügbar sind. Verwenden Sie nach Möglichkeit immer die integrierte Funktionalität, um Informationen abzurufen.