Für die MobiLink-Synchronisation mit direkter Zeilenbehandlung muss die Datenquelle eindeutige Primärschlüssel besitzen, die
nicht aktualisiert werden. In einer nicht-relationalen Datenquelle, z.B. einer Tabellenkalkulation oder Textdatei, bedeutet
das, dass eine Spalte eindeutige, sich nicht ändernde Werte enthalten muss, die die Zeile identifizieren.
Wenn die direkte Zeilenbehandlung verwendet wird, sind die Spaltennamen von Tabellen nur verfügbar, wenn der MobiLink-Client
so konfiguriert ist, dass er Spaltennamen sendet. Alternativ dazu können Sie mithilfe von Spaltenindizes auf Zeilendaten zugreifen.
Weitere Hinweise zur Verwendung von Spaltennamen finden Sie unter:
Sofern möglich, sollten Sie Ihre Anwendung mit direkter Zeilenbehandlung wie eine zeitstempelbasierte SQL-Anwendung einrichten
und die Spalte last_modified und darauf basierende Download-Daten verwalten. Bei dieser Methode werden unvorhergesehene Probleme
vermieden, die bei anderen Download-Methoden auftreten können.
Es ist nicht möglich, Transaktionen in konsolidierten MobiLink-Datenbanken festzuschreiben. Sie können jedoch Transaktionen
in der Datenquelle festschreiben, die die direkte Zeilenbehandlung verwendet. Beachten Sie bei der Einstellung der Transaktionsverwaltung
folgende Tipps:
Upload vor MobiLink-Festschreibungen festschreiben
Bei der Anwendung eines Uploads schreibt MobiLink die Änderungen am Ende des end_upload-Ereignisses fest. Sie müssen
sicherstellen, dass alle Upload-Änderungen, die beibehalten werden sollen, vor dem Ende des end_upload-Skripts festgeschrieben
werden. Andernfalls kann bei einem Fehler oder Ausfall ein Zustand erreicht werden, in dem die Anwendung davon ausgeht, dass
der Upload angewendet wurde, aber MobiLink die Daten nicht übernommen hat. Dies könnte zu einem Datenverlust führen.
Redundante Uploads verarbeiten
Falls ein Fehler oder Ausfall auftritt, nachdem die Anwendung und bevor der MobiLink-Server eine hochgeladene Zeile
festschreibt, kommt es möglicherweise zu einem inkonsistenten Zustand des MobiLink-Servers und der Datenquelle. Sie können
dieses Problem beheben, indem Sie redundante Uploads zulassen und eine Logik einsetzen, die sicherstellt, dass der redundante
Upload richtig angewendet wird. Vor allem muss sichergestellt werden, dass der Upload nicht erneut angewendet wird, wenn die
Anwendung ihn ein zweites Mal sendet.
Für die Behandlung von Fehlern muss die Verwendung einer geeigneten Transaktionsverwaltung sichergestellt werden, wie oben
beschrieben. Außerdem muss der Java- oder .NET-Code, der Zeilen verarbeitet, alle auftretenden Ausnahmebedingungen an den
MobiLink-Server senden. Falls ein Fehler auftritt, bevor der MobiLink-Server oder Ihre Anwendung Änderungen festgeschrieben
hat, wird die Transaktion von MobiLink zurückgesetzt und somit ein konsistenter Zustand der Anwendung bewahrt.
MobiLink erstellt für die direkte Zeilenbehandlung für jede Datenbankverbindung eine Klasseninstanz. Die Klasseninstanz wird
am Ende einer Synchronisation nicht zerstört: Sie wird erst zerstört, wenn die Datenbankverbindung geschlossen wird. Variablen
auf Klassenebene behalten solange ihre Werte aus früheren Synchronisationen bei.