Nach Monaten an Entwicklung und einer kurzen Beta-Phase, ist REI3.12 endlich bereit zum Release. Viele neue Dinge zu besprechen, lasst uns anfangen mit dem...
Visuellen PDF-Editor
Mit REI3.12 können komplexe PDF-Dateien direkt im Builder erstellt werden.

Wir hatten zwar schon lange die Option, PDFs zu erzeugen - dies erforderte jedoch Daten- sowie HTML-Verarbeitung und war nicht benutzerfreundlich. Dies funktionierte zudem nur im Browser, was weitere Einschränkungen mit sich brachte.
Der neue, visuelle PDF-Editor erzeugt stattdessen Dateien über den REI3-Dienst; der Anwendungsautor erzeugt Vorlagen im Builder und REI3 erzeugt auf Wunsch dann PDF-Dateien.

Der PDF-Editor bietet direkten Zugriff auf Daten über REI3-Relationen, ähnlich zu Formularen. Man definiert, auf was man zugreifen möchte, verbindet Relationen und lädt zusätzliche Daten über Listenfelder. Abhängig der Auswahl, können Felder zur Anzeige von Daten auf dem PDF platziert werden.
Um verschiedene Anwendungszenarien zu unterstützen, bieten wir zwei Layout-Systeme: Flows & Grids. Ein Flow dient großem oder dynamischen Inhalt - Dinge wie Texte mit vielen Paragraphen oder eine Reihe an Feldern, die konditionell ausgeblendet werden. Flow-Layouts wachsen mit ihrem Inhalt, wobei sie dynamisch auf der Seite wandern. Im Gegensatz dazu, bieten Grids eine Fläche, auf der Inhalt platziert werden kann; nützlich für Elemente mit fester Größe, wie z. B. Briefköpfe oder Fußzeilen. Durch Kombination von Flows & Grids, sollten die allermeisten Anwendungsfälle abdeckbar sein.

Mit Unterstützung gemischter Seitenlayouts, wiederverwendbarer oder separater Kopf- & Fußzeilen, sowie konditionellen Dokumentenstatus, kann der PDF-Editor auch komplexere Anforderungen erfüllen. Zusätzlich dazu, lassen sich Anzeige- und Formatierungsoptionen über Daten in Relationen überschreiben. Dies ermöglicht generische Vorlagen, welche sich anhand von Benutzerentscheidungen anpassen lassen - wie z. B. durch das Anpassen der Schrift/-größe, Zeileneinfärbung in Listen usw.
Native REI3-Feldinhalte, wie z. b. hochgeladene Bilder, Zeichnungen für Unterschriften sowie Barcodes, können direkt auf das PDF oder in Listenfeldern platziert werden. Dies ermöglicht scannbare Inventarlisten oder das Setzen der entsprechenden Unterschrift auf einem Arbeitsbericht.
Auch wenn der neue PDF-Editor das Mittel der Wahl für die meisten PDF-Anforderungen ab jetzt sein sollte, wird die Erzeugung von PDFs über HTML weiterhin funktionieren. Dieses neue Release fügt zudem die Option hinzu, mit UTF8-Schriftarten PDFs in Sprachen wie Japanisch oder Thai zu erzeugen.
Wir sind froh, dieses Release, nach so langer Zeit im Ofen, endlich veröffentlichen zu können. Wir freuen uns darauf, was ihr damit baut.
Neue Änderungshistorie
REI3 hat schon immer eine Änderungshistorie gehabt - ein Kernfeature für jede Anwendung, die mit Geschäftsdaten umgeht. Jedoch wurde die Änderungshistorie, trotz ständiger Weiterentwicklung der REI3-Plattform, bisher wenig angepasst. Dies ändert sich jetzt mit REI3.12, womit eine komplett neu gestaltete Änderungshistorie Einzug nimmt.

Die neue Änderungshistorie ist nicht nur besser geeignet zur Anzeige von vielen Änderungen, sie kann auch Änderungen von verschiedenen Datensätzen gleichzeitig anzeigen. Beispiel: Ein Formular zeigt ein Rechnungsdokument mit vielen Rechnungspositionen. Die alte Änderungshistorie konnte nur Änderungen des aktuellen Datensatzes im offenen Formular anzeigen - hier das Rechnungsdokument. Wir konnten geändertes Dokumentendatum oder Rechnungsnummer sehen - aber sonst nichts. Die neue Änderungshistorie prüft, ob andere, verwandte Datensätze auf dem aktuellen Formular geladen werden, wie z. B. die Rechnungspositionen. Wenn solche Datensätze in bspw. einem Listenfeld angezeigt werden, umfasst die neue Änderungshistorie auch Änderungen an diesen:

Das ist aber noch nicht alles. Zusätzlich zu verwandten Datensätzen (wie Rechnungspositionen oder Unteraufgaben), kann die neue Änderungshistorie auch Änderungen von vielen gleichen Datensätzen parallel anzeigen. Jede Liste, welche Datensätze mit aktivierter Historie zeigt, bietet jetzt Zugriff auf die Änderungshistorie aller aktuell geladenen Datensätze. Durch Filtern des Listenfeldes, kann die Historie auf gewünschte Datensätze limitiert werden.
Wichtig: Um Änderungen für mehrere Datensätze in der gleichen Ansicht zu zeigen, müssen diese identifizierbar sein; sprich, Änderungen sind nur dann hilfreich, wenn wir wissen, zu was sie gehören. Hierfür gibt es ein weiteres, neues Feature: "Datensatztitel". Datensatztitel werden für Relationen definiert und bestehen aus einem oder mehreren Attributen. Falls kein Datensatztitel für eine Relation definiert ist, kann die Änderungshistorie nur Änderungen des auf dem aktuellen Formular geladenen Datensatzes anzeigen - so wie vor REI3.12.
Integrierte Versions-Historie
Mit steigender Komplexität in REI3-Anwendungen, wird es immer wichtiger nachzuvollziehen, was sich zwischen Versionen geändert hat. Bisher wurde dies häufig in Notizen, Textdateien oder in getrennten REI3-Anwendungen gemacht; mit REI3.12 bieten wir jetzt eine integrierte Option: Die Versions-Historie.

Die Versions-Historie wird als Teil der Anwendung gespeichert und damit auch zusammen mit der Anwendung exportiert. Solange diese regelmäßig aktualisiert wird, kann in jedem REI3-System, wo die Anwendung installiert worden ist, Änderungen angeschaut werden. Die Versions-Historie wird zudem im nächsten Feature verwendet...
Neuer Anwendungs-Transfer
Die Benutzeroberfläche für das Exportieren von REI3-Anwendungen wurde, seitdem REI3 1.0 vor vielen Jahren veröffentlicht worden ist, nicht mehr nennenswert aktualisiert. Sie hat ihren Job getan, war aber vor allem für unerfahrene Anwendungsautoren nicht besonders hilfreich. In REI3.12 haben wir die Benutzeroberfläche überarbeitet, um klarer zu machen, was das System erwartet und um Fehler zu vermeiden.

Sie inkludiert auch neue Funktionen, wie das Hochladen von neuen Anwendungsversionen direkt in ein REI3-Repository. In diesem Fall wird die Versions-Historie verarbeitet, um Änderungen zu finden, die das REI3-Repository noch nicht kennt; ein Log mit den noch fehlenden Änderungen wird dann erzeugt und, zusammen mit der Anwendung, als Change-Log im Repository hochgeladen. Wenn Test- oder Staging-Repositories weitere Versionen zwischen größeren Releases erhalten, haben diese entsprechend feinere Change-Logs, da kleinere Deltas zwischen Versionen existieren.
Private Schlüssel für Anwendungssignierung, sowie Zugangsdaten für das Hochladen in REI3-Repositories, können jetzt für den aktuell eingeloggten Benutzer über Ende-zu-Ende-Verschlüsselung gespeichert werden. This reduziert den Aufwand fürs Ausrollen neuer Versionen. Bitte beachten, dass Ende-zu-Ende-Verschlüsselung nur so sicher ist, wie die Anmeldung des aktuellen Benutzers; bitte keine privaten Schlüssel oder Zugangsdaten speichern, wenn schwache - oder sogar die Standardzugangsdaten für den Adminbenutzer - verwendet werden.
Unterstützung mehrerer Repositories
Mit REI3.12 können jetzt auf mehrere REI3-Repositories gleichzeitig zugegriffen werden. Praktisch wenn man neue Versionen von Staging & Produktion bezieht oder wenn man auf private und öffentliche Repositories gleichzeitig zugreifen möchte. Obwohl es schon immer möglich war, neue Versionen aus verschiedenen Quellen in ein zentrales Repository zu importieren, macht das neue Feature das für viele Anwendungszenarien unnötig.
Wenn die gleiche Anwendung in mehreren Repositories verfügbar ist, wird REI3 die aktuellste, verfügbare Version anbieten. Falls eine ältere Version gewünscht ist, können einzelne Repositories temporär im Adminpanel deaktiviert werden.
Datenaustausch über API
Auch wenn es kein regelmäßiges Thema war, manche Anwendungsfälle erfordern das automatische Senden von Dateien über API-Aufrufe aus REI3 und/oder das hochladen von Dateien zu REI3 über API-Aufrufe. Beide Fälle können jetzt mit REI3.12 adressiert werden:
Erstens, von REI3 bereitgestellte APIs können jetzt Dateien empfangen. Dies geschieht in einem 2-Schritt-Verfahren. Dateien werden über einen FormData-Aufruf hochgeladen - so wie es auch Browser tun, wenn man Dateien in der Benutzeroberfläche hochlädt. Hierbei werden Datei-IDs zurückgegeben, welche dann zu einen Dateien-Attribut von einem Datensatz über einen regulären API-POST-Aufruf zugewiesen werden. Wir haben eine Vorlage in REI3 inkludiert, um den Vorgang zu zeigen.
Zweitens, kann REI3 jetzt bestehende Dateien, welche in einem Dateien-Attribut hochgeladen worden sind, in ausgehenden REST-Aufrufen einfügen. Dies geschieht durch Aufruf einer Instanzfunktion, um REI3 mitzuteilen, dass es eine Datei im REST-Körper inkludieren soll. Dies kann für einfache FormData-Aufrufe verwendet werden oder für XML- / JSON-Payloads auch enkodiert als Base64.
Diese neuen Features erlauben damit auch den Dateiaustausch zwischen REI3-Instanzen, was widerum neue Anwendungsfälle ermöglicht.
Eine neue, numerische Eingabe & Optionen für Nummernformate in CSV
Für manche egal, für andere sehr wichtig: REI3.12 bietet jetzt Eingaben, die Nummern formatiert:

Auch wenn Listen und andere Sichten Nummern bisher schon nach Benutzereinstellungen formatiert haben, waren Eingaben davon bisher ausgeschlossen. Die neue Eingabe adressiert diese Diskrepanz und ist für alle relevanten Felder automatisch aktiv.
CSV-Exporte bieten jetzt auch Optionen an, das Nummernformat zu definieren. Diese, zusammen mit anderen Einstellungen wie Datumsformat und Trennzeichen, werden jetzt dauerhaft für das jeweilige Listenfeld für den aktuellen Benutzer gespeichert.
Weitere Features und Verbesserungen
- Autoren können jetzt Kommentare in Änderungshistorien für Datensätze einfügen über die neue Instanzfunktion 'data_log_comment_create()'. Dies ist nützlich für Fälle, wo Änderungen nicht durch Menschen sondern vom System in ereignisbasierten oder geplanten Operationen, oder indirekt durch Trigger, durchgeführt werden. Die neue Änderungshistorie (s. oben) zeigt diese neuen Kommentare dann an.
- Autoren können Änderungshistorien für Datensätze löschen lassen über die neue Instanzfunktion 'data_log_delete()'. Dies kann in Situationen helfen, wo Datensätze aufgrund ihrer Beziehungen nicht gelöscht werden dürfen, jedoch aus Datenschutzgründen anonymisiert werden sollen.
- Datensatz-Titel können jetzt für Relationen definiert werden - dies dient erstens zur Anzeige von Änderungen an individuellen Datensätzen in der Änderungshistorie (s. oben) und zweitens zur Anzeige des aktuell geöffneten Datensatzes im Formular. Eine neue Option "Datensatztitel anzeigen" wurde zu den Formulareigenschaften hinzugefügt.
- S/MIME-Unterstützung für das Signieren von Nachrichten wurde für SMTP-E-Mail-Accounts hinzugefügt. Zertifikate sowie Schlüsseldateien müssen im Pfad liegen, der in der REI3-Konfigurationsdatei "config.json" unter "paths->certificates" definiert worden ist.
- Optionen für unverschlüsselte Verbindung sowie Zugriff ohne Authentifizierung wurden für SMTP-E-Mail-Accounts hinzugefügt. Dies wurde für interne E-Maildienste gemacht, wo Authentifizierung nicht möglich ist - bitte, wenn irgendwie möglich, diese Optionen nicht nutzen.
- Eine neue Version der Instanzfunktion für das Einlesen von Textdateien wurde hinzugefügt: 'file_text_read_cb()'. Diese inkludiert die Option, einen Callbackwert mitzuschicken.
- OAuth2-Clients für OpenID-Authentifizierung können nun einen Admin-Claim definieren. Wenn verwendet, und der Claim korrekt gesetzt ist, werden eingeloggte Benutzer Instanzadmins.
- Eine neue Option, bestimmte Sondertasten für globale Hotkeys zu deaktivieren, wurde im Adminpanel hinzugefügt. Dies kann Benutzern helfen, Hotkeys zu vermeiden, die im Konflikt sein können mit anderen Tools in der gleichen Umgebung.
- Die Eingabe für "Formular öffnen" im Builder wurde überarbeitet; die Anzahl an Dropdowns wurde reduziert und die Auswahl aus verbundenen Relationen vereinfacht.
- Viele Benutzeroberflächen im Builder wurden aktualisiert, sodass Daten nur noch neu geladen werden, wenn der aktuelle Datensatz (z. B. das geöffnete Formular) sich geändert hat. Das bedeutet, dass das Erstellen neuer Frontend-Funktionen oder das Registrieren von Triggern den aktuellen Datensatz nicht mehr zurücksetzt.
- Formularaktionen können jetzt direkt Formulare öffnen, ohne auf Frontend-Funktionen zurückgreifen zu müssen.
- Der Formulareditor im Builder kann jetzt auf neue Entitäten, wie z. B. Felder, in Orten wie den Formularzuständen referenzieren, ohne dass vorher gespeichert werden muss.
- Der Abruf von Änderungshistorien wurde optimiert, um die Anzahl der Datenbankabfragen deutlich zu reduzieren.
- Die Berechtigungsprüfung für Datenzugriff wurden optimiert, um Serverauslastung zu reduzieren.
- Die Auswahl für die Kalenderwoche in der Wochenansicht zeigt jetzt den Datumsbereich wenn man mit der Maus darüber schwebt.
Wichtiger Hinweis für Anwendungsautoren
Da die neue Änderungshistorie (s. oben) Änderungen für verwandte Datensätze zeigt, kann für die Darstellung von Änderungen in Beziehungseingaben nicht mehr die Darstellung dieser Eingaben im Formular genutzt werden (wie es die alte Änderungshistorie getan hat). Das bedeutet, dass Datensatz-Titel definiert sein müssen, damit Änderungen für Beziehungseingaben dargestellt werden können. Sobald Datensatz-Titel in den relevanten Relationen konfiguriert worden sind, werden auch Änderungen in der Historie wieder angezeigt.
Hinweise zum Upgrade
Wie immer, sind dies die regulären Update-Schritte:
- Unter Windows: Installationsprogramm ausführen.
- Auf Linux-Systemen: Dienst beenden, neueste Version extrahieren, die
r3-Binärdatei ersetzen, Dienst starten.
Wir danken allen für die anhaltende Unterstützung und Feedback. Die vollständige Liste an Änderungen befindet sich im technischen Change-Log.