Die Zeiten der Pandemie zeigen, dass sich  mehr und mehr Tätigkeiten ins heimische Büro verlagern. Doch nicht erst seitdem dieser zusätzliche Datenverkehr die Infrastruktur verstärkt belastet, besteht die Anforderung, auch in WLAN- und mobilfunkfreien Bereichen, bestimmte Funktionen einer Anwendung verfügbar zu halten. Die lokale IndexedDB kann dafür verwendet werden, UI5-App-Daten zu speichern.

In diesem zweiten Teil geht es um das Offline-Anlegen und Löschen von Daten sowie die anschließende Synchronisierung bei wiederhergestellter Internetverbindung.

Inhalt Expertblog Teil 2/2

  1. Daten anlegen: Online
  2. Daten anlegen: Offline
  3. Daten löschen: Offline
  4. Synchronisierung
  5. Ausblick

1. Daten anlegen: Online

Im Online-Zustand funktioniert das Speichern der Daten über die Schnittstelle des Table Models. Die neuen Daten werden über die GUI angelegt und an das Backend übertragen.

Add new Gui Backend

Get Model save data response

Die Tabelle zeigt die aus dem Backend gelesenen Daten an.

Backenddaten

2. Daten anlegen: Offline

Für den Testfall wird das Netzwerk über die Chrome Browser-Optionen deaktiviert. Für den Nutzer läuft der Anlageprozess an der Oberfläche gleich. Wie auch im Online-Modus werden die Daten über die GUI angelegt.

Deaktivierung Testfall

Add new on indexed

Request failed

View1.controller.js

Nach dem Speichern wird manuell nachgelesen (S1).

Copy to Clipboard

Table.js

Copy to Clipboard

oData.js

Nachdem der Createcall wie geplant gescheitert ist, werden die zu speichernden Daten, inklusive Pfad an die IndexedDB weitergeleitet. Die Daten bekommen für die spätere Synchronisierung ein zusätzliches Attribut „_http“ mit dem Wert „create“.

Copy to Clipboard

IndexedDb.js

In der IndexedDB wird zunächst, wenn nötig, eine neue Tabelle (sPath) angelegt. Anschließend werden die Daten dort hinterlegt.

Copy to Clipboard

In der IndexedDB ist der Eintrag entsprechend zu finden. Zur späteren Weiterverarbeitung wurde ein zusätzliches Attribut (_http) hinzugefügt, welches das http Verb speichert.

local storage

Anschließend werden die Daten neu gelesen und die Tabelle zeigt lokale sowie Daten aus dem Backend an.

saved locally

3. Daten löschen: Offline

Wie das Anlegen der Daten soll auch das Löschen funktionieren, wenn die Anwendung keinen Zugriff auf die SAP-Systeme hat. Die im Folgenden beschriebene Löschfunktion, entfernt lokale Einträge und legt außerdem, im Offline-Zustand, Lösch-Tokens für Einträge auf dem Backend an in der IndexedDB an.

Die Anwendung wird erneut in den Offline-Zustand versetzt, um den ersten Eintrag der Liste (Backend-Daten) zu löschen.

stored sap backend

Der Programmablauf ist wie folgt:

Programmablauf

View1.controller.js

Prozess-Start über ViewController:

Copy to Clipboard

Table.js

Weiterleitung der Anfrage:

Copy to Clipboard

oData.js

Nachdem der Removecall fehlgeschlagen ist, wird der sPath an die „_removeErrorCallback“-Methode weitergeleitet:

Copy to Clipboard

IndexedDb.js

Wie bereits beim Ablegen der Daten im „Create“-Prozess wird auch in diesem Fall zunächst geprüft, ob eine Tabelle „Spath“ bereits vorhanden ist. Ist dies nicht der Fall, wird diese angelegt. Wenn die _removeData-Methode unter dem übergebenen Pfad und Schlüssel keinen Eintrag findet, wird er lokal als zu löschender Eintrag abgelegt.

Copy to Clipboard
Tableoneset

4. Synchronisierung

Nachdem das Netzwerk wieder zur Verfügung steht, müssen die lokalen Daten mit dem SAP-System synchronisiert werden. Es liegt nun jeweils ein Eintrag zum Löschen und ein Eintrag zum Erstellen von Daten vor.

Auf der IndexedDB wird je nach hinterlegtem http-Verb unterschieden, ob Daten zu erstellen oder zu löschen sind.

entscheidung_resolve

View1.controller.js

Prozessstart

Copy to Clipboard

IndexedDb.js

Verarbeitung der lokal gespeicherten Daten:

Copy to Clipboard

4. Ausblick

Je nach Anwendungsbereich ist es denkbar, auf diese Weise eine App zu bauen, die nach dem initialen Laden netzwerkunabhängig funktioniert. Alle Funktionen stehen dem Nutzer somit jederzeit zur Verfügung. Techniker im Außendienst oder Mechaniker in großen Produktionshallen können die für die Anwendung benötigten Stammdaten, beim Öffnen der App laden. Sind Sie dann z.B. in Lagerräumen ohne Empfang oder beim Kunden ohne WLAN, ist trotzdem die volle Funktionsfähigkeit gewährleistet. Neue Daten werden einfach in der IndexedDB angelegt und bei verfügbarem Netzwerk synchronisiert.