Delta Generierung | ContentProjektion

Jump to solution

Hallo Liebe Community,

ich habe eine Frage zu dem Delta-Deployment in Bezug auf eine ContentProjektion.

Wir haben uns für die Einrichtung der Delta-Generierung an diesen Beitrag orientiert:

https://community.e-spirit.com/community/developer/blog/2013/04/03/deltageneration--what-is-that-and...

Folgendes Verhalten tritt in unserem Projekt auf. Wir haben eine Datenquelle worüber wir per ContentProjektion uns die entsprechenden Seiten generieren lassen. Wenn ich nun einen Datensatz bearbeite und entsprechend freigebe und das Delta-Deployment starte, war meine Erwartung nun, dass eben nur jener Datensatz mit der entsprechenden Seite aus der ContentProjektion generiert wird.

Es ist aber leider aktuell so, dass nicht nur der eine bearbeitete Datensatz generiert wird, sondern die kompletten Datensätze aus der Datenquelle per ContentProjektion erstellt werden.

Ist dies das normale Verhalten oder kann man in dem Script, welches die Initialisierung der Delta-Generierung vornimmt, noch etwas einstellen oder muss generell noch etwas beachtet werden?


FirstSpirit wird in der Version 2021-01 verwendet.

Hier noch der entsprechende Auszug aus dem vorgelagerten Script:

import de.espirit.firstspirit.access.schedule.*;

deltaGeneration = DeploymentUtil.createDeltaGeneration(context);

DeltaGeneration.ChangeSet changeSet = deltaGeneration.calculateChangeSet();

changeSet.configureGenerateTask();

context.logInfo("***** isFullGenerate: " + changeSet.isFullGenerate());

Vielen Dank schon mal für eure Hilfe.

Viele Grüße

Christian

Labels (1)
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee
Crownpeak employee

Re: Delta Generierung | ContentProjektion

Jump to solution

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 DpendencyRules anpasst:

...

deltaGeneration = DeploymentUtil.createDeltaGeneration(context); 

Set<DependencyRule> rules = DeltaGeneration.DEFAULT_DEPENDENCY_RULES;

rules.remove(DeltaGeneration.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

View solution in original post

2 Replies
mbergmann
Crownpeak employee
Crownpeak employee

Re: Delta Generierung | ContentProjektion

Jump to solution

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 DpendencyRules anpasst:

...

deltaGeneration = DeploymentUtil.createDeltaGeneration(context); 

Set<DependencyRule> rules = DeltaGeneration.DEFAULT_DEPENDENCY_RULES;

rules.remove(DeltaGeneration.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

Re: Delta Generierung | ContentProjektion

Jump to solution

Hallo Michael,

vielen dank für dein ausführliches Feedback.

Viele Grüße
Christian

0 Kudos