Search the FirstSpirit Knowledge Base
Im Zuge einer Projektlösung wurde ein Workflow entwickelt der Folgendes tut:
Nach einem Package Rollout (Modul Corporate Content) werden durch einen Workflow die Metadaten von den Objekten des Quellprojektes an die entsprechenden Objekte des Zielprojektes kopiert. Dabei ist nun aufgefallen, dass dies nicht sicher für Absätze funktioniert.
Der Workflow ruft durch ein Script eine Java Methode auf, die Folgendes leistet:
Ziel: Nach dem Workflow sind die Metadaten der ausgerollten Objekte (Page und Section) identisch mit den Metadaten die auf den Quellobjekten definiert wurden.
Vorgehen nach dem erfolgreichen Rollout einer neuen Paketversion:
...
// node entspricht einem Knoten, der in dem passenden Inhaltspaket steckt
else if (node instanceof Section) {
final Page masterPage = (Page) storeElementAgent.loadStoreElement(node.getParent().getParent().getUid(), node.getParent().getParent().getUidType(), true);
final String nodeName = node.getName();
final Body body = (Body) node.getParent();
for (final Section sec : masterPage.getBodyByName(body.getName()).getChildren(Section.class)) {
if (nodeName.equals(sec.getName())) {
masterNode = sec;
}
}}
...
Dies verursacht bei Objekten immer dann einen Fehler, wenn die Section im Zielprojekt nicht mehr an der Page verortet ist, an der sie ursprünglich mal gesessen hat. (Weil diese im Zielprojekt z.B. auf eine andere Page verschoben wurde).
Diesen Fehler wollten wir soeben beheben, dabei ist aufgefallen, dass die Section des Zielprojektes ja gar nicht eindeutig im Quellprojekt ausfindig gemacht werden kann. Eine UID gibt es für die Section nicht. Allerdings ist das Modul Corporate Content ja irgendwie in der Lage die Section im Zielprojekt trozt, dass diese verschoben wurde zu aktualisieren. Die Frage ist, wie kann eine eindeutige Zuordnung (Section im Zielprojekt -> Section im Quellprojekt) gewährleistet werden? Bzw. soweit mir bekannt, arbeitet das Modul Corporate Content über ein ID Mapping? Kann auf dieses ID Mapping zugegriffen werden, um sicher an die korrekte Section des Quellprojektes zu gelangen?
FirstSpirit 5.1.4xx
Danke für eure Unterstützung,
Philipp
Hallo Philipp,
seit FS 5.1.504 (und ab FS 5.2.103) gibt es ein neues API mit der man eine eindeutige ID am Quellobjekt ermitteln kann:
de.espirit.firstspirit.access.packagepool.Subscription:
- IdTranslator Subscription.getElementIdTranslator()
- IdTranslator Subscription.getTemplateIdTranslator()
(und mit dem IdTranslator kann man dann:
- Long IdTranslator.translateIdToPublisher(Long subscriberId)
- Long IdTranslatortranslateIdToSubscriber(Long publisherId)
)
Leider ist das noch nicht im offiziellen API-Doc dokumentiert, da wird z.Z. noch dran gearbeitet.
Die interne Ticket-Nummer lautet 176746 falls Du Dich bei unserem TechnicalSupport über den Stand der Dinge informieren möchtest.
Viele Grüße
Marian Zaplatynski
Hallo Philipp,
seit FS 5.1.504 (und ab FS 5.2.103) gibt es ein neues API mit der man eine eindeutige ID am Quellobjekt ermitteln kann:
de.espirit.firstspirit.access.packagepool.Subscription:
- IdTranslator Subscription.getElementIdTranslator()
- IdTranslator Subscription.getTemplateIdTranslator()
(und mit dem IdTranslator kann man dann:
- Long IdTranslator.translateIdToPublisher(Long subscriberId)
- Long IdTranslatortranslateIdToSubscriber(Long publisherId)
)
Leider ist das noch nicht im offiziellen API-Doc dokumentiert, da wird z.Z. noch dran gearbeitet.
Die interne Ticket-Nummer lautet 176746 falls Du Dich bei unserem TechnicalSupport über den Stand der Dinge informieren möchtest.
Viele Grüße
Marian Zaplatynski