sarahfinkel
Elite Observer

Historische Veröffentlichung eines Projektes mit Remote Media

Jump to solution

Hey zusammen,

ich habe mal eine Frage bezüglich einer Veröffentlichung eines Projektes zum Zeitpunkt x, welches remote Media verwendet.

Die Historische Veröffentlichung ist momentan als Auftrag implementiert, welcher aus folgenden Aktionen besteht:

1. Skripting-Aktion, welches das Startdate des Kontext setzt (das Generierungsdatum wird aus den Projekteinstellungen des Projektes gezogen):

   context.setStartTime(generationDate);

2. Generierungsaktion (Startknoten: Root)

3. Veröffentlichung (Rsync)

Dies funktioniert auch ganz gut und veröffentlicht den Stand des Projektes zum Zeitpunkt x, allerdings erstmal ohne die Medien aus dem Remote Medienprojekt.

Um die Medien ebenfalls zu veröffentlichen, wurde ein gleicher Auftrag im Remote Medien-Projekt angelegt (das Generierungsdatum wird ebenfalls aus den Projekteinstellungen des eigentlichen Projektes gezogen).

Die Generierungsaktion hat als Startknoten den Root der Medienverwaltung.

Das Problem nun allerdings ist, dass das remote Medienprojekt für viele Projekte verwendet wird und eine Generierung aller Medien zum Zeitpuntk x ca. 1 Tag dauert ;(.

Desweiteren ist vom Kunden nicht gewünscht, dass auch Medien veröffentlicht werden, die zum Zeitpunkt x nicht im gewünschten Projekt referenziert waren.

Nun zu meiner Frage, wie können die zum Zeitpunkt x im Projekt referenzierten Medien aus einem Remote-Projektes  generiert und veröffentlicht werden?

Hat jemand eine Idee?

Meine Lösungsansätze sind wie folgt:

  1. Nachdem die Seiten zum Zeitpunkt x generiert wurden, werden die Seiten/Absätze/Datenquellen nach referenzierten Medien aus dem remote Media Projekt durchsucht.
    -> Dies kann denke ich einfach durch ein Skript realisiert werden.
  2. Die gefundenen Medien zum Zeitpunkt x werden generiert und anschließend veröffentlicht
    -> Hier habe ich keine Ahnung wie das zu lösen ist Smiley Wink.

oder

  1. Es werden alle Medien des Remote Medien-Projektes zum Zeitpunkt x geprüft, ob sie im Projekt zum Zeitpunkt x referenziert waren.
    -> Dies ist ebenfalls denke ich kein Problem
  2. Die gefundenen Medien werden generiert und veröffentlicht:
    -> Hier habe ich keine Ahnung wie das zu lösen ist ;).

Vielen Dank für eure Hilfe

Herzliche Grüße

Sarah Finkel

0 Kudos
1 Solution

Accepted Solutions
0 Kudos
9 Replies
stephan
I'm new here

Hallo,

der erste Ansatz ist denke ich wie folgt lösbar: Über den UserService holt man sich die betreffenden Stores zum gewünschten Zeitpunkt. Auf den Elementen der Stores kann man sich die ausgehenden Referenzen (Remote-Medien) holen. Wenn man die Liste dieser Elemente (Medien) hat, muss man diese lediglich im Remotemediaprojekt suchen. Danach kann man einen Generierungsauftrag im Remotemediaprojekt manipulieren und die Liste der Medien diesem Auftrag als Startknoten hinzufügen und das Deployment starten. 

Viele Grüße

Jörg Stephan

Hallo,

super Danke für die schnelle Hilfe. Der erste Teil ist mir nun klar.

Aber mein Problem ist nun, wie ich den Generierungsauftrag im Remoteprojekt manipulieren kann. In der API finde ich nicht wirklich Methoden dazu ;(.

Es gibt bei der Klasse "GenerateTask" nur die Methode "getGenerateList()", eine Methode um die Medien diesem hinzuzufügen, finde ich leider nicht.

Oder bin ich völlig falsch?

Können Sie mir einen Ansatzpunkt geben?

Vielen Dank & Liebe Grüße

Sarah Finkel

0 Kudos

Hallo,

die Liste der zu generierenden Knoten kann über http://www.e-spirit.com/odfs42/access/de/espirit/firstspirit/access/schedule/GenerateTask.html#getSt... manipuliert werden.

0 Kudos

Hallo,

danke schön!!! Dann werde ich das mal versuchen Smiley Wink

0 Kudos

Hey zusammen,

also erstmal vielen Dank für die tollen Antworten. Ich habe die Historische Generierung soweit hinbekommen Smiley Wink.

Nun aber habe ich folgendes Problem mit den generierten Pfaden der remote Medien:

Ausgangspunkt:

In einer Seite wird zum Zeitpunkt x (z.B. 01.09.2009) ein Medium (z.B."test"), welches zum jetzigen Zeitpunkt im Ordner "A" liegt referenziert. Zum Zeitpunkt x (also am 01.09.2009) lag das Medium "test" jedoch im Ordner "B", da es in der Zwischenzeit verschoben wurde.

Führe ich jetzt die historische Generierung zum Zeitpunkt 01.09.2009 der Seite aus, so wird der Pfad zum Medium als "A/test.pdf" generiert. Das ist jedoch nicht richtig, denn die Generierung der Medien zum Zeitpunkt 01.09.2009 legt das Medium logischerweise in "B/test.pdf", da es ja zum Zeitpunkt 01.09.2009 im Ordner B lag.

Das bedeutet in der Veröffentlichung wird das Medium nicht gefunden.

Ich habe dies erst so gelöst, dass ich bei der Generierung der Medien den context nicht auf das historische Startdatum setze. Dann klappt es auch, aber natürlich werden Medien, die zum jetzigen Zeitpunkt nicht mehr existieren, aber zum 01.09.2009 noch da waren, natürlich nicht mehr gefunden und damit auch nicht mehr generiert.

Im Anhang findet ihr mal die beiden Skripte, die für die historische Veröffentlichung geschrieben wurden.

Ich hoffe jemand kann mir helfen Smiley Wink.

Viele liebe Grüße

Sarah Finkel

0 Kudos

Ich verstehe den Satz "aber natürlich werden Medien, die zum jetzigen Zeitpunkt nicht mehr existieren, aber zum 01.09.2009 noch da waren, natürlich nicht mehr gefunden und damit auch nicht mehr generiert" nicht. Wieso sollen die nicht gefunden werden? Der Stand, den die Generierung sieht, ist doch vom besagten Zeitpunkt x = 1.9.2009??

Dann noch eine Anmerkung zum Skript (habe nur sehr oberflächlich draufgeschaut): StoreElement.getChildren(Class<StoreElement>) sollte sehr vorsichtig benutzt werden, da es alle Kinder in den Speicher lädt. Wenn das Medien-Projekt wie erwähnt sehr gross ist, ist das nur eine Frage der Zeit, bis das Skript einen OutOfMemoryError produziert. Von der Laufzeit ganz zu schweigen.

Im Skript sind zwei solche Aufrufe, in Zeile 86 der ist komplett überflüssig, die Liste wird überhaupt nicht gelesen.In Zeile 89 kann die "for" Schleife umgestellt werden, so das dort der Aufruf ebenfalls überflüssig wird. Siehe auch den Kommentar im JavaDoc bei der Methode.

Peter

Zu Ihrer Frage:

Das hat mit "context.setStarttime()" zu tun. Wenn ich "context.setStarttime(generationDate)", also den Context auf das historische Datum setze, dann wird der Stand der Medien zum Zeitpunkt 1.09.2009 generiert. Allerdings mit der "falschen" Ordnerstruktur.

Wenn ich nicht context.setStarttime(generationDate) setze, dann wird der jetzige Zeitpunkt generiert und damit auch nur die Medien, die zum jetztigen Zeitpunkt da sind Smiley Wink. Aber das ist ja auch nicht richtig.

Meine Frage ist eher, warum bei der Seitengenerierung die falschen Pfade generiert werden.

Zum Skript: Vielen Dank für Ihre Anmerkungen. Der Aufruf in Zeile 86 war noch ein Test ;(. In einer ersten Version habe ich mir die Medienordner, die durchlaufen werden ausgeben lassen. Das habe ich vergessen zu löschen. Die Schleife werde ich umstellen und Iterable benutzen Smiley Wink.

0 Kudos

Meine Frage ist eher, warum bei der Seitengenerierung die falschen Pfade generiert werden.

Das frage ich mich auch. Es sollte doch die Pfadstruktur sein, die am 1.9.2009 gültig war. Und das ist die Struktur, die die Generierung auch gesehen haben sollte. Also die, welche die Medien referenziert hat.

Peter
0 Kudos

Hat sich dieses Problem bereits erledigt? Dann würde ich ihre Frage gerne als beantwortet markieren.

0 Kudos