Apama Analytics Builder for Cumulocity IoT 10.3.1 | Dokumentation für Apama Analytics Builder for Cumulocity IoT | Bedienungsanleitung für Apama Analytics Builder for Cumulocity IoT | Verbindungen und Blöcke | Verbindungen zwischen Modellen
 
Verbindungen zwischen Modellen
Mit den Aus- und Eingabeblöcken können Sie mehrere Modelle miteinander verbinden. Ein Modell, das einen Ausgabeblock wie den Ausgabe-Messwert-Block enthält (für Measurement-Objekte von Cumulocity IoT), generiert eine Reihe von Ereignissen, und diese Ereignisse können in einem anderen Modell von einem passenden Eingabeblock (wie zum Beispiel dem Gerätemesseingabe-Block) verarbeitet werden.
Die Ein- und Ausgabeblöcke identifizieren eine Reihe von Ereignissen, indem sie einen Schlüssel für diese Ereignisreihe festlegen. Der Schlüssel kann aus mehreren Blockparametern bestehen und unterscheidet diese Ereignisreihe von anderen Ereignisreihen des selben Blocktyps. Zum Beispiel:
*Bei Ein- und Ausgaben von Measurement-Objekten würde der Schlüssel aus Folgendem bestehen: Gerät, Fragment, Serie und Messtyp. Der Unit-Parameter, der in einem Ausgabeblock angegeben wird, ist nicht Bestandteil des Schlüssels (er dient nur zur Information), und es ist nicht erforderlich, dass er mit den Parametern des Eingabeblocks übereinstimmt.
*Bei Event-Objekten würde der Schlüssel aus Folgendem bestehen: Gerät und Ereignistyp.
Wenn ein Modell einen Ausgabeblock hat, der eine Reihe von Ereignissen für einen bestimmten Schlüssel generiert, und wenn ein zweites Modell einen Eingabeblock hat, der dieselbe Ereignisreihe (mit denselben Schlüsselparametern) verarbeitet, dann bildet dies eine Verbindung zwischen dem ersten und dem zweiten Modell. Nachdem das erste Modell seinen Ausgabeblock verarbeitet hat, wertet das zweite Modell die neue Eingabe mit seinem Eingabeblock aus.
Ähnlich wie bei der Verarbeitungsreihenfolge der Verbindungen innerhalb eines Modells (siehe auch Verarbeitungsreihenfolge der Verbindungen), gilt Folgendes, wenn ein Ausgabeblock in einem Modell eine Reihe von Ereignissen generiert, die von einem Eingabeblock in einem anderen Modell verarbeitet werden:
*Ein einzelnes Modell kann dieselben Ereignisse an mehr als ein anderes Modell senden. Somit ist es möglich, dass ein einzelnes Modell eine allgemeine Vorverarbeitung durchführt, wie zum Beispiel die Umrechnung von Einheiten oder die Berechnung eines Durchschnittswerts (mit dem Durchschnitt (Mittelwert)-Block) und dass dieser Wert anschließend von mehreren anderen Modellen verwendet wird.
*Die Modelle werden in Reihenfolge gemäß den Verbindungen zwischen den Modellen ausgeführt. Die Quelle einer Verbindung wird immer vor dem Ziel der Verbindung ausgewertet. Wenn ein Modell Verbindungen zu mehreren Blöcken hat, die alle von demselben Ursprungsereignis kommen, dann werden zuerst alle Verbindungen ausgewertet, und das empfangende Modell wertet alle Eingaben anschließend einmal aus.
Ähnlich wie bei den Verbindungseinschränkungen in einem Modell (siehe auch Verbindungseinschränkungen), gibt es Einschränkungen wie die Aus- und Eingangsblöcke zum Verbinden der Modelle benutzt werden können:
*In allen Modellen darf nur ein einziger Block eine Ereignisreihe für einen bestimmten Schlüssel generieren.
*Zwischen den Modellen können keine Kreisläufe erstellt werden. Ein Modell, das über einen Eingabeblock Ereignisse von einem anderen Modell empfängt, kann keinen Ausgabeblock enthalten, der Ereignisse generiert, die das andere Modell verarbeiten würde. Dies gilt sogar dann, wenn eines der Modelle zwei separate Teile enthält, so dass es keinen tatsächlichen Kreislauf bezüglich der Verbindungen zwischen den Modellen gibt.
Jedes Modell, das sich nicht an diese Einschränkungen hält, verursacht bei dem Versuch es zu aktivieren einen Fehler, wenn es in Kombination mit den bereits aktivierten Modellen verwendet wird. Dies gilt für das letzte Element in einem Modellkreislauf. Bei einem solchen Fehler liegt das Problem eher in der Interaktion zwischen den Modellen und nicht in einem modellspezifischen Problem; jedoch werden vorhandene, bereits aktivierte Modelle nicht automatisch deaktiviert. Wenn zum Beispiel mehrere Modelle dieselbe Ereignisreihe (mit demselben Schlüssel) generieren, dann kann das erste zu aktivierende Modell bereitgestellt werden, aber alle nachfolgenden Modelle melden beim Aktivierungsversuch einen Fehler.
Das folgende Beispiel benutzt drei Modelle: Modell1, Modell2 und Modell3. Ein Kreislauf kann in den folgenden Fällen bestehen:
*Ein Ausgabeblock von Modell1 erzeugt eine Reihe von Ereignissen, die von einem Eingabeblock in Modell2 verarbeitet werden, und Modell2 enthält einen Ausgabeblock, der eine zweite Reihe von Ereignissen generiert, und
*Modell3 enthält einen Eingabeblock, der eine Reihe von Ereignissen von Modell2 verarbeitet, und Modell3 enthält auch einen Ausgabeblock, der eine Reihe von Ereignissen generiert, die von einem Eingabeblock in Modell1 verwendet werden.
In diesem Fall können nur zwei dieser Modelle fehlerfrei aktiviert werden. Bei einer Aktivierung in Reihenfolge hätte nur Modell3 einen Fehler. Wenn Modell1 oder Modell2 jedoch nicht aktiv wären, dann könnte Modell3 aktiviert werden. Der Fehler tritt auch dann auf, wenn eines der Modelle keine Verbindung von dem Eingabeblock in der Kette zu dem Ausgabeblock in derselben Kette hat, wie in dem Beispiel für Modell3 unten: Die Ereignisse von Modell2 bilden bei der Verbindung mit dem An Modell1 Messung-Ausgabeblock keinen Kreislauf; sie zählen aber als Kreislauf, weil sich beide im selben Modell befinden. (In diesem Fall könnte das Problem gelöst werden, indem man das Modell in zwei Modelle aufteilt und den Kreislauf somit beseitigt.)

Copyright © 2018-2019 | Software AG, Darmstadt, Germany and/or Software AG USA, Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors.