Offline Framework in Neptune in der Praxis anwenden

In der Regel sind mobile Geräte dauerhaft online und viele Applikationen funktionieren nur mit einer aktiven Internetverbindung. Es gibt jedoch einige alltägliche Situationen, in denen keine Verbindung mit einem Server oder dem Internet hergestellt werden kann. Ein Instandhalter möchte beispielsweise eine Meldung erfassen und ist an einem Ort mit unzureichender Netzabdeckung oder ein Mitarbeiter möchte seine Vorgänge bearbeiten, befindet sich außerhalb der Unternehmensinfrastruktur und kann deshalb keine Verbindung zum eigenen SAP-System herstellen.

Eine einfache Möglichkeit diese Problematiken zu umgehen, ist der Einsatz von offline Anwendungen. Hierbei bietet die Neptune Plattform einen deutlichen Mehrwert, da sie klassische SAPUI5 Anwendungen offlinefähig gestalten kann und das, ohne eine Menge Arbeit in die native App Entwicklung stecken zu müssen. Mit dem Neptune Designer ist dies out oft he box realisierbar.

Es gibt diverse Möglichkeiten Apps offlinefähig zu machen, aufgrund der enormen Einfachheit, bietet sich ein Vorgehen besonders an: Im Neptune Designer finden sich im rechten Object/Properties Panel bestimmte Controls, die mit der Kategorie „Model“ versehen sind. Dazu zählen sap.m.Table, sap.m.ScrollContainer, sap.m.List und alle weiteren Controls denen eine Model Source zugeordnet werden kann. Ebenso bietet Neptune mit den nicht graphischen Controls neptune.model.array sowie neptune.model.object die Möglichkeit, Daten in der Applikation zu lagern.

Die entsprechenden Properties für die offline Funktionalität finden sich im Attributes Panel, das mit einem Klick auf ein entsprechendes Control im Objects Tree auf der rechten Seite des Arbeitsbereiches angezeigt wird. Der Entwickler erstellt also eine Tabelle, bindet die Datenquelle an und setzt nun im Attributes Panel die Property setEnableCache auf true, setInitLoad auf cache und wählt für die Property setCacheType einen Cachetypen aus.

Aktuell stehen die drei Cachetypen WebSQL, LocalStorage und IndexedDB zur Auswahl, wobei die Wahl erst einmal an der Funktionalität nichts verändert. Welchen Cachetyp man wählen sollte, hängt vom technischen Hintergrund ab. Dabei ergeben sich einige Unterschiede und Umstände, die in die Entscheidung mit einfließen sollten.

WebSQL ermöglicht es, größere Datenmengen zu sichern.  Es handelt sich dabei um eine Datenbank, die innerhalb des Browsers betrieben wird, allerdings nur in Chrome und Safari zur Verfügung steht. Im Internet Explorer, Mozilla Firefox oder Edge funktioniert diese Datenbank nicht. Zusätzlich handelt es sich bei WebSQL um eine veraltete Technologie. Daher sollte man sich besser für eine der beiden vorgenannten Möglichkeiten entscheiden.

LocalStorage ist ein Cache, der ebenfalls im Browser Informationen abspeichert, jedoch keine Datenbank auf SQL Basis. LocalStorage ist bequem und lässt sich auch sehr einfach über JavaScript auslesen. Die größte Schwachstelle von LocalStorage liegt darin, dass es nur für kleine Datenmengen geeignet ist. Lediglich 5-10 MB sind hier im Normalfall möglich, was sich eher für Strukturen als wirkliche Tabellen eignet.

Die dritte Option ist aktuell die vermutlich beste. Auch bei IndexedDB handelt es sich um eine Datenbank, die im Browser läuft. Im Gegensatz zu WebSQL wird sie jedoch von allen modernen Browsern unterstützt. IndexedDB kann große Datenmengen fassen, da die Speichergröße anhand der Festplattengröße berechnet wird.

Sobald die entsprechenden Properties für das Control gesetzt wurden, können Daten per Ajax Call (Online) eingelesen werden. Nach dem Einlesen kann die Funktion setCache + Controlname ausgeführt werden und die Daten werden im Cache abgelegt. Mithilfe von getCache + Controlname können die Daten wieder ausgelesen werden. Die Funktion setInitLoad=cache des Neptune Frameworks liest die Daten beim Init der Anwendung aber bereits aus.

Damit Meldungen offline erstellt werden können, legt man ein neptune.model.array mit entsprechenden Properties an. Der User kann dann Daten in eine Maske eingeben und speichern. Anschließend werden die Daten über die Codesnippet Methode unter Rechtsklick in den Editor SAPUI5 => Offline => Model Add dem Model hinzugefügt. Daraufhin können mit der setCache + Controlname Methode die Daten gesichert werden.

Damit die Daten schlussendlich mit dem SAP-System synchronisiert werden, muss ein Sync Button implementiert werden, der prüft, ob das Gerät online ist (AppCache.isOffline) und dann einen AjaxCall mit dem Model an das Backend zur weiteren Verarbeitung sendet.

Applikationen offline nutzbar zu machen, bietet einen enormen Vorteil und erhöht die Produktivität sowie Flexibilität. Die Umsetzung ist mit wenig Aufwand verbunden und bringt einen großen Nutzen. Haben auch Sie Bereiche in Ihrem Unternehmen, die Sie digitalisieren möchten? Bei Fragen zu Neptune Software, einer Demo oder auch den Lizenzen kommen Sie direkt auf uns unter vertrieb@fink-its.de zu. Wir helfen Ihnen gerne weiter.