Patches
Mithilfe von Patches können Anpassungen an fremden Codeblock Packages vorgenommen werden. Dies liefert so zum Beispiel individuelle Einstellungsmöglichkeiten für Standard-Packages. Wie fast alle Konfigurationen sind die Patches unter objects
angesiedelt und können sowohl in der be_package_install.yaml
direkt - als auch in seperaten xxx.patches.yaml
definiert werden.
Zum aktuellen Zeitpung (7.4.0
) sind die Anpassungsmöglichkeiten überschaubar: Es können Menüeinträge entfernt und die Sortierung angepasst werden. Mit spätestens 7.5.0
kommen Modifikationsmöglichkeiten um Felder bestehenden Entitäten zuzufügen.
Eine einzelne Patchconfiguration hat Eigenschaften:
Property | Beschreibung |
---|---|
| Eindeutige ID, wird perspektivisch automatisch gesetzt. Muss bis auf weiteres manuell gesetzt werden. |
| Hiermit kann man den aktuellen Patch deaktivieren/aktivieren. ( |
| Beschreibung des Patches. Wichtig für Nachvollziehbarkeit und Dokumentation. |
| Gibt an, ob der Patch nur für bestimmte Rollen gelten soll. (perspektivisch, aktuell nicht verfügbar) |
| Bedingung, wann der Patch angewendet wird. Filterbar über Rolle oder per JS-Expression. (perspektivisch, aktuell nicht verfügbar) |
| Liste der Objekte, die innerhalb dieses Patches angepasst werden sollen. |
In der objects
Eigenschaft werden die eigentlichen Patches definiert mit Eigenschaften:
Property | Beschreibung |
---|---|
| Der Typ des Objekts. Aktuell |
| Pfad des zu patchenden Objects, z.B. |
| Liste von Änderungen diese haben ihrerseits jeweils die Keys:
|
| Liste von Änderungen, diese haben ihrerseits jeweils die Keys:
Additions sind aktuell nur für |
| Gibt an, ob das gesamte Objekt gelöscht werden soll ( Aktuell nur für |
Es sind folgenden Kombinationen möglich:
Property | Action | Sub-Property | Beschreibung |
---|---|---|---|
menu | change | orderKey | Änderung der Sortierreihenfolge von Menüeinträgen |
delete | - | Löschen von Menüeintragen | |
entity | addition | fields | Zufügen neuer Felder zu einer Entität |
change | permissions.read permissions.create permissions.delete permissions.update | Überschreiben der jeweiligen Permission an einer Entität | |
page | change | permissions | Überschreiben der Page permissions |
command | change | permissions | Überschreiben der benötigten Permission für das Ausführen des Kommandos. |
Werden Objecte eines anderen Packages gepatched, so muss das zu patchende Package auch als dependency dem Package zugefügt werden.
Die Form von value
hängt stets maßgeblich von dem zu patchendem Pfad ab und stimmt mit dem jeweilig “benötigtem” Objekt überen. Das heißt z.B. für das zufügen von Entitätsfeldern ist der value
ein Objekt, dessen Form mit der entsprechenden Felddefinition, wie sie auch innerhalb von <..>.entities.yaml
Dateien zugelassen ist, übereinstimmt..
Beispiele
1. Beispiel: Den orderKey
eines Menüs überschreiben
patches:
- uuid: <automatisch generierte UUID>
description: |
Das Menüelement "upYouGo" soll up you know?.
objects:
- object: menu
path: BEPO.upYouGo
changes:
- path: orderKey
value: AB
2. Beispiel: Menüeintrag löschen
patches:
- uuid: <automatisch generierte UUID>
name: C_MenuLoeschen
description: |
Entfernt den veralteten Menüeintrag "mnuObsoleteMenu".
objects:
- object: menu
path: BEPO.mnuObsoleteMenu
delete: true
3. Beispiel: Ein neues Feld einer Entität zufügen
patches:
- uuid: <automatisch generierte UUID>
description: |
Extend an Ent.
objects:
- object: entity
path: LOTR_Ent
additions:
- path: fields
value:
name: bark_type
dbType: text
label: Art
4. Beispiel: Die benötigten Leserechte an einer Entität überschreiben
patches:
- uuid: <automatisch generierte UUID>
description: |
Look at my horse. My horse is amazing.
objects:
- object: entity
path: LOTR_Horses
changes:
- path: permissions.read
value:
- role: BE.portalUser