Table of Contents

Klasse und Virtuelle Klasse

Eine Klasse definiert einen Teil des Datenmodells, das von pit - Mobile für den Prozess verwendet wird. Dieses Datenmodell bildet die Grundlage für die Synchronisation mit pit - FM und wird daher als Vertrag bezeichnet.

Virtuelle Klassen existieren unabhängig vom Webservice und bilden lokale Datenbank-Views ab. Sie verhalten sich ähnlich zu Klassen, indem sie als Grundlage für Bindungen und in Skripten verwendet werden können.

Klassen enthalten eine vereinfachte Vorlage für Listenansichten bestehend aus einem Anzeigenamen, einem Untertitel und einem Vorschaubild. Um die Synchronisation zu beschleunigen, kann die Option Verzögerte Synchronisation aktiviert werden.

Klasse

Klassen definieren jeweils einen eindeutigen Namen für pit - FM und für pit - Mobile um sie in beiden Systemen zu identifizieren. Der mobile Name wird dabei auch als Tabellenname der Gerätedatenbank verwendet und ist in der Regel identisch mit dem aus pit - FM. Er muss allerdings überdefiniert werden, falls der Name ein SQLite-Schlüsselwort (z.B. Order) ist.

Nachdem der Designer eine Verbindung zum Webservice aufgebaut hat, werden die Namen aller dort verfügbaren Klassen heruntergeladen und für jeden Namen eine Klasse angelegt. Der Designer erkennt automatisch, welche Klassen im Projekt verwendet werden und sammelt diese in der Bibliothek unter Verwendete Klassen. Über den Button Klasse hinzufügen können weitere Klassen manuell hinzugefügt werden. Nur die Klassen, die in Verwendung stehen, werden beim Export in die Contract.json geschrieben und an pit - Mobile weitergegeben.

Virtuelle Klasse

Alle Klassen werden bei bestehender Webservice-Verbindung automatisch vom Designer angelegt und dienen der Datensynchronisation. Möchte man mobilseitig mit Datenbank-Tabellen arbeiten, die nicht mit pit - FM synchronisiert werden und nur lokal existieren, muss man stattdessen virtuelle Klassen einsetzen.

Beim Anlegen einer neuen Klasse erscheint ein Dialog, in dem man eine Webservice-Klasse auswählen muss. Zusätzlich kann über den Button Neue Virtuelle Klasse eine virtuelle Klasse erstellt werden. Der dabei zu vergebende Name muss eindeutig in Bezug auf alle bereits vorhandenen virtuellen Klassen sein.

VirtualClasses

Virtuelle Klassen werden vom Synchronisationsmechanismus ignoriert und können stattdessen als Datenbank-View eingesetzt werden. Über die Eigenschaft Create Statement für die Datenbank kann eine SQLite-Anweisung hinterlegt werden, die die Tabelle erzeugt, sobald der Prozess zum ersten mal auf dem Gerät ausgeführt wird. Beim Anlegen der Tabelle können Attribute (mehrerer) anderer Klassen kombiniert werden. Nachfolgend ein Beispiel für ein Create Statement:

CREATE VIEW IF NOT EXISTS Open_Tasks AS SELECT number, ref_employee FROM Task WHERE ref_status='00000235:00000004'

Alle Attribute aus der SQLite-Anweisung müssen außerdem als (virtuelle) Attribute zur Klasse hinzugefügt werden. Dieser Vorgang ist dem Anlegen einer virtuellen Klasse sehr ähnlich und kann hier genauer nachgelesen werden.

Eigenschaften

Eigenschaft Typ Erklärung
Name Text Der eindeutige Systemname der Klasse in pit - FM. Kann nicht verändert werden.
Mobiler Name Text Der eindeutige Systemname der Klasse in pit - Mobile.
Anzeigename Text Der Anzeigename der Klasse für den Designer. Hat keinen Einfluss auf pit - Mobile.
GetName Text Ein formatierbarer Anzeigename für Datensätze dieser Klasse in Listenansichten.
GetSubName Text Ein formatierbarer Untertitel für Datensätze dieser Klasse in Listenansichten.
Thumbnail Text / Code Gibt an, welches Attribut der Klasse als Vorschaubild verwendet werden soll.
Verzögerte Synchronisation Ja / Nein, nur bei Klassen Markiert die Klasse für eine verzögerte Synchronisation ihrer Datensätze mit pit - FM.
Create Statement Text Die SQLite-Anweisung für die Gerätedatenbank zum Erstellen der lokalen Tabelle. Wird nur bei virtuellen Klassen angezeigt.
Verwendete Attribute Attributliste Zeigt alle Attribute der Klasse an, die vom Prozess verwendet werden.
Filterdatei Text Pfad des pit - FM Filters, der Datensätze dieser Klasse bei der Synchronisation einschränkt.

Synchronisationsfilter

Statisch

Um eine schnelle und Datenvolumen sparende Synchronisation zu ermöglichen, sollten so wenige Daten wie möglich auf das mobile Gerät übertragen werden. Das bedeutet zum einen, dass meist nur eine Teilmenge der Klassen und Attribute aus pit - FM für den mobilen Prozess eine Rolle spielen.

Zum anderen sollte aber auch die Datenmenge der verwendeten Klassen über Filter aus pit - FM eingeschränkt werden. Hierfür kann die Eigenschaft Filterdatei verwendet werden. Der Wert der Eigenschaft ist der Pfad einer Filterdatei (.flt oder .xml) im Unterordner System/Filter/System/. Nachfolgend ein Beispiel für einen Filterdateipfad:

mobile/MO-AUR/Dokumente.flt

Abhängig vom Benutzer

Ist eine Filterdatei pro Klasse nicht flexibel genug, kann stattdessen eine Klassenformel eingebunden werden, die dynamisch unterschiedliche Pfade zurückgeben kann, z.B. je nach Benutzer. Dazu benötigt man an der Klasse die aktivierte dynamische Eigenschaft getFilterFromPit vom Typ Ja / Nein. Bei dieser Klasse muss nun in pit - FM die Klassenformel GetMobileFilterFileName hinterlegt werden.

safe function string GetMobileFilterFileName(string $sClassname) 
{
       var string $sUserID;
       if($sClassname == "Order")
       {
             $sUserID = GetUserId();
             if($sUserID == "stsg")
             {
                    return NULL;
             }
             else if($sUserID == "fldo")
             {
                    return  $sClassname + "\\order_" + $sUserID + ".flt";
             }

       }
       return "false";
}

Für Rückgabewerte gibt es diese Optionen:

  • [Filterpfad]: Ein Pfad relativ zu System\Filter\System, der als Synchronisationsfilter genommen werden soll.
  • "false": pit - Mobile soll den unter filterFileName hinterlegten Filter verwenden.
  • NULL: Es soll kein Filter verwendet werden.

Attributreihenfolge bei der Synchronisation

Es kann nötig sein, die Attribute einer Klasse in einer bestimmten Reihenfolge an den Webservice zu übergeben. Denn möglicherweise werden bei der Synchronisation Automatismen in pit - FM angestoßen (z.B. onChanged), die wiederum Auswirkungen auf andere Attribute haben.

SyncOrder

Die Sync-Reihenfolge lässt sich über die Attributliste an der Klasse ändern. Hierfür muss zunächst das Dropdown für die Sortierung auf den Wert Sync-Reihenfolge gestellt werden. Im Anschluss erscheint vor jedem Attribut ein Symbol für einen Drag & Drop-Vorgang. Die Attribute lassen sich dadurch mit der Maus per Drag & Drop oder über die Tastenkürzel Strg+Shift+ bzw. Strg+Shift+ umsortieren. Es ist auch möglich, mehrere Attribute mit Shift oder Strg gleichzeitig zu markieren und dann zu verschieben.

Abgeleitete Klassens

Oft reicht es aus, mit Datensätzen der konkreten Klasse zu arbeiten und diese anzuzeigen. In einigen Fällen ist es aber hilfreich, wenn auch Datensätze aller abgeleiteten Klassen zur Verfügung stehen. Beispielsweise wenn man alle technischen Anlagen in einer Liste anzeigen will, zu denen sowohl lufttechnische Anlagen sowie Wärme- und Kälteversorger gehören. Dann benötigt man an der Basisklasse die aktivierte dynamische Eigenschaft getDerivedClasses vom Typ Ja / Nein.

Bei der Synchronisation landen im Anschluss alle Datensätze der abgeleiteten Klassen in der Tabelle der Basisklasse (es sei denn die abgeleitete Klasse ist ebenfalls Teil des Prozesses).

Bemerkung

Die Einstellung getDerivedClasses wirkt sich auch auf Datenbankabfragen aus, die man z.B. mit Ti.App.dataController.getAllData() in einem Skript erstellen kann.

Listenvorlage

Möchte man nicht für jede Listenansicht eine eigene Vorlage erstellen, so kann man auch auf die wichtigsten Elemente von der Klasse aus zugreifen. Sowohl der Titel GetName als auch der Untertitel GetSubName können hier hinterlegt werden. Der Wert dieser Felder ist ein Text in einem speziellen Format, um Attribute der Klasse einzubinden. Diese werden mit vor- und nachgestelltem %% angegeben und können mit statischem Text kombiniert werden. Attribute dürfen auch in komplexer Schreibweise (mit Punkt-Notation) vorkommen.

Um z.B. die beiden Attribute Datum und Auftraggeber der Klasse Bauvorhaben zu kombinieren, kann folgender Text eingegeben werden:

%%Date%% %%ref_employer.Name_number%%

Den resultierenden Untertitel jedes einzelnen Eintrags sieht man dann in folgender Listenansicht:

ListTemplate

Siehe auch

Attribute
Listenansichten
Dateisynchronisation