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.yamldefiniert 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