© DrHitch/Shutterstock.com
Xtend beyond Java

4 Xtext und Xtend als Basis von mobaDSL


In den ersten zwei Kapiteln habe ich gezeigt, wie der Einsatz einer DSL zur Beschreibung von DTOs die Programmentwicklung beschleunigt. Jetzt gehen wir einen Schritt weiter mit einer neuen DSL: mobaDSL (Mobile Business Application DSL).

Während der letzten EclipseCon Europe habe ich mit Florian Pirchner, dem Entwickler der bisher genutzten DTO-DSL, ausdiskutiert, wie denn eine DSL für mobile Business-Apps idealerweise auszusehen hätte. Das Resultat gibt es jetzt als neues Open-Source-Projekt: mobaDSL.

mobaDSL geht weit über das bisherige hinaus und wird es ermöglichen, mehr Code zu generieren als bisher. Ein mobaDSL-Projekt besteht aus Applications, wobei eine Application entweder eine UI Application oder eine Background Application sein kann. Background Applications sind beispielsweise Android-Services oder BlackBerry-10-Headless-Apps. Background Applications werden üblicherweise durch ein Ereignis getriggert: Geofencing, Push-Service, Device-gestartet, APP-gestartet, SMS oder einer eingetroffenen E-Mail.

Je nach Kundenanforderungen oder Use Cases greift eine mobile App auf Sensoren zu, nutzt Bluetooth oder NFC. Was macht man meist? Aus ähnlichen Apps, die man schon entwickelt hat, werden entsprechende Controllerklassen kopiert oder Codefragmente eingebaut. Einer Application können daher ein oder mehrere Module zugeordnet werden, wie Bluetooth, NFC und Push. Diese Module können noch durch Parameter spezifiziert werden – beispielsweise Bluetooth LE oder SPP. Dann ist es für den Generator einfach, die entsprechenden Patterns umzusetzen und den zugehörigen Code zu generieren. Abbildung 4.1 gibt eine Übersicht über ein mobaDSL-Projekt.

gentz_mobadsl_1.jpg

Abbildung 4.1: mobaDSL-Projekte

Betrachten wir nun eine mobaDSL Application genauer. In einer Application können modelliert werden:

  • Entities – werden persistiert (gecached)
  • Settings als Spezialfall einer Entity
  • DTOs (Datentransfer Objekte) wie bisher
  • Offlinecache – JSON oder SQLite, verschiedene Cache Policies möglich
  • Server mit REST-Services sowohl klassisch für CRUD als auch Custom-Services
  • Services mit speziellen DTOs für Request, Response und Error
  • Workflow – die Zusammenfassung von mehreren Services, die in einer bestimmten Reihenfolge abgearbeitet werden müssen
  • Queue – die Warteschlangenverarbeitung aller Serveranfragen

Abbildung 4.2 zeigt dies im Überblick.

gentz_mobadsl_2.jpg

Abbildung 4.2: mobaDSL Applications

Wir sehen also, dass mobaDSL alle wichtigen Bereiche einer mobilen Business-App abdeckt. Aber bitte nicht vergessen: mobaDSL ist kein Programmgenerator, es ist eine Workbench, die all das zur Verfügung stellt, was man benötigt. Die UI und Architektur der App, also die spannenden Teile, müssen weiterhin projektspezifisch manuell entwickelt werden. Der ganze Unterbau aber wird generiert. Wie sieht das jetzt im Modell aus? Hier ein Beispiel:

project FooCustomer version = 0.7.3 {
uiApp = CustomerUiApp
backgroundApp = CustomerBackgroundApp
}
application CustomerUiApp version = 1.0.1 {
module bluetooth BTControllerLE type = lowEnergy
// ...
}
application CustomerBackgroundApp version = 1.0.1 {
trigger push
}

mobaDSL-Server und Services

Einer Applikation lassen sich mehrere Server zuordnen. Dies ermöglicht es, verschiedene Contentprovider zu integrieren oder beispielsweise Bilderupl...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang