Search the FirstSpirit Knowledge Base
Hallo zusammen,
wie haben ein FS 5 Projekt in dem die Freigabe aktiviert ist.
Wir möchten technische Metadaten in einem Generierungsscript in unserem Projekt pro Dokument im Mediastore berechnen und diese als Metadatum auf dem Dokument setzen. Das wollen wir, damit der GSA Suchkonnector die berechneten Metadaten an die GSA sendet.
Wir suchen jetzt nach einer Möglichkeit die Metadaten auf einem Dokument zu setzen ohne den Freigabestatus anzupassen. Ist das möglich?
Für uns möglich wäre auch die Metadaten zu setzen und nur die Metadaten zu releasen. Ist das möglich?
Wir können das Dokument aus dem Mediastore nach dem Setzen der Metadaten nicht einfach freigeben, weil es sich ja auch im Status "CHANGED" befinden könnte und es dann schon vom SYSTEM User im Generierungscontext freigegeben würde. Das Metadatum das wir setzen wollen ist abhängig davon wo das Dokument überall im Auftritt referenziert wurde.
Hallo Andreas,
m.E. ist es nicht möglich Metadaten von Elementen (Medien, Seiten, etc.) aus dem Freigabestand zu verändern. Dies geht ausschließlich über das verändern der Objekte im Arbeitsstand und einer anschließenden Freigabe (Überführung von Arbeitsstand in den Freigabestand). Es ist auch nicht möglich die Freigabe nur auf die Metadaten zu beschränken.
Wäre es eine Option die für die GSA erforderlichen Metadaten mittels Script im Freigabeworkflow vor der abschließenden Freigabe zu ermitteln und in die Metadaten zu schreiben?
Das Verändern von Objekten während eines Generierungsauftrages ist m.E. der falsche Weg, da der Auftrag mit einer Projekt Revision X läuft, das Verändern von Elementen während des Auftrages aber Revision X + n erzeugt die dann in dem Auftrag (zumindest out-of-the-box) nicht generiert werden..
Beste Grüße,
Hendrik
Das Setzen der Metadaten auf einem Dokumente während der Freigabe wäre nur dann möglich, wenn die Metadaten nur vom Objekt selber abhängen. In userem Use Case ist das aber nicht der Fall. Wir wollen Metadaten auf einem Dokument setzen, abhängig davon wie oft und wo es referenziert wird.
Wäre es möglich in einem Auftrag vor der Generierungsaktion die Metadaten zu setzen oder läuft das Projekt hier auch schon in der Revision X+n?
Die Berechnung der Metadaten vor der Freigabe eines Mediums (wo und wie oft wird es referenziert) würde natürlich nur den Zeitpunkt der Freigabe berücksichtigen, das ist korrekt. Würde das Medium zu einem späterem Zeitpunkt an anderer Stelle referenziert, wäre dies nicht in den Metadaten des Mediums berücksichtigt sofern es nicht erneut freigegeben wird wofür - mal abgesehen von den Metadaten - keine Notwendigkeit besteht sofern das Medium redaktionell nicht verändert wurde. Ich bin mir nicht 100% sicher, aber das setzen der Metadaten in einem Task vor dem Generierungstask würde nicht funktionieren da der Generierungstask (genauer gesagt der ganze Auftrag) mir Revision X läuft, das Medium jedoch nach setzen der Metadaten im Rahmen des Auftrages aber Revision X+n hätte. Aber das lässt sich ja relativ schnell verproben. Falls das nicht geht könnte man natürlich nachdem der Auftrag fertig ist sofort einen neuen Auftrag starten welcher dann nur noch die Medien generiert. Nur was soll passieren wenn das Medium redaktionell verändert aber noch nicht freigegeben wurde? Dann kann das Medium systemseitig ja nicht einfach freigegeben werden und somit kommen auch die gesetzten Metadaten nicht in den Freigabestand und werden somit nicht generiert. Wurde ein betroffenes Medium zwischenzeitlich nicht verändert gäbe es keine Probleme. Denkbar wäre auch das ein Medium gerade gesperrt ist da es redaktionell bearbeitet wird. Wo und wie werden die Metadaten den ausgewertet? Vielleicht könnte man ja auch einen Auftrag schreiben der x-mal am Tag läuft, die Metadaten berechnet und an die GSA übermittelt..
Danke noch einmal für die Antwort.
Ich habe es mittlerweile getestet und in einem Auftrag versucht ein Metadatum zu setzen. Dabei habe ich folgende Exception bekommen:
ERROR 07.04.2014 10:25:17.973 (de.espirit.firstspirit.impl.access.ScriptContextImpl): Fehler:
java.lang.SecurityException: changes not allowed for current connection
at de.espirit.firstspirit.server.scheduler.RestrictedTaskSecurityManager.checkAccess(RestrictedTaskSecurityManager.java:28)
at de.espirit.firstspirit.store.access.AbstractStoreElement.checkAccess(AbstractStoreElement.java:1404)
at de.espirit.firstspirit.store.access.DefaultStoreElement.setMeta(DefaultStoreElement.java:2233)
at de.espirit.firstspirit.store.access.DataUtil.injectMetaFormData(DataUtil.java:73)
at de.espirit.firstspirit.store.access.DefaultStoreElement.setMetaFormData(DefaultStoreElement.java:2150)
Von daher ist es leider nicht möglich in einem Script eines Auftrages Metadaten zu setzen.
Andreas, schau doch mal unter Skript regelmäßig starten. Dort sind alle notwendigen Schritte beschrieben, um aus einem Auftrag heraus Daten schreiben zu können.
Einfach für den Task eine eigene Connection konfigurieren (z.B. zum Testen den Admin User, wir haben in unseren Projekte einen speziellen Benutzer für systemseitige Änderungen an Inhaltsseiten, Medien etc.), dann klappts auch mit dem Speichern der Metadaten 🙂
Edit sagt: Herr Feddersen war schneller 🙂
Danke für die Antworten! Mit der eigenen Connection kann ich nun StoreElemente in einem Auftrag modifizieren. Die eigentliche Frage ob man Metadaten setzen kann ohne dass eine Freigabe benötigt wird, muss aber mit "Nein" beantwortet werden, oder?
Ja 😄