Eingabeblöcke und Ereignissteuerung
Eingabeblöcke stellen dem Modell Daten aus externen Quellen zur Verfügung (zum Beispiel Messwerte von Cumulocity IoT). Viele Datenquellen haben auf jedem Dateneintrag einen Zeitstempel, der den Zeitpunkt angibt, zu dem eine Messung oder ein Ereignis tatsächlich erfolgt ist. Bei der Übertragung der zu verarbeitenden Daten an das Apama-System kann es zu Verzögerungen kommen, was dazu führt, dass Apama die Ereignisse nicht in der richtigen Reihenfolge empfängt.
Datenquellen mit Zeitstempeln (wie zum Beispiel Messwerte) können neu angeordnet werden. Operationen haben zum Beispiel keine Zeitstempel und werden daher so verarbeitet wie sie empfangen werden, ohne Neuanordnung.
Analytics Builder stellt mehrere Eingabeblocktypen zur Verfügung, die Datenquellen mit Zeitstempeln verwenden. Diese Blocktypen haben den Parameter
Zeitstempel ignorieren, mit dem Sie die Neuanordnung der Daten deaktivieren können. Die Eingaben werden dann so verarbeitet, wie sie empfangen werden. Siehe auch
Häufig vorkommende Blockeingänge und Parameter.
Die folgende Tabelle gibt an, ob die zur Verfügung stehenden Eingabeblocktypen in der Lage sind, die Daten neu anzuordnen:
Eingabeblocktyp | Neuanordnung ist möglich |
Messwerteingabe | Ja |
Ereigniseingabe | Ja |
Alarmeingabe | Ja |
Operationseingabe | Nein |
Managed-Object-Eingabe | Nein |
Positionseingabe | Ja |
Anmerkung:
Der Positionseingabe-Block ist ein spezialisierter Ereigniseingabe-Block. Sie können auch den Cron Timer-Block verwenden, um ein Modell periodisch zu aktivieren. Im Gegensatz zu den oben genannten Blöcken ist der Cron Timer-Block nicht mit einem Gerät verknüpft und befindet sich in der Werkzeug-Kategorie der Palette.
Bei Datenquellen, die Zeitstempel auf den Dateneinträgen haben, kann der Eingabeblock mit Ereignissen umgehen, die nicht in der richtigen Reihenfolge empfangen wurden. Zu diesem Zweck halten die Eingangsblöcke alle empfangenen Ereignisse in einem Umordnungspuffer und verzögern deren Verarbeitung bis die vordefinierte Verzögerungszeit ab dem Zeitstempel der Quelle abgelaufen ist. Durch das Verzögern der Ereignisverarbeitung relativ zum Zeitstempel der Quelle kann der Eingabeblock die Ereignisse neu anordnen. Der entscheidende Parameter für diesen Prozess ist die Dauer der Zeit, um die die Ereignisse verzögert werden. Sie können die Zeit in Sekunden festlegen, um die die Eingabewerte von den Eingangsblöcken verzögert werden. Senden Sie hierfür eine
POST-Anfrage an
Cumulocity IoT, die den Wert des Keys
timedelay_secs ändert. Ausführliche Informationen finden Sie unter
Konfiguration.
Die Eingabeblöcke gehen davon aus, dass Ereignisse zwar in einer anderen Reihenfolge geliefert werden können, sie jedoch von Apama gemäß der definierten Verzögerungszeit empfangen werden. Wenn ein Ereignis nach einer Verzögerung von mehr als den definierten Sekunden empfangen wird (das heißt, wenn es eine Differenz gibt zwischen dem Zeitstempel des Ereignisses und der Zeit auf dem System, auf dem Apama ausgeführt wird), dann wird es verworfen, wenn ein Ereignis für denselben Zeitstempel oder einen neueren Zeitstempel bereits vom Modell verarbeitet wurde. Daher ist es möglich, dass ein altes Ereignis von einem Modell verarbeitet, aber von einem anderen Modell verworfen wird.
Wenn der Wert für die Verzögerungszeit zu niedrig eingestellt ist, dann kann eine kleine Verzögerung dazu führen, dass Apama ein Ereignis verwirft, was zu fehlerhaften Ergebnissen führen kann. Je höher der Wert für die Verzögerungszeit ist, desto größer ist die Verzögerung vor der Verarbeitung eines Ereignisses. Daher ist es wichtig, einen geeigneten Wert für die Verzögerungszeit zu finden, der zu der Umgebung passt, in der die Ereignisse an Apama geliefert werden.
Anmerkung:
Ein Ereignis, das über die festgelegte Anzahl von Sekunden hinaus verzögert ist, wird immer dann verworfen, wenn benutzerdefinierte Eingabe- oder Ausgabeblöcke, die mit der API-Version 1 des
Analytics Builder Block SDK geschrieben wurden, als Extensionen hinzugefügt werden. Informationen darüber, wie Sie solche Blöcke auf die API-Version 2 migrieren können finden Sie in der Dokumentation unter
https://github.com/SoftwareAG/apama-analytics-builder-block-sdk.
Der Korrelator schreibt die Anzahl der verworfenen Ereignisse regelmäßig in das Korrelatorlog. Siehe
Konfiguration (den Key zur Drosselung der Protokollierung) und
Korrelatorlog anzeigen.