Im Förderprojekt BIoTOPE entwickelt StoneOne als Konsortialführer einen konfigurierbaren und anpassbaren Marktplatz sowie eine IoT Betriebsplattform für flexible und dynamische IoT Smart Services. StoneOne setzt das Projekt zusammen mit der Wolfsburg AG, einem Gemeinschaftsunternehmen der Stadt Wolfsburg und der Volkswagen AG, sowie der TU Clausthal und Universität Mannheim um.
Bei BIoTOPE (Basistechnologie und Engineering-Methodik für die emergente Genese und semantische Komposition von IoT-Ökosystemen) geht es vor allem auch darum IoT Smart Services intelligent zu verknüpfen. Zudem sollen insbesondere offene Systeme, deren Schnittstellen nicht durch ein einheitliches semantisches Modell standardisiert sind, unterstützt werden, damit auch IoT-Systeme ohne Branchenstandard integriert werden können. Dadurch sollen eigenständig neue, kombinierte Services mit Konfiguration und Consulting kreiert werden, etwa im Bereich „Mobilität“. Die zentrale Herausforderung war also, einen Mechanismus zu finden, mit dem sich Workflows als intelligente Zusammenschaltung verschiedener Services möglichst einfach ohne zusätzlichen Entwicklungsaufwand für die Anwender in IoT-Szenarien umsetzen lassen.
Mit dem „Service Composer“ haben wir deshalb ein Tool für die intelligente Verknüpfung von IoT Services entwickelt, sodass selbst ganz neue Anwendungen im Plattformkontext von Consultants für Nutzer modelliert werden können – außerdem stehen Analysetools auf Basis von Ontologien zur Verfügung, die für vorkonfigurierte Einsatzszenarien auch automatisch neue „emergente“ Services generieren können – diese lassen sich bei Bedarf noch im Composer optimieren und anpassen. Zusätzlich können diese auch mit mobilen Oberflächen zur Nutzung auf dem Handy verbunden werden.
Dies befähigt die Plattform dazu mandantenweite Anforderungen zu erfüllen, die den Anwendungsanbietern zuvor unbekannt waren. IT-affine Nutzer erzeugen neue Anwendungen, indem diese ihre Lösungsansätze aus vorhandenen, kleineren Services selbst zusammenstellen. Dabei kann der Nutzer aus einer Vielzahl unterschiedlich komplexer Services, die bereits auf der Plattform existieren, wählen und mit eigener, komplett neuer Logik zusammenführen. In abgespeicherter Form kann dieser neue Service selbst wiederum Teil eines anderen, selbstkomponierten Service werden. Einfach formulierte Anfragen von Endanwendern können über eine mehrstufige Analyse auf Basis einer kontextbezogenen Ontologie in eine vom Composer lesbare Metasprache übersetzt werden, die dann als emergente Anwendung auch vom Endanwender genutzt werden kann. Begleitende inhaltliche Informationen, die für den Prozess notwendig sind, werden dabei automatisch vom User abgefragt.
Da das Angebot aus eigenen und von der Plattform bereitgestellten Services ein hohes Wachstum erreichen kann, ist es wichtig starke Filtermechanismen mitzubringen. Diese werden teilweise aus der S1 IoT Platform von StoneOne adaptiert. So zum Beispiel die Filter rund um Marktbereiche, Sensoren und Aktoren. Zusätzlich wird die BIoTope Plattform mit einem Kontext-basierten Filter ausgestattet, hier für Smart Mobility. Die Filter können aber auch in anderen Szenarien zum Einsatz kommen, etwa im Bereich Smart Industry oder Smart Cities.
Aufbau des Service Composers
Der Service Composer teilt sich in die drei Bestandteile auf. Die linke Seitenleiste enthält die zur Komposition vorhandenen Services und Basisoperationen. Der mittlere Bereich ist der eigentliche Editor für den zu komponierenden Service. Hier können Basisoperationen (auch Kontrollelemente genannt), sowie Services aus dem Service-Repository (dem Marktplatz, sowie den Services die vom Anwender bereits gekauft/erstellt wurden) platziert und zu einem neuen Service-Graphen zusammengefügt werden. Am rechten Rand gibt es dann noch einen kontextabhängigen Konfigurationsbereich. Hier werden die Konfigurationsmöglichkeiten des jeweils gerade selektierten Knoten (Service oder Basisoperator) dargestellt. Sowohl die Liste der Services, als auch der Konfigurationsbereich können eingeklappt werden, um den Editorbereich zu maximieren. Dies ist vor allem auf mobilen Endgeräten wie Smart Pads von Vorteil, bei denen die Bildschirmgröße geringer ist.
Editor des Service Composers
Basisoperationen / Kontrollelemente
Die Plattform bringt derzeit die folgenden Basisoperationen mit aus denen der Anwender dann beliebige Services erstellen kann:
- Start – Der Einstiegspunkt.
Jeder Service hat genau einen Start-Knoten an dem die Ausführung beginnt. Am Startknoten werden Parameter definiert, die bei der späteren Ausführung übergeben werden müssen. - Ende – Hier endet die Ausführung.
Es kann aus Gründen der Übersichtlichkeit mehrere Ende-Knoten geben. Am Ende-Knoten werden die Rückgabewerte definiert, die bei einer Verwendung des Services in einem weiteren Service ausgewertet werden können. - Rule – Eine Regelauswertung entsprechend der If-Then-ElseIf-Else Struktur.
Eine Regel kann beliebig viele Elseif Blöcke enthalten. Mit diesem Operator können Verzweigungen im Ablauf realisiert werden, basierend auf Auswertungen der bisherigen Datenwerte. - Rest – Mit diesem Knotentyp kann eine externe Funktion über einen HTTP-REST Aufruf angebunden werden.
- ExtractFromJson – Liegt ein Eingabedatum vom Typ String vor,
bei dem es sich eigentlich um ein serialisiertes JSON-Objekt handelt, so kann mithilfe dieses Knotens auf die Attribute im JSON-Objekt zugegriffen werden. Dies kommt vor allem dann vor, wenn Rückgabewerte von externen Funktionen, die zuvor per REST aufgerufen wurden, evaluiert werden müssen. - ComposeToJson – Der Gegenpart zu ExtractFromJson.
Hier kann ein JSON-Objekt aus mehreren Datenwerten erzeugt und dann in einen String serialisiert werden. - StringBuilder – Dieser Knotentyp erlaubt dem Anwender beliebige Strings aus einzelnen Datenwerten zusammenzustellen.
Weitere Basisoperationen sind in Planung.
Es wird unterschieden zwischen dem Funktionsfluss, also der Reihenfolge, in der die Knoten ausgeführt werden, und dem Datenfluss, also der Angabe, wo ein benötigtes Eingabedatum herkommt.
Funktionsfluss und Datenfluss
Der Funktionsfluss wird im Editorbereich des „Service Composers“ mit dunkelblauen Verbindungslinien zwischen den Knoten dargestellt und dockt jeweils im oberen Bereich eines Knotens an.
Der Datenfluss wird mit türkisfarbigen Verbindungslinien dargestellt und dockt jeweils im unteren Bereich eines Knotens an den jeweiligen Datenkanälen an.
Der Nutzer kann die Linien via Drag & Drop von einem Service zum nächsten, bzw. von einem Datenausgang zu einem kompatiblen Dateneingang ziehen und diese dadurch miteinander verbinden.
Lessons Learned und Ausblick
Das Zusammensetzen von „einfachen“ Services zu für User/Kunden Lösungen ist bisher eine Herausforderung und erfordert meist individuelle Implementierungen. Über den Composer wird dieser Prozess deutlich vereinfacht und kann sowohl von Consultants als auch IT-affinen Benutzern eingesetzt werden, um „ihren“ Service zu komponieren und ggf. auch mit einer mobilen App zu verbinden.
Die automatische Analyse von Klartext Benutzer-Anforderungen auf Basis eines Kontextes und passender Ontologien wird von der TU Clausthal und der Uni Mannheim im Open Source Kontext vorbereitet und wird den Zugang für den Nutzer nochmal deutlich vereinfachen.