Anwendungsframework
Mit dem Anwendungsframework können sowohl einfache Masken als auch komplexe Anwendungen / Pakete im be Portal erstellt werden. Die Grundlage ist dabei immer ein Package.
Im Package werden folgende Dinge definiert:
pagesDefinition von Elementen einer darstellbaren Website - als YAML Datei
widgetsDefinition von Widgets, die auf dem Dashboard des be Portals angezeigt werden können
entitiesDefinition von Entitäten, die technisch als PostgreSQL-View oder -Tabelle umgesetzt werden
menusDefinition von Menüeintragen in der globalen Navigation
commandsDefinition von Commands als Elemente, die Funktionen der Userinteraktion kapseln. Commands sind vielseitig einsetzbar, um z.B. auf Pages zu navigieren, Codeblock im beas auszuführen oder JavaScript im Frontend.
customControlsDefinition von CustomControls - Individuelle Oberflächen-Controls auf Basis von HTML/JS/CSS
rolesDefinition von Rollen für die Differenzierung der Berechtigungssteuerung innerhalb dieses Packages
beasServicesListe der beasServices die Bestandteil dieses Packages sind
dependenciesListe an Packages inklusive der benötigten (Minimal-)Version, die für das Package notwendig sind
Ist mindestens ein benötigtes Package ungültig oder wird eine andere Version benötigt, wird das Package selbst ungültig
patchesListe von Anpassungen an anderen Packages. siehe dazu auch Patches
translationsListe von Übersetzbaren Token. Siehe dazu auch Translations
Ein wichtiges Werkzeug bei der Entwicklung von diesen Paketen ist VS Code. VS Code bietet Unterstützung bei der Entwicklung von Packages, Pages und Codeblock Programmen.
Objekte können in der der package Datei unter
objects:
entities: ...
styles: ...
...
oder gesplittet in separaten Dateien mit Namensschema .objects/\w+.<OBJECT>.yaml definiert werden. Dadurch werden alle Objekte, die obiges Namensschema erfüllen angehängt. Möchte man verschiedene Objekte gebündelt in Dateien ablegen, so kann dies durch .objects/\w+.objects.yaml Dateien erreicht werden. Diese müssen dabei die folgende Form haben:
objects:
<OBJECT>:
- ...
- ...
<OBJECT2>:
....