GenerationContext und Skript mit Datensatzmodifikation
Author: 00schmidt
Publication Date: 11/30/2011 16:39
Folgender Hintergrund. Eine zentrale Datenquelle soll Dokumente (aus den Mediastores verschiedener Projekte) mit File-Reference und Metadaten enthalten, die dann mittels Integration in den Projekten übergreifend zur Verfügung gestellt werden. Es müsste jeweils ein Link in das Ursprungsprojekt zur verfügung gestellt werden. Dieser Link kann weder bei der Erstellung des Datensatzes (kein GenerationContext) noch bei der Filterung mittels Integration erstellt werden (ebenfalls kein GenerationContext). Die Idee ist, im Rahmen einer Generierung per Skript die URLs zu erzeugen und in die Datenquelle zu übernehmen. Die Übergabe des GenerationContext an das eigentliche Skript erfolgt mittels
$CMS_SET(void, #global.scheduleContext.setProperty("generation_context",#global.generationContext))$
innerhalb einer Teilgenerierung.
Nun ist aber die Session nicht schreibbar (UnsupportedOperationException auf Operationen wie commit(). Ähnliches wird ja bereits in https://community.e-spirit.com/message/2241 und https://community.e-spirit.com/message/2250 festgestellt. Grund ist, dass während der Generierung auf einen Revisionsstand zugegriffen wird und nichts mehr schreibbar sein soll.
Welche Optionen gibt es?
- kann man sich ohne GenerationContext einen entsprechenden UrlCreator erzeugen?
- kann man einen GenerationContext bekommen und trotzdem eine schreibbare Session erhalten?
- andere?
Grüße aus Hamburg
Michael
-
Author: hoebbel - 12/12/2011 13:26
Michael Schmidt schrieb:
Danke für die Bemühungen. Aber es reicht für mich noch nicht, um hier wirklich Fortschritt zu erzielen.
Wie genau habe ich denn das Interface "Connection"?
- connection.getUserService() -> getUserService() not found in class'de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor$ScriptTaskServerConnection'
- context.getConnection().getUserService() -> getUserService() not found in class'de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$ScheduleRunnable$1'
Und noch zur Klarstellung:
> Vor einem Generierungstask wird keine eigene Verbindung benötigt.
Mein Generierungstask braucht doch auch keine eigene Verbindung? Doch erst der nachfolgende, der die Veränderungen an der DB machen soll, oder?
Den Userservice gibt es so:
userservice = connection.getProjectById(context.getProject().getId()).getUserService();
Hierbei wird eine Verbindung mit dem Benutzer geöffnet, dessen Zugangsdaten unter Eigenschaften in der entsprechenden Skript-Aktion des Aufrags hinterkegt wurden.
Ein generieurngstask benötigt keine eigene Verbindung, das ist korrekt.
Viele Grüsse aus Dortmund,
Holger
0
Please sign in to leave a comment.
Comments
1 comment