- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Delta-Generation
Hallo zusammen,
aktuell befassen wir uns mit der Erweiterung unseres Deployment-Prozesses mit FirstSpirit. In diesem Kontext erweist sich die Delta-Generierung von FirstSpirit 5.1 als interessante Funktion fรผr die Beschleunigung der Generierung. Im Rahmen unserer ersten Tests mussten wir feststellen, dass der Einsatz der Delta-Generierung nur mรถglich ist, wenn die Generierung als "Full Generation" konfiguriert wurde. Dies erweist sich fรผr unsere Projekt-Struktur als hinderlich, das wir innerhalb eines Projektes รผber mehrere Lรคndermandanten verfรผgen, die souverรคn generiert und deployed werden sollen.
Existiert ein Workaround fรผr die Delta-Generierung von Teil-Projekten (Partial-Generierungen) oder erfolgt die Ermittlung von Deltas rekursiv รผber den Root-Knotes eines FS-Projektes?
Ich bedanke mich vorab fรผr Ihre Mรผhe sowie fรผr etwaige Lรถsungsskizzen.
Viele Grรผรe,
Michael Wolf
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
fรผr den Ansatz haben wir in einem Projekt ein Skript geschrieben, das so ziemlich das macht, was du dir vorstellst. Und zwar handelt es sich dabei auch um ein Volldeployment. DAs Skript sorgt aber dafรผr, dass nur die Seiten rausgeschrieben werden, die unterhalb eines bestimmten Ordners liegen. Das Skript muss zwischen der Ermittlung des Deltas und der Generierung eingebaut werden. Fรผr jeden Ordner, fรผr den die Teilgenerierung ausgefรผhrt werden soll, muss ein eigener Auftrag angelegt werden.
import de.espirit.firstspirit.access.schedule.GenerateTask;
import de.espirit.firstspirit.access.store.sitestore.PageRef;
import de.espirit.firstspirit.access.ReferenceEntry;
sitename="<ORDNERNAME>";
metadatafield="md_communityName";
tasks = context.getTasks();
for (int i = context.getTaskIndex() + 1; i < tasks.size(); i++) {
task = tasks.get(i);
if (task instanceof GenerateTask) {
context.logInfo("manipulating task " + task.getName());
startNodes = task.getStartNodes();
nodesToRemove = new HashSet();
addNodes = new HashSet();
for (int j = 0; j < startNodes.size(); j++) {
node = startNodes.get(j);
if(node instanceof PageRef) {
page = node.getPage();
context.logInfo("Get Page: " + page.getUid());
for(ref : page.getIncomingReferences()) {
//&& ref.getReferencedElement() != node
if(!ref.isBroken() && !ref.isRemote() && ref.isType(ReferenceEntry.SITE_STORE_REFERENCE) ) {
context.logInfo("add node " + ref.getId());
addNodes.add(ref.getReferencedElement());
}
}
}
}
//startNodes.addAll(addNodes);
context.logInfo("How many startnodes after add? " + startNodes.size());
for (int j = 0; j < startNodes.size(); j++) {
node = startNodes.get(j);
context.logInfo("Value of metadata: " + node.getMetaFormData().get(null, metadatafield).get());
while (node != null && node.getMetaFormData().get(null, metadatafield).get() == null) {
context.logInfo("Change Parent to: " + node.getName());
node = node.getParent();
context.logInfo("Where I get my information from: " + node.getName());
}
if (node == null || node.getParent() == null || !sitename.equals(node.getMetaFormData().get(null, metadatafield).get().getValue())) {
context.logInfo("remove node " + startNodes.get(j).getId());
nodesToRemove.add(startNodes.get(j));
}
}
addNodes.removeAll(nodesToRemove);
startNodes.clear();
startNodes.addAll(addNodes);
context.logInfo("How many startnodes? " + startNodes.size());
}
}
Ich hoffe, dass das Skript hilft.
Grรผรe
Jan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
benรถtigst Du noch weitere Hilfe oder hat Dir die Antwort von Jan bereits geholfen?
In diesem Fall wรคre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere
Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lรถsung
gefunden haben, wรคre es nett, wenn Du diese hier bereitstellst.
Viele Grรผรe
Rene

