CaptainCasa Enterprise Client
CaptainCasa Enterprise Client ist ein Framework zur Entwicklung von Web-Frontends für Geschäftsanwendungen.
Das Framework besteht aus:
- einem generischen Rendering-Client, der im Browser als JavaScript Anwendung läuft
- einer Server-seitigen Dialogverarbeitung, innerhalb derer Dialoge definiert und an die Anwendung angebunden werden
Die Entwicklung geschieht rein auf Basis von server-seitigem Java. Die im Server entwickelten Dialoge werden zur Laufzeit als XML-Layout-Beschreibung zum Rendering-Client geschickt und von diesem in eine Oberfläche umgesetzt. Benutzereingaben in der Oberfläche werden umgekehrt zum Server geschickt und führen dort zu einer Verarbeitung in der Anwendung.
CaptainCasa Enterprise Client ist in vollem Umfang frei nutzbar – ein Zugriff auf die Sourcen ist an eine kommerzielle Lizenz gebunden.
Geschichte
Die Entwicklung von CaptainCasa Enterprise Client begann im Jahre 2007 – wobei zunächst ein Java-Swing basierter Client als Rendering-Client genutzt wurde. Im Jahre 2012 kam ein Java-FX basierter Client als Alternative hinzu. Im Jahre 2017 wurde ein Web-Client eingeführt, der die beiden Java-basierten Clients komplett ablöste.
Durch die Server-seitige Dialogverarbeitung und die damit verbundene explizite Abkopplung des Frontend-Clients vom Server konnte der Austausch der Clients ohne Änderung der Server-seitigen Anwendungsverarbeitung durchgeführt werden.
Entwicklungskonzepte
Die Entwicklung von Dialogen geschieht in zwei Schritten:
- Definition des Dialog-Layouts und seiner enthaltenen Controls
- Entwickeln einer Java-Klasse, in der die Daten zum Dialog gehalten und verarbeitet werden
Definition des Dialog-Layouts
Die einfachste Art der Definition des Dialog-Layouts geschieht über eine XML-Definition, in der Control-Instanzen als Baum angeordnet werden. Beispiel:
<t:rowbodypane> <t:row> <t:tabbedpane width="100%"> <t:tabbedpanetab padding="20" rowdistance="5" text="First Tab"> <t:row> <t:field text="#{DemoHelloWorld.name}" labeltext="Your Name" width="200" /> </t:row> <t:row> <t:button actionListener="#{DemoHelloWorld.onHello}" text="Hello" /> </t:row> <t:rowdistance height="20" /> <t:row> <t:field enabled="false" text="#{DemoHelloWorld.output}" labeltext="Result" width="100%" /> </t:row> </t:tabbedpanetab> <t:tabbedpanetab text="Second Tab" /> </t:tabbedpane> </t:row> </t:rowbodypane>
Innerhalb der Control-Instanzen werden Attribute entweder direkt (text="Result") oder über einen Expression (text="#{DemoHelloWorld.output}") definiert. Ebenso werden Expressions genutzt, um Ereignisse einer Control-Instanz an eine zugehörige Verarbeitungsmethode weiterzuleiten (actionListener="#{DemoHelloWorld.onHello}").
Java-Klasse
Eine Java-Klasse stellt die über Expressions referenzierten Daten und Methoden zur Verfügung:
package demo;
import javax.faces.event.ActionEvent;
public class DemoHelloWorld { String m_name; String m_output; public void setName(String value) { m_name = value; } public String getName() { return m_name; } public String getOutput() { return m_output; } public void onHello(ActionEvent ae) { if (m_name == null) m_output = "No name set."; else m_output = "Hello World, " + m_name + "!"; } }
Weiterführende Konzepte
Aufbauend auf diesem Prinzip gibt es verschiedene weiterführende Konzepte:
- Dynamische Gestaltung des Layouts (statt über XML wird die Layout-Definition über ein API durchgeführt)
- Dynamische Gestaltung der Java-Klasse (statt über set/get-Implementierung werden Expressions über HashMap/Listen-Strukturen implementiert)
- Verschachtelung/Modularisierung von Dialogen: jeder Dialog kann einfach oder mehrfach in einen anderen Dialog eingebunden werden.
Werkzeuge
Bestandteil des CaptainCasa Enterprise Clients sind verschiedene Werkzeuge, die bei der Entwicklung von Dialogen unterstützen:
- Dialog Designer (WYSIWYG – "what you see is what you get")
- Java-Code Generator
- Java-Code Browser
- Literal-Translator
- Performance-Analyzer
Die Entwicklung von Java findet über klassische Entwicklungsumgebungen statt, z. B.: Eclipse, NetBeans, IntelliJ IDEA und andere.
CaptainCasa RISC-HTML Methode
Um die Verarbeitung im Client möglichst stabil gegenüber Unterschieden in Browser-Implementierungen zu halten und um volle Freiheit beim Layouting von Komponenten zu haben, hat CaptainCasa 2017 die sogenannte "RISC-HTML" Methode[1] definiert. Hierbei wird von den vom Browser zur Verfügung gestellten grafischen Elementen nur ein minimaler Bruchteil verwendet ("Nukleuselemente") und diese werden ihrerseits nur über einen Bruchteil ihrer zur Verfügung stehenden Funktionen angesprochen. Alle Controls, die im Rahmen der Control-Bibliothek des CaptainCasa Frameworks zur Verfügung gestellt werden, setzen sich innerhalb des Clients aus diesen Nukleuselementen zusammen.
Nukleuselemente und Controls sind JavaScript-Klassen, wobei nur die Nukleuselemente direkten Zugriff auf die DOM-Elemente des Browsers haben.
Nutzungsszenarien
Inhaltlich wendet sich CaptainCasa Enterprise Client an folgende Nutzungsszenarien:
- Operativ genutzte Geschäftsanwendungen (z. B. durch Sachbearbeiter, Werker, Administrator, Mitarbeiter)
- Geschäftsanwendungen mit langem Lebenszyklus
- Geschäftsanwendungen mit großem Umfang an Dialogen
Technologisch läuft CaptainCasa Enterprise Client als Java-basierte Implementierung innerhalb einer Servlet-Verarbeitung.
Alternativen
Die Architektur der Server-seitiges Dialogverarbeitung steht zunächst in Konkurrenz zur Client-seitigen Dialogverarbeitung. Bei der Client-seitigen Dialogverarbeitung geschieht die Entwicklung der Dialoge direkt durch Programmierung von JavaScript oder darauf aufsetzenden Sprachen. Vertreter dieser Frameworks sind:
- Angular
- React
- Vue.js
- und viele andere: Liste von Web Frameworks
Innerhalb der Frameworks zur Server-seitigen Dialogverarbeitung gibt es folgende Alternativen:
- Vaadin
- Remote Application Platform (RAP)
- und andere
Weblinks
- CaptainCasa-Website
- CaptainCasa Dokumentation
- CaptainCasa Online Demos
- CaptainCasa RISC-HTML Methode
- Effiziente Entwicklung von Web-Benutzeroberflächen für Geschäftsanwendungen, Unterscheidung zwischen Client-seitiger und Server-seitiger Dialogverarbeitung
Einzelnachweise
- ↑ The "RISC" Method. In: Enterprise Client. Abgerufen am 31. Dezember 2020 (britisches Englisch).