Zum Hauptinhalt gehen

Delta Generierung | ContentProjektion

Kommentare

5 Kommentare

  • Zendesk API User
    Author: mbergmann - 2/26/2021 8:48

    Hallo Christian,

     

    ja, das ist das Standardverhalten. Grund ist, dass ohne weitere Konfiguration das Flag UPDATE_PAGEREF_WHEN_ENTITY_HAS_CHANGED aktiv ist, siehe DeltaGeneration (FirstSpirit Developer-API)

     

    Ich habe gesehen, dass dieses Flag in der Doku ausführlicher beschrieben sein könnte und dadurch vielleicht missverständlich verstanden werden kann. Insbesondere steuert es nicht, ob Änderungen an Datensätzen überhaupt berücksichtigt werden, sondern nur, wie sich eine Datensatz-Änderung auf die Erzeugung von Detailseiten auswirkt. In den ReleaseNotes zu FirstSpirit 5.2.102 gibt es allerdings eine umfangreichere Beschreibung:

     

    Ist  UPDATE_PAGEREF_WHEN_ENTITY_HAS_CHANGED  gesetzt  (oder  sind  keine

    DependencyRules  gesetzt),  werden  alle  Detailseiten  und  die  Übersichtsseite  bei

    einer Deltagenerierung berücksichtigt.

    Ist  UPDATE_PAGEREF_WHEN_ENTITY_HAS_CHANGED  explizit  nicht  gesetzt,

    werden  nur  die  betroffene  Detailseite  und  die  Übersichtsseite  bei  einer

    Deltagenerierung berücksichtigt.

     

    Ich habe schon ein internes Ticket angelegt, damit die Doku entsprechend erweitert wird.

     

    In deinem Fall müsste es also reichen, das Flag zu deaktivieren, indem du die DependencyRules anpasst:

     

    ...


    import de.espirit.firstspirit.access.schedule.DeltaGeneration;
    import de.espirit.firstspirit.access.schedule.DependencyRule;
    import de.espirit.firstspirit.access.schedule.DeploymentUtil;
    import java.util.EnumSet;

    ...

    deltaGeneration = DeploymentUtil.createDeltaGeneration(context); 

    EnumSet<DependencyRule> rules = EnumSet.copyOf(DeltaGeneration.DEFAULT_DEPENDENCY_RULES);

    rules.remove(DependencyRule.UPDATE_PAGEREF_WHEN_ENTITY_HAS_CHANGED);

    deltaGeneration.dependencyRules(rules);

    DeltaGeneration.ChangeSet changeSet = deltaGeneration.calculateChangeSet();

    ...

     

    Das Flag wirkt grundsätzlich nur auf sog. Detailseiten, d.h. auf Seiten wo in der Seitenreferenz im Reiter "Daten" der Eintrag "Anzahl der Einträge pro Seite" den Wert "1" hat. Seitenreferenzen mit einer anderen Einstellungen für diesen Wert (0 bzw. >1) sind sog. Übersichtsseiten. Übersichtsseiten werden bei einer Änderung eines "involvierten" Datensatzes immer komplett neu erzeugt.

     

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: christian_brock - 3/1/2021 16:35

    Hallo Michael,

    vielen dank für dein ausführliches Feedback.

    Viele Grüße
    Christian

    0
  • Zendesk API User
    Author: mbergmann - 1/14/2025 20:11

    Zwar etwas spät, aber es fiel auf dass ich versehentlich geschrieben hatte 

    rules.remove(DeltaGeneration.UPDATE_PAGEREF_WHEN_ENTITY_HAS_CHANGED);

    Die einzelnen Regeln sind aber in DependencyRule definiert und nicht in DeltaGeneration - wie auch der Link vorher zeigt - der führt(e) an die korrekte Stelle. 

    Korrekt ist also 

    rules.remove(DependencyRule.UPDATE_PAGEREF_WHEN_ENTITY_HAS_CHANGED);

    (inzwischen auch im Original angepasst).

    0
  • Zendesk API User
    Author: mbergmann - 1/24/2025 9:55

    Nochmal eine kleine Korrektur - irgendwie war da echt der Wurm drin  

    1. DeltaGeneration.DEFAULT_DEPENDENCY_RULES ist ja (logischerweise) eine UnmodifiableCollection - also muss man sich hier selber ein neues Set erzeugen
    2. Und das muss außerdem ein EnumSet sein, da man nur ein solches an DeltaGeneration#dependencyRules(rules); übergeben kann...
      • => Achtung, hierfür auch daran denken, java.util.EnumSet zusätzlich zu importieren 

    Hier nur als Hinweis - habe ich auch im Original-Posting angepasst. Ich hoffe es passt jetzt so  

    0
  • Zendesk API User
    Author: repositarian - 4/3/2025 14:32

    Hallo zusammen,
    kleines Update zum Code:

    //... EnumSet<DependencyRule> rules = EnumSet.noneOf(DependencyRule.class); rules.addAll(DeltaGeneration.DEFAULT_DEPENDENCY_RULES); rules.remove(DependencyRule.UPDATE_PAGEREF_WHEN_ENTITY_HAS_CHANGED); deltaGeneration.dependencyRules(rules); DeltaGeneration.ChangeSet changeSet = deltaGeneration.calculateChangeSet();

    So funktioniert es aktuell mit v2025.4

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.