Search the FirstSpirit Knowledge Base
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:
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
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
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
Hallo Michael,
vielen dank für dein ausführliches Feedback.
Viele Grüße
Christian