Skip to main content
Skip table of contents

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

uuid

Eindeutige ID, wird perspektivisch automatisch gesetzt. Muss bis auf weiteres manuell gesetzt werden.

disabled

Hiermit kann man den aktuellen Patch deaktivieren/aktivieren. (true/ false)

description

Beschreibung des Patches. Wichtig für Nachvollziehbarkeit und Dokumentation.
Optional.

roleSpecific

Gibt an, ob der Patch nur für bestimmte Rollen gelten soll. (perspektivisch, aktuell nicht verfügbar)

applyIf

Bedingung, wann der Patch angewendet wird. Filterbar über Rolle oder per JS-Expression. (perspektivisch, aktuell nicht verfügbar)

objects

Liste der Objekte, die innerhalb dieses Patches angepasst werden sollen.

In der objects Eigenschaft werden die eigentlichen Patches definiert mit Eigenschaften:

Property

Beschreibung

object

Der Typ des Objekts. Aktuell menu , entity, page, command erlaubt

path

Pfad des zu patchenden Objects, z.B. Key.superMenu

changes

Liste von Änderungen diese haben ihrerseits jeweils die Keys:

  • path: Eigenschaft der Änderung. Aktuell nur orderKey zulässig

  • value: neuer Wert für die Eigenschaft

additions

Liste von Änderungen, diese haben ihrerseits jeweils die Keys:

  • path: Eigenschaft der Änderung. Ziel muss eine “Arrayproperty” sein. Aktuell nur fields zulässig.

  • value: neuer Wert für die Eigenschaft

Additions sind aktuell nur für entity zulässig.

delete

Gibt an, ob das gesamte Objekt gelöscht werden soll (true / false).

Aktuell nur für menu zulässig

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

CODE
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

CODE
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

CODE
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

CODE
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

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.