Neuheiten Framework Studio 4.4
Informationen zu aktuellen Versionen und korrigierten Fehlern finden Sie in den Release-Informationen.
Neue Requirements
Kein Internet Explorer 11 mehr
Der Internet Explorer 11 wird nicht mehr unterstützt.
Folgende Features können nur noch mit aktuellen Browsern wie z.B. Edge, Chrome oder Firefox genutzt werden:
- Client Start Page
- Mit Framework Studio generierte Online-Hilfe
- Mobile Client
Windows Client-Betriebssysteme
Am Client- und Entwicklungs-Rechner wird nur noch Windows 10 unterstützt. Ältere Windows-Versionen werden nicht mehr unterstützt.
Client Launcher
Mit der Version 4.4 gibt es einen neuen Client-Launcher. Dieser bietet eine experimentelle Unterstützung für Java 11 (64 Bit).
Darüber hinaus gibt es ein paar kleinere Neuerungen. Ein Update auf diese Version ist aber nicht zwingend nötig. Bei Bedarf kann weiterhin der Client-Launcher mit der Version 4.2.16 verwendet werden.
Umbau der Code Generierung und des Compiles
Die Code-Generierung und der FS Compile wurden grundlegend überarbeitet. Hieraus ergeben sich folgende Neuheiten:
- Für jeden Namespace und Typen gibt es nur noch eine DLL, welche generiert und kompiliert wird.
- Die Link-Schichten sind obsolet und werden zukünftig nicht mehr generiert.
- Auch die Context-Versionen sind nicht mehr notwendig.
- Die Anzahl der Assemblies hat sich stark reduziert, womit das debuggen komfortabler und der Compile schneller ist.
- Der Code aller Schichten muss und kann vor Ort komplett erstellt werden.
Die Debug DLLs, welche mit dem FrameworkCompiler kompiliert wurden, werden nicht mehr in das Repository geschrieben.
Note
Zum Debuggen kann und muss zwingend der betroffene Code lokal debuggable kompiliert werden.
Das bietet den entscheidenden Vorteil, dass Visual Studio beim Debuggen zuverlässig die richtigen cs-Dateien findet. Debug-Informationen, die vom FrameworkCompiler erzeugt wurden, zeigten immer auf einen absoluten Dateipfad, der auf dem eigenen Rechner nicht mehr stimmt.
Es gibt bei den Options die Möglichkeit einen automatischen Debug Compile zu aktivieren. Des Weiteren wurde der Login-Dialog, sowie der GetDLLs Dialog um die gleiche Option "AutoDebug DLLs" erweitert. Wird beispielsweise beim Login die AutoDebug-Option auf "All" gesetzt, werden alle Compile Object Types beim Login automatisch debuggable kompiliert. Nähere Informationen finden Sie in den entsprechenden Dialog-Dokumentationen.
Bei importierten oder versiegelten Package-Version kann man sich jetzt mit einem normalen Benutzer anmelden und debuggable kompilieren.
Die Optionen Debug und DebugAll sind überarbeitet worden.
- Debug bedeutet, dass die Services, Components, CustomControls und Forms-Elemente des aktuellen Packages und der Base-Packages debuggable kompiliert werden.
- Im Gegensatz hierzu kompiliert DebugAll alle Element-Typen debuggable. Beachten Sie, dass vor allem Interfaces und DBTables aufwendig und somit mehr Zeit benötigen, um debuggable kompiliert zu werden.
Important
Im Zuge der Änderungen an der Code-Generierung und der Zusammenlegung der Code-Dateien in eine DLL, können zirkulären Referenzen auftreten. Des Weiteren kann es sein, dass nun fehlende Referenzen ergänzt werden müssen. Etwaige Fehler müssen in der IDE behoben werden. Nachfolgende Maintenance Routine kann gegebenenfalls beim Lösen der Fehlern unterstützen.
Maintenance Routine für Referenzen und Konstruktoren
Im Maintenance-Mode stehen speziell für den Update auf die Version 4.4 neue Cleanup-Routinen zur Verfügung.
Constructor Cleanup: Ungültige Konstruktor Deklarationen in Components werden in eine gültige Form überführt. Dies ist notwendig, da der Compile in der FS Version 4.4 ungültige Deklarationen als Error ausgibt.
References Cleanup: Entfernt nicht existente externe User-Referenzen und stellt externe
$GAC
-Referenzen auf$DotNetDirectory
um.
DevExpress® XtraReports™
Mit der Version 4.4 bietet Framework Studio experimentelle Unterstützung für DevExpress® XtraReports™ 21.1 an. Hierbei handelt es sich um eine alternative Reporting-Lösung, die zunächst parallel mit Crystal Reports eingesetzt werden kann, diese langfristig allerdings ersetzen soll. Einige Vorteile der neuen Lösung sind z.B.:
- Erhöhte Performance, sowohl im Druck als auch beim Design
- Keine Installation einer separaten Runtime notwendig
- Kein Erwerb von Nutzer-Lizenzen notwendig
- Datenquellen müssen nicht über xsd-Dateien abgewickelt werden, sondern werden direkt auf Basis der Objekte selbst gebildet
- Langfristig Support für von Windows losgelöste Entwicklung (.NET Core)
- Technisch zugänglichere Plattform (Custom Controls, Custom Designer u.Ä.)
- Dadurch die Möglichkeit, Reports direkt im Browser anzupassen
Warning
Dieses Release beinhaltet noch keine vollwertige Funktionalität. Sie können sich bereits mit der neuen Lösung auseinandersetzen und Nutzungserfahrungen sammeln, ein produktiver Einsatz ist allerdings ausdrücklich noch nicht vorgesehen. Eine Beibehaltung der aktuellen Dateiformate und API in Versionen vor dem vollständigen Release wird angestrebt, aber nicht garantiert.
Im Report Document Type wurden Anpassungen vorgenommen, die gleichzeitiges Führen von Crystal- und DevExpress®-Dateien für den selben logischen Report erlauben. Jeder Report kann jetzt gleichzeitig einen Crystal Report und einen DevExpress® Report besitzen. Die beiden Dateien sind unabhängig voneinander editier-, lösch- und ersetzbar.
Falls ein Report Document Type gedruckt werden soll, der gleichzeitig einen Crystal- und einen DevExpress® Report beinhaltet, wird auf Basis des Flags Global.ReportingSoftware entschieden, welcher der beiden genutzt werden soll. Das Flag lässt sich im Use-Code überschreiben.
Falzmarken und in den Report eingebettete Subreports wurden mit eigenen Custom Controls gelöst.
Um bei der Konvertierung mit dem originalen Crystal Report vergleichen zu können, wurde ein Button im Designer geschaffen, welcher diesen schreibgeschützt öffnet.
Report Migration Summary
Für die Migration der Crystal Reports zu DevExpress® muss der zu erwartende Aufwand bewertet und die noch ausstehenden Reports gelistet werden können. Diese Übersicht kann über das Kontextmenü eines Namespaces oder für einen Report Document Type angezeigt werden.
Nähere Informationen zur "Report Migration Summary" finden sich hier
Namespace-Referenzen überarbeitet
Die Namespace-Referenzen arbeiten mit Compile Object Types. Diese entsprechen den Compile-Schritten. So sind z.B. die Object Types Service, Service Proxy, Service Host und FSTransformation zum Compile Object Type Service zusammengefasst.
Der Dialog für die Namespace-Referenzen wurde überarbeitet:
- Es werden jetzt alle Referenzen für alle Typen in einer Liste angezeigt.
- Die Liste bietet eine Übersicht der wichtigsten Detail-Informationen.
- Die Usings werden als Freitext-Feld bearbeitet.
- Bei der Auswahl von
$GAC
-Referenzen werden diese, wenn möglich auf$DotNetDirectory
korrigiert.
Individueller Code - Code files
Für die Definition von individuellem Code steht ein neues Element Code File zur Verfügung. Der Code einer Code file muss eine Klasse beinhalten, in welcher Methoden, Konstruktoren, Properties etc. definiert werden können. Es können mehrere Klassen, jedoch keine Namespaces, in eine Code file definiert werden. Aufgrund gängiger Konventionen sollte ein Code File jedoch nur eine Klasse beinhalten und der Name des Code Files identisch mit dem Namen der Klasse sein. Ferner ist der identische Namen für die Intellisense notwendig.
Für ein Code file muss ein Compile Step festgelegt werden. Dieser bestimmt mit welchem Object Typ der Code kompiliert wird und somit in welchem Namespace sich das Code file befindet.
Soll der individuelle Code auch in einem anderen Namespace zur Verfügung stehen, muss hierfür eine Referenz angelegt werden. Diese muss auf den Namespace des Code files und auf dessen Compile step verweisen. Ein Beispiel hierzu findet sich hier.
Note
Der Compile step sollte zu einem späteren Zeitpunkt nicht geändert werden, da ansonsten bestehende Referenzen auf das Code file ungültig werden und der Compile Fehler generieren wird. Die Compile Fehler können verhindert werden, indem der ObjectType der Referenzen ebenfalls angepasst wird.
REST Endpoint für Service Hosts
Standardmäßig bietet ein Service Host den ausgewählten Service bzw. dessen Service Contract nach außen hin über WCF und damit das SOAP-Protokoll an. Moderne Applikationen und allen voran Webapplikationen in Borwsern oder auf mobilen Endgeräten unterstützen mittlerweile jedoch oft kein SOAP mehr und bevorzugen deshalb die Kommunikation über JSON.
Framework Studio bietet die Möglichkeit, den Service Host so zu konfigurieren, dass vollständig automatisch ein zusätzlicher Endpoint generiert wird, mit dem die im Service Contract propagierten Methoden auch über JSON und damit über einen normalen HTTP-Request angesprochen werden können.
Eine detaillierte Beschreibung dieser neuen Funktionalität befindet sich HIER.
Placeholder für Editfields und Comboboxen
Für Editfields und Comboboxen steht ein neues Property CaptionAsPlaceholder zur Verfügung. Wenn dieses Property auf true
gesetzt wird, zeigt das Editfield oder die Combobox die Caption als Placeholder an, solange das Control leer ist bzw. keinen Datensatz anzeigt. Auf diese Weise können zusammenhängende Daten ggf. übersichtlicher dargestellt werden:
Hinweise
- Placeholder funktionieren sowohl im Java Client als auch im HTML Client.
- Die Farbe des Placeholders ist fest auf
RGB(180, 180, 180)
bzw.#b4b4b4
gesetzt. - Befindet sich das Control in einem FieldPanel, so wird kein extra Label generiert, wenn CaptionAsPlaceholder auf
true
gesetzt ist.
Bilder Unterstützung für HTML Editfields
Editfields mit dem Editor Type HTML können nun Inline-Bilder anzeigen.
Diese Bilder können aus der Zwischenablage im Java-Client oder mithilfe eines <img/>
Tags eingefügt werden.
Reports, die mit DevExpress® erstellt werden, unterstützen diese Bilder. Crystal Reports unterstützt diese Bilder leider nicht.
Genaueres unter Editfield.
FS Client Launcher
Im Client-Launcher gibt es folgende Neuerungen:
- Die Online-Hilfe kann aus dem Konfigurations-Dialog mit F1 aufgerufen werden.
- Anzeige des Splash Screen der Application
- Für Version 4.4 Anwendungen gibt es eine Experimentelle Unterstützung für Java 11 (64 Bit)
- Der Pfad des
.jarcache
Ordners hat sich von%userprofile%\FSClientLauncher\.jarcache\
zu%localappdata%\FSClientLauncher\.jarcache\
geändert. Durch die Verwendung von%localappdata%
wird bei serverbasierten Benuzter-Profilen der Jar-Cache nicht mehr zum Server synchronisiert. Beim ersten Start nach dem Update wird der alte.jarcache
Ordner einmalig an die neue Stelle verschoben.
Weitere Neuerungen
Für Comboboxen und Listboxen kann die DisabledBackColor definiert werden.
In Methoden-Parametern und Rückgabetypen können die C# 7 Tuple-Types verwendet werden.
Bei den Access Units wurde die Ansicht der verbundenen AccessUnits verbessert. Es werden nun neben den Parents auch die AccessUnit-Children angezeigt. Zudem können die AccessUnit-Parents bearbeitet werden.
Die RowID und RowVersion sind nun zwei unabhängige Mechanismen. Dies bedeutet, dass die FSROWID als eindeutiger und alleiniger Primary Key für Update- und Delete-Bedingung gilt. Die RowVersion wird weiterhin für die Concurrency-Violation Überprüfung verwendet. Dabei ist es nebensächlich, ob der Primary Key eine ROWID oder ein individueller PK ist.
Analog zur GlobalOnBeforeSaveAction() gibt es auch eine GlobalOnAfterSaveAction(), welche jedoch nach der SaveAction aufgerufen wird.
Im StaticCache steht eine neue Methode ContainsKey(pk) zur Verfügung.
Für Checkboxen wurde der Tabellenfilter auf Checked/Unchecked (bzw. Aktiviert/Deaktiviert) geändert. Gibt es Datensätze mit Null-Werten, werden diese bei der Checkbox-Filterung als Unchecked gewertet.
Im Package Manager ist es möglich Warnings, welcher der Compiler ignorieren soll, anzugeben. Des Weiteren kann auch das Level der Warnings angegeben werden. Die Einstellung wird an die Customizing-Packages vererbt. Sie kann ausschließlich durch Nissen & Velten am eNVenta Package (bzw. einem anderen Default-Package) geändert werden.
Im Publish, Run und Publish2go Wizard kann nun auch das Icon für die Anwendung gesetzt werden.
Es ist nun möglich, im Wörterbuch nach Dependencies für MLKeys zu suchen.
Es ist nun möglich, auf der Client Start Page die Client-Option Java Web Start während des Publish Vorganges ein oder aus zu blenden. Standardmäßig ist der Java Web Start nun deaktiviert.
Es ist nun möglich an dem Application-Element die Form-Navigation im HTML Client zu deaktivieren.
Bei den Relation-Properties (Components) steht in der Registerkarte Load Command nun ein CodeEditor mit entsprechender Intellisense zur Verfügung.
Es ist nun möglich, den Code im C#-Code Editor, mit dem Button Format Code zu formatieren.
Es ist nun möglich, Grid-Columns per Action zu verschieben. Dafür gibt es zwei neue Methoden(MoveBefore / MoveAfter) an der GridColumnControlAction und zwei neue Methoden(InsertBefore / InsertAfter) an der GridControlAction.
Der Text in einem Dokumentations-Editor wird jetzt auf Rechtschreibfehler überprüft. Gefundene Rechtschreibfehler werden rot unterstrichen. Es werden die Sprachen Deutsch (de), Englisch (en), Französisch (fr) und Italienisch (it) unterstützt.
Es ist nun möglich, Dokumentationen abhängig von den Lizenzeinstellungen zu exportieren. Dafür wurden neue Checkboxen im Export Wizard hinzugefügt und die Parameter der FSConsole erweitert.
Das Einfügen von Links im Dokumentations-Editor wurde überarbeitet. Es kann nun mithilfe von Autocomplete nach existierenden Dokumentationen gesucht werden.
Es ist nun möglich, Url-Links aus der Zwischenablage mit STRG+V, Rechte-Maustaste->Edit->Paste oder dem Link einbinden Dialog im Dokumentations-Editor einzufügen.
Es ist nun möglich, Bilder aus der Zwischenablage mit STRG+V, Rechte-Maustaste->Edit->Paste oder dem Bild einbinden Dialog im Dokumentations-Editor einzufügen.
Es ist nun möglich, Tooltips im Dokumentationsfenster zu bearbeiten.
Es ist nun möglich, Headlines im Dokumentationsfenster zu nutzen.
Am cGlobal wurde der neuer EntryPoint OnLicenseGranted geschaffen, mit dem man Lizenz-Freigabe programmatisch einschränken kann, obwohl die Lizenz-Datei dies erlaubt. Parallel dazu wurde die neue Methode LicenseGrantedInFile am AUHelper geschaffen.
Noch nicht abgespeicherte Tabs werden nun mit einem Stern
*
gekennzeichnet.