Mehr Drag & Drop: Entwicklungsplattformen passen sich an Wünsche von Nicht-Programmierern an
Mit Hilfe von Entwicklungsplattformen können komplexe Produkte gestaltet und Dienstleistungen geliefert werden. Der Zugriff auf verschiedene Schnittstellen ermöglicht eine auf Kunden angepasste Applikation durch vorgefertigte Komponenten und Codeeinbindung. Führende Plattformen sind hier die IBM MobileFirst Platform, die SAP Mobile Platform, die mobile Entwicklungsplattform von Adobe, die Kony-Plattform sowie die Salesforce1 Platform. Mittlerweile ist eine Anpassung der Plattformen an die Wünsche von Nicht-Programmierern zu verspüren: hin zur Entwicklung per Drag-and-Drop.
Wir arbeiten hauptsächlich mit der Salesforce1 Platform, welche eine API, eine Plattform sowie einen mobilen App Container in der Salesforce Org darstellt. Der Lightning App Builder von Salesforce ermöglicht es Apps durch standardisierte Drag-and-Drop-Komponenten zusammenzustellen.
Für die Verwendung des Salesforce Lightning App Builders ist es somit also nicht unbedingt notwendig Programmier-Kenntnisse aufzuweisen. Bei Bedarf können aber benutzerdefinierte Lightning-Komponenten hinzugefügt werden – auf der Clientseite mit JavaScript und auf der Serverseite mit Apex programmiert.
Standard-Komponenten im Lightning App Builder
Die vorgefertigten Komponenten sind unter anderem
- Rich Text (Texteingabe) und
- Report Chart (verschiedene Eigenschaften der Objekte in einem Berichtdiagramm visualisieren) am Beispiel der „Kosten-App“:
- Filterlist (die in Salesforce erstellten Objekte in einer Liste darstellen. Beim Klick auf einen Objekteintrag, können die Details zu dem gewählten Eintrag gesehen werden) und die Details des Objekteintrags „Breakfast“ am Beispiel der Kosten-App:
- Recent Items, kürzlich erstellte Objekte anzeigen
- Visualforce- Seiten einbinden
In den Seiten-Eigenschaften können Aktionen hinzugefügt werden. Das heißt, wenn in Salesforce zum Beispiel ein Objekt „Kosten“ mit verschiedenen benutzerdefinierten Feldern „Kostenname“, „Betrag“, „Datum“ etc erstellt wurde, kann eine Aktion Namens „neuer Kosteneintrag“ erstellt und in der App verwendet werden.
Die Aktion wird folgendermaßen aktiviert:
-> Setup -> Erstellen -> Globale Aktionen -> Neu -> dort das eigene Objekt auswählen -> die benutzerdefinierten Felder, die angezeigt werden sollen, in den Canvas ziehen.
Button und Fenster der Aktion “ Neues Expense“ sehen dann so aus:
Ein weiterer großer Vorteil des Lightning App Builder sind die vorgefertigten Funktionen, die zur Verfügung stehen. Wenn zum Beispiel ein Objekt in einer Filterliste dargestellt wird, sind mehrere Auswahlmöglichkeiten, wie „Neu“, „Bearbeiten“, „Löschen“ usw. möglich, die der Bearbeitung des Objektes dienen.
Vordefinierte Funktionen zu einem Objekt sehen z.B. wie folgt aus:
Hier wird’s technischer: Benutzerdefinierte Komponenten
Mithilfe der Standard-Komponenten wird eine App erstellt, ohne die Notwendigkeit eines Codes. Das hat jedoch seine Grenzen. Im Lightning App Builder können deshalb auch benutzerdefinierte Komponenten, in der Entwicklerkonsole erstellt, hinzugefügt werden.
Die Bestandteile einer Ligthning Komponente sind (hier das Beispiel „Create a Standalone Lightning App“ auf der Salesforce Developer Seite):
Apex Klasse: zieht die Daten aus der Salesforce-Datenbank
Dabei wird auf ein Objekt zugegriffen, das in Salesforce existiert. Im nachfolgenden Beispiel kann daher keine Liste mit public static List<Data> erstellt werden, weil „Data“ nicht anerkannt wird. Stattdessen wird public static List<Expense__c> geschrieben, wobei „Expense__c“ ein Objekt in Salesforce ist.
Funktion aus der Apex Klasse:
Die getExpenses Methode enthält eine SOQL Abfrage, um alle Kosten abzufragen. Dabei sollen die ID, der Name, die Höhe des Betrags, der Client, das Datum, die Funktion Geldzurück und das Erstelldatum, von dem in Salesforce erstellten Objekt “Expense__c“, zurückgegeben werden.
Component: ist html-ähnlich
Component ist html-ähnlich. Hier befinden sich zum Beispiel die aura-Attribute, die ui’s, die iterationen, mit denen Funktionen aufgerufen werden können. Um die benutzerdefinierte Lightning-Komponente im Lightning App Builder nutzen zu können, wird in der Komponente folgendes eingefügt: <aura:component implements=“flexipage:availableForAllPageTypes“>
Die doInit-Funktion wird ausgeführt, sobald die Komponente initialisiert ist.Mithilfe der Iteration kann hier der Name von dem Objekt „Expense“ angezeigt werden.
Controller: clientseitig
Controller: Eine Komponente hat immer einen clientseitigen Controller, der die Aktionen von der Komponente verarbeitet. Dies geschieht, indem auf die Daten in der Apex-Klasse zugegriffen wird und diese in einer entsprechenden Funktion verarbeitet werden. Wenn nicht auf einen Helper zugegriffen wird, können Funktionen direkt hier geschrieben werden.
Do-init-Funktion aus dem Controller:
Der Controller ruft den helper und getExpenses aus der Apex-Klasse auf.
Helper: clientseitig
Helper. Genauso wie eine Komponente einen clientseitigen Controller hat, verfügt sie auch über einen clientseitigen Helper, auf den der Controller der Komponente zugreift. Wenn in dem Controller die Funktionen nicht geschrieben worden sind, werden sie im Helper niedergeschrieben.
Funktion im Helper:
Mit component.get(„c.getExpenses“); wird auf die Daten von getExpenses in der Apex Klasse zugegriffen. Dies wird mit c. gemacht, da es auf die höhere Instanz zugreift.
Der Befehl actionCallback durchläuft die Funktion, die aufgerufen wird, nachdem der Server reagiert hat.
Mit component.set(„v.expenses“, response.getReturnValue()) werden die Expenses nun dem Wert vom expenses-Attribut,der in der Ligthning-Komponente definiert wurde, zugewiesen.
CSS: für spezifische Eigenschaften
In jeder Komponente können spezifische CSS-Eigenschaften festgelegt werden. Benutzerdefinierte Komponente, die die Summer und Anzahl der Kosten berechnet:
Salesforce Ligtning-Komponenten und App für die Salesforce1-Navigation aktivieren
In Salesforce werden die Lightning Komponenten folgendermaßen aktiviert: -> Setup -> Erstellen -> Entwickeln -> Ligthning-Komponenten -> Haken bei „Lightning-Komponenten für die Verwendung in Salesforce One (BETA) aktivieren“
Wenn nun in den Lightning App Builder zugegriffen wird, erscheint links bei den benutzerdefinierten Komponente die erstellte Komponente und sie kann in den Canvas gezogen und verwendet werden. Um die App in der Salesforce1 Navigation zu haben, wird im Lightning App Builder die App erst oben rechts gespeichert, und anschließend auf den Button „Aktivieren“ geklickt. Daraufhin kann das Icon für die App ausgewählt und die Position in der Salesforce1-Navigation festgelegt werden.
Salesforce Navigation mit der Kosten-App:
Was sind die Stärken und Schwächen?
Folgende Stärken und Schwächen sind aufzuzählen:
Stärken:
- Robuste und weit entwickelte Cloud-Plattform
- Chatter, Analytik, Workflow und anderen Funktionen sind integriert
- Arbeiten auf verschiedenen Technologieebenen
Schwächen:
- Durch proprietäre Sprache und Datenmodell wird auf einen Anbieter fokussiert. Das ist für manche Unternehmen von Vorteil, für andere hingegen nicht. Jedoch kann dieses Risiko durch das Mobile SDK gemildert werden.
- Das UI der Lightning Apps ist analog dem der Salesforce Clouds, dadurch sind die Apps nicht sehr individuell.
- Entwickler, die mit einem container-centric Ansatz (eine deklarative und programmatische Umgebung) arbeiten, könnten Probleme bekommen.
Ein kurzes Fazit zur Einordnung der Stärken und Einsatzgebiete
Die Pro-Argumente für den Lightning App Builder sind:
- Mit den Standard-Komponenten lässt sich schnell eine App zusammenstellen, ohne eine Zeile Code zu schreiben.
- Die benutzerdefinierten Felder eines Objektes in Salesforce können direkt als userinput-Möglichkeit genutzt werden, indem es zu den Aktionen hinzugefügt wird.
- Bei Verwendung eines Objektes im Lightning App Builder werden Funktionen zur Verfügung gestellt, wie „Objekt bearbeiten“, „Neuen Eintrag erstellen“, „Eintrag löschen“, und viele mehr. Das erspart Programmierarbeit.
- Für typische Business-Use Cases können schnell sehr „schicke“ Applikationen erstellt werden, mit denen die Zuständigen einen guten Überblick gewinnen.
Einige Einschränkungen müssen bei den Einsatzszenarien berücksichtigt werden:
- Wurden die Felder nicht in Salesforce erstellt, sondern lokal, kann die Funktion nicht auf die Felder zugreifen. In einem solchen Fall können die Vorteile des App Builder nicht genutzt werden. In diesem Fall müsste dann mit benutzerdefinierten Komponenten gearbeitet werden, was allerdings die Programmierarbeit erhöht. Der Lightning App Builder würde in solchen Szenarien seinen Sinn verlieren, weil die komplette App als benutzerdefinierte Komponente erstellt werden müsste.
- Die Lightning Komponenten werden sehr verschachtelt aufgebaut. In einer Komponente ist ein Controller, in dem sich wiederum ein Helper befindet, der auf eine Apex-Klasse zugreift, usw. Dies kann für ungeübte Benutzer kompliziert sein – d.h. auch für den Lightning App Builder sollte man etwas trainieren.
- Die Applikationen sind nicht für die Kundenseite (extern) geeignet.