Adaptive Forms Core Components
Ein genauer Blick auf den neuen Formularbaukasten in AEM Forms
Einleitung
Seit der AEM Version 6.5.16 ist mit den Adaptive Forms Core Components ein alternativer Komponentenbaukasten für die Adaptiven Formulare in AEM Forms verfügbar. Dieser Baukasten ist in den vergangenen Service Packs für AEM Forms Stück für Stück erweitert worden, so dass sich ein genauerer Blick auf diese Adaptive Forms Core Components lohnt. Mit diesem Artikel möchten wir genauere Einblicke in die Core Components geben.
Wer sich aktuell in den Dokumentationen von Adaptive Forms bei Adobe umschaut, wird häufiger den folgenden Hinweis antreffen:
Adobe selbst empfiehlt bei der Erstellung von neuen Adaptiven Formularen auf die neuen Core Components zu setzen. Die Foundation Components bezeichnet Adobe als "old" oder auch "classic". Die Foundation Components werden aber keineswegs als "deprecated" angesehen und sollen weiterhin gewartet und weiterentwickelt werden. Schließlich hat sich über die Jahre hinweg eine ordentliche Anzahl an Komponenten und Funktionalitäten angesammelt, die es noch nicht gänzlich in die Core Components geschafft haben.
Vergleich der Komponenten
Blickt man auf die einzelnen Komponenten, sieht man einige Unterschiede. Der nachfolgende Überblick zeigt einen Vergleich über alle Komponenten. Der Vergleich wurde auf Basis von AEM Forms 6.5.20 erstellt. Diese Übersicht gilt weitestgehend auch für die entsprechende Version in AEM as a Cloud Service (2024.1.0). Allerdings kann sich diese im Detail unterscheiden.
Komponente | Core Components | Foundation Components | Unterschiede / Anmerkungen |
---|---|---|---|
Accordion | ✔ | ✔ | Bei den Foundation Components wurde diese Funktion realisiert über die Panel Komponente - Accordion Layout |
Adaptive Form Fragment | ✔ | ✔ | Referenzierung von Form Fragments ist bei den Foundation Components realisiert innerhalb der Panel Komponente |
Adaptive Form reCAPTCHA (CAPTCHA) | ✔ | ✔ | |
Adobe Sign Block | ✔ | Adobe Sign Integration aktuell nur für Foundation Components. Soll aber bald kommen für Forms Core Components | |
Button | ✔ | ✔ | |
Chart | ✔ | Aktuell keine entsprechende Komponente in den Core Components | |
Check Box | ✔ | ✔ | |
Check Box Group | ✔ | ✔ | Bei den Foundation Components ist diese Funktionalität integriert in der Check Box Komponente. Dort können mehrere Check Box Werte angegeben werden, die dann zu einer Gruppe zusammengesetzt werden. |
Date Input Field | ✔ | Eingabe von Jahr, Monat und Tag über separate Eingabefelder. Aktuell keine entsprechende Komponente in den Core Components | |
Date Picker | ✔ | ✔ | |
Drop-down List | ✔ | ✔ | |
✔ | ✔ | ||
File Attachment | ✔ | ✔ | |
File Attachment Listing | ✔ | Diese Komponente zeigt die aktuellen Anhänge im Formular. Aktuell keine entsprechende Komponente in den Core Components | |
Footer | ✔ | ✔ | |
Foot Note Placeholder | ✔ | Aktuell keine entsprechende Komponente in den Core Components | |
Form Container / Root Panel | ✔ | ✔ | |
Form Title / Title | ✔ | ✔ | |
Header | ✔ | ✔ | |
Horizontal Tabs | ✔ | ✔ | Bei den Foundation Components wurde diese Funktion realisiert über die Panel Komponente - Tab Layout |
Image | ✔ | ✔ | |
Image Choice | ✔ | Aktuell keine entsprechende Komponente in den Core Components | |
Next Button | ✔ | ✔ | Bei den Core Components integriert in der Wizard Komponente bzw. kann realisiert werden über Button die Komponente |
Numeric Box | ✔ | ✔ | |
Numeric Stepper | ✔ | JQueryUI (Stepper) Widget mit + / - Buttons zur Steuerung der Eingabe. Dieses Widget fehlt in den Core Components, da diese nicht mehr auf JQuery-UI Widgets basieren. Ein Implementierung müsste als Erweiterung der Numeric Box realisiert werden | |
Panel | ✔ | ✔ | |
Previous Button | ✔ | ✔ | Bei den Core Components integriert in der Wizard Komponente bzw. kann realisiert werden über Button die Komponente |
Phone / Telephone | ✔ | ✔ | |
Radio Button | ✔ | ✔ | |
Reset Button | ✔ | ✔ | |
Save Button | ✔ | Aktuell keine entsprechende Komponente in den Core Components. Darüber hinaus ist unklar ob die Draft Funktion überhaupt in den Core Components zur Verfügung steht. Dokumentiert ist dieses Feature bisher nicht. | |
Scribble Signature | ✔ | Aktuell keine entsprechende Komponente in den Core Components | |
Separator | ✔ | Aktuell keine entsprechende Komponente in den Core Components | |
Signature Step | ✔ | Aktuell keine entsprechende Komponente in den Core Components | |
Submit Button | ✔ | ✔ | |
Summary Step | ✔ | Aktuell keine entsprechende Komponente in den Core Components. | |
Switch | ✔ | ✔ | |
Table | ✔ | Aktuell keine entsprechende Komponente in den Core Components. | |
Terms and Conditions | ✔ | ✔ | |
Text | ✔ | ✔ | |
Text Box | ✔ | ✔ | |
Vertical Tabs | ✔ | ✔ | Bei den Foundation Components wurde diese Funktion realisiert über die Panel Komponente - Tab Layout |
Wizard | ✔ | ✔ |
Es fällt auf, dass die grundlegenden Formularkomponenten in beiden Varianten vorhanden sind. Im Detail sind die Core Components allerdings weniger umfangreich. Insbesondere das Fehlen der Adobe Sign Komponenten ist etwas überraschend. Diese sollen aber in naher Zukunft auch für die Core Components bereitgestellt werden.
Darüber hinaus zeigt die Übersicht, dass einige Komponenten aus den Foundation Components bei den Core Components gänzlich fehlen, wie z. B. Image Choice, Table und die Chart Komponente. Diese werden vermutlich vorerst auch nicht in die Core Components portiert. Ob diese Komponenten jedoch essenzielle Bestandteile eines Formularbaukastens sind, muss man für sich selbst bewerten. Bei einem Umstieg auf die Core Components sollte auf jeden Fall berücksichtigt werden, dass für diese Komponenten ein entsprechender Entwicklungsaufwand anfallen wird, wenn man diese Komponenten in ähnlicher Form wie bei den Foundation Components verwenden möchte. Dennoch gibt es viele Gründe, die für die Core Components sprechen:
Warum sich ein Umstieg lohnt!
Hier wollen wir die Versprechen von Adobe etwas genauer unter die Lupe nehmen:
"Headless"-fähig:
Sobald man seine Formulare auf den Forms Core Components aufbaut, können diese auch über die sogenannte Headless Forms API in Drittanwendungen nativ integriert werden. Dies ist mit den vorhandenen Foundation Components nur schwer möglich, da es keine dedizierte API gibt. Einen detaillierteren Einblick in AEM Forms Headless wird es in einen zukünftigen Blog Beitrag geben. Alternativ kann man auch jetzt schon den Vortrag in Videoform zu diesem Thema von unserem eggs unimedia AEM Forms Forum 2023 anschauen.
Verfügbarkeit auf GitHub und umfassende Dokumentation:
Analog zu den normalen Sites Core Components gibt es für die Forms Core Components nun auch ein Projekt / Repository auf GitHub. Nicht nur der Code ist nun öffentlich einsehbar, auch die dort enthaltene technische Dokumentation ist um einiges umfangreicher als bei den Foundation Components. Das erleichtert und beschleunigt sowohl die Entwicklung als auch Erweiterung der Core Components. Bekannte Probleme werden nun über GitHub dokumentiert, Probleme lassen sich einfacher reporten und unter Umständen sogar selber korrigieren. Ohne Zweifel geht hier Adobe in die richtige Richtung.
BEM-Modell als Basis für Stylesheets (CSS):
Das Block Element Modifier, kurz BEM-Modell, ist ein bewährter Standard und eine häufig genutzte Methode für die Organisation von CSS. Das Styling der Core Components wird damit wesentlich erleichtert. Im Vergleich zu den Foundation Components lässt sich das CSS so einfacher anpassen und ist besser verständlich. Das beschleunigt und vereinfacht die Erstellung eigener Themes für die Formulare erheblich.
Keine Abhängigkeit von Bibliotheken von Drittanbietern:
Mit den Core Components verzichtet Adobe auf die Einbindung von JQuery, JQuery-UI und Underscore. Das erleichtert nicht nur die Integration der Formulare in bestehende Anwendungen, sondern reduziert auch die Javascript Last erheblich. Darüber freut sich auch der Page Speed Index. Ganz schmalspurig ist die sogenannte Forms Core Components Runtime Bibliothek dann allerdings auch nicht. Mit knapp unter 100 kB ist man allerdings weit weg von den bisherigen knapp 300 kB Javascript für die Foundation Components. Auch hier kann man Adobe einen Fortschritt attestieren.
Fokus auf Leistung und Barrierefreiheit:
Adobe verspricht hier bei den Forms Core Components hohe Lighthouse Scores, Einhaltung der Core Web Vitals sowie die Einhaltung Barrierefreiheit Standards und Richtlinien. Das sind alles Dinge, die man von einem modernen Komponentensatz erwarten kann oder auch erwarten muss. Inwiefern hier eine erhebliche Verbesserung im Vergleich zu den Foundation Components vorliegt, müsste man allerdings in einer detaillierteren Analyse feststellen. Denn auch die Foundation Components verfügen über Barrierefreiheit-Funktionen.
Bei der Performance lohnt sich allerdings ein genauer Blick auf die Core Components. Diese kommen deutlich leichtgewichtiger daher und haben daher gute Voraussetzungen, um auch mit größeren Datenmodellen oder Formularen umzugehen.
Versionierung:
Analog zu den Core Components in AEM Sites sind nun auch die Core Components in Forms versioniert. Das bedeutet, dass bei "Breaking Changes" die Komponenten stets mit einer neuen Version versehen werden. So ist sichergestellt, dass die eigenen Styles und Erweiterungen weiterhin funktionieren, ohne dass eine Aktualisierung der eigenen Komponenten notwendig ist. Dadurch lassen sich insbesondere AEM Upgrades viel einfacher durchführen, da man davon ausgehen kann, dass die eigenen Erweiterungen an den Core Components auch mit einer neueren AEM-Version funktionieren.
Was ändert sich im Authoring?
Neben den oben genannten Verbesserungen hat Adobe mit Einführung der Forms Core Components auch am Authoring Interface Veränderungen vorgenommen. Das Authoring von Formularen mit Core Components ist nun identisch mit dem Authoring von Komponenten in AEM Sites. Dadurch ergeben sich im wesentlich folgende Unterschiede:
Touch UI Dialoge
Der WYSIWYG Editor ist nun identisch mit dem in AEM Sites. Das bedeutet, dass beispielsweise die Forms Komponenten ganz reguläre Touch UI Dialoge haben und nicht im Side Panel bearbeitet werden. Die Dialogfelder sind bei den meisten Komponenten im Wesentlichen identisch. Das bedeutet, dass die grundlegenden Funktionen zu Validierungen, Hilfetexten oder Datenmodell bleiben gleich.
Im Detail kann es bei einigen Komponenten aber kleine Unterschiede geben, siehe Screenshots:
Rule Editor
Der aus den Foundation Components bekannte Rule Editor ist auch bei den Core Components verfügbar, siehe Abbildung. Die darüber gesteuerten Aktionen bleiben weitesgehend erhalten. Man kann also weiterhin mit Hilfe eines visuellen Editors seine Formularregeln und Funktionen erstellen. Serviceaufrufe, Standardfunktion sowie die Einbindung von sogenannten Custom Functions können weiterhin genutzt werden. Auch die GuideBridge-API bleibt erhalten. Auf der funktionellen Seite des Rule Editors bleibt also vieles so wie es war. Es gibt allerdings eine Ausnahme:
Kein Code Editor mehr
Eine Einschränkung gibt es dann allerdings doch beim Authoring. Der Code Editor für die Rules steht mit den Core Components nicht mehr zu Verfügung. Etwaige Funktionalitäten müssen folglich in Custom Functions umgesetzt werden.
Keine Classic UI mehr
Adobe hat alte Zöpfe abgeschnitten. Eine Bearbeitung von Formularen, die mit Core Components umgesetzt sind, wird nur noch in der Touch UI möglich sein. Im Gegensatz zu den Foundation Components liefern die Core Components keine Classic UI Dialoge mehr mit. Hier handelt Adobe konsequent. Die Nutzung der Classic UI sollte ohnehin keine Option mehr sein für das Authoring in AEM.
Zusammenfassung
Am Ende bleibt festzuhalten, dass Adobe mit den Adaptive Forms Core Components eine neue Basis für die Formularentwicklung in AEM gelegt hat. Diese Basis ist in den Aspekten Anpassbarkeit, Wartbarkeit und Stabilität einfach besser als die der Foundation Components. In den meisten Fällen sollte man daher auf die Core Components setzen. Adobe wird grundlegende, fehlende Funktionalitäten, wie z. B. die Adobe Sign Integration für die Core Compnents, nachliefern. Langfristig gesehen werden die Foundation Components daher vermutlich ein Auslaufmodell.