Wie zuvor erwähnt, sind die Eingaben für die Business-Logik die Engine-Events und die Rohdaten-Events.
Von der Business-Logik empfangene Rohdaten-Events werden von der Erfassungsfunktion bestimmt, bei der der Code einen bestimmten Satz an Rohdaten-Events anfordert, die durch ihren Event-Typ und den Ressourcen-Bezeichnern definiert werden.
In der Business-Logik ordnet die Erfassung auch eine benutzerspezifische Subroutine zu, die ausgeführt wird, um das Rohdaten-Event zu verarbeiten, sobald ein Event erfasst wird. (Standardmäßig ist dies das OnXXXEvent, das sinnvoll umbenannt werden sollte.)
Die Engine-Events werden von der Engine entsprechend den zugeordneten Vertrags- und Metrik-Definitionen ausgelöst. Sobald das Engine-Events ausgelöst und empfangen wird, führt die Engine die angemessene Eventroutine aus. Jedes Engine-Event hat eine implizite Eventroutine. Diese Eventroutinen sind Funktionen und Verfahren, die oben im VBScript definiert sind. Die Eventroutine, die die Erfassung ausführt, und die "Ergebnis"-Funktion müssen beide zwingend in den Code implementiert werden. Alle anderen Eventroutinen sind optional. Allerdings befasst sich die Business-Logik nicht mit Engine-Event, für die keine Eventroutinen implementiert wurden. Deswegen ist es eine gute Vorgehensweise, sie an Ort und Stelle zu belassen (auch wenn nicht verwendet werden), um zukünftige Erweiterungen zu ermöglichen.
Hinweis: Beim Schreiben des Business-Logik-Skripts ist es wichtig, alle Engine-Events zu implementieren, um alle endgültigen Möglichkeiten abdecken zu können. Auch wenn zum Beispiel während der ersten Phase der Implementierung keine Zeitfenster-Definition verfügbar war, dies jedoch zukünftig der Fall sein sollte, dann müssen alle Formeln geändert werden. Es wird daher empfohlen, dass der Business-Logik-Experte das Verhalten "in timeslot" und "out of timeslot" weit im Voraus festlegt, auch wenn diese Verhaltensweisen anfänglich nicht verfügbar sind. So sind die erforderlichen Änderungen geringfügig, wenn das Verhalten eingeführt wird.
Nachfolgend finden Sie verschiedene Engine-Events und ihre Eventroutinen:

Nachfolgend sind die Schritte aufgeführt, denen der Berechnungsmechanismus (PslWriter-Service) zur Verarbeitung einer einzelnen Business-Logik-Formel folgt:
Hinweis: Wenn die Vertragsversion zuerst übernommen wird, und eine Prognose ausgewählt wurde, wird die Prognosefunktion statt der Ergebnisfunktion aufgerufen. Dies trifft allerdings nur dieses eine Mal für jede Version zu.
Während jedes Berechnungszyklus bewertet die Engine, auf worauf die entsprechenden Engine-Events und Rohdatenereignisse im Berechnungszeitraum basieren. Sie sortiert sie zunächst nach der Zeit und sendet dann die relevanten Formeln zur Berechnung. Die Zeit des Rohdatenereignisses ist sein Zeitstempel; die Zeit des Engine-Events ist seine Aktivierungszeit. Beide Eventtypen werden dann in einer Zeitsequenz zusammengeführt und zur Berechnung gesendet.
Das Timing der Events entspricht der zugewiesenen lokalen Metrik, Parameter "Time" der Event-Handler (d. h. OnPeriodStart (Time)) und der Zeitstempel des Rohdatenereignisses entsprechen ihrem UTC-Wert. Die Engine vergleicht sie gemäß ihren UTC-Werten, um so einen konstanten Bezugspunkt zu verwenden.
Beispiel:
Wenn der Zeitzonenunterschied einer UTC-Metrik zwei Stunden (d. h. GMT+2) beträgt, und ein Vorfallöffnungs-Event einen Zeitstempel von 10.00 Uhr hat, wird er Zeitstempel, den der Event Handler nutzt, in der Engine entsprechend verschoben und beginnt tatsächlich um 8.00 Uhr UTC. Ausgehend von der Annahme, dass der Adapter auf die Nutzung derselben Zeitzone konfiguriert ist, werden die Rohdatenereignisse auch in der Datenbank um 2 Stunden zurück auf UTC-Zeit zurückgesetzt. Wenn die Events zur Business-Logik weitergeleitet werden, nutzt der Berechnungsagent, der für die Berechnung der Events für den Zeitraum ab 10.00 Uhr zuständig ist, eigentlich die UTC-Zeit aller Events ab 8.00 Uhr. Wenn Sie die Meldung out.log im Code zum Ausdrucken der Zeitstempel verwenden, wird trotz des festgelegten Zeitraums von (gemäß der Metrik) 10.00 Uhr der auf UTC verschobene Zeitstempel - also 8.00 Uhr - angezeigt.
In der folgenden Berechnungsanforderung muss der Zeitstempel des Events konvertiert werden, bevor sie angewendet wird:
Wenn eine Metrik in der Berechnung der Häufigkeit von Vorfällen besteht, die an demselben Tag geschlossen wurden, an dem sie eröffnet wurden, muss die Öffnungs- und Schließungszeit eines jeden Vorfalls verglichen werden. Wenn die Öffnungs- und Schließungszeit des Vorfalls auf denselben Zeit fällt (und in dasselbe definierte Zeitfenster), wird der Vorfall gezählt.
Es kann passieren, dass sich der Tag bei der Verschiebung des Vorfalls von der ursprünglichen Lokalzeit zur UTC-Zeit ändert (d. h. dass wieder GMT+2 verwendet wird). (Ein Vorfall, der um 1.00 Uhr geöffnet wird, wird in UTC zurück auf 23.00 Uhr am Vortag verschoben). Er wird dann nicht gezählt, selbst wenn er eigentlich hätte gezählt werden müssen. Dies ist eine Situation, in der die Zeit zunächst zurück in die lokale Metrik-Zeit konvertiert werden muss, und erst dann verglichen werden kann. Verwenden Sie in einem solchen Fall die Methode GetLocaleTime(utcTime). Bei dieser Methode wird eine Zeit in einer UTC-Zeitzone in die entsprechende Zeitzone der lokalen Metrik konvertiert.
Nachfolgend finden Sie den Event Handler-Code:
Sub OnIncidentEvent(eventDetails)
If dateDiff("d",Tools.GetLocaleTime(eventDetails.time),_
Tools.GetLocaleTime(eventDetails("ClosedAt)))=0 then
CountIncidents=CountIncidents+1
End If
End Sub
| Copyright © 2012 CA. Alle Rechte vorbehalten. | Senden Sie CA Technologies eine E-Mail zu diesem Thema. |