Search the FirstSpirit Knowledge Base
FS-Version: 5.2.312
Hallo,
wir versuchen einen neuen Datensatz (z.B. eine News) in Projekt A anzulegen und anschließend sofort in allen Remoteprojekten (Projekt B und C) Seiten daraus zu generieren.
Die Remoteprojekte greifen lesend auf die Datenquelle zu.
Bei geänderten (aber vorhandenen) Datensätzten wird die Aktualiserung im Remoteprojekt im (Remote-)Auftrag erreicht:
{code}
context.getProject().createTag("Generation","needed for external database content", null);
context.setStartTime(new Date());
{code}
Adventskalender und automatisches Umschalten
Bei neuen Datensätzten funktioniert der Ansatz nicht.
Wir haben versucht in diesem Fall (neuer Datensatz) auf dem Remoteprojekt einen "Rebuild search index" voranzustellen, leider ohne Erfolg.
Auch die Abfrage der neuen Entity im Remoteprojekt (mit der FS_ID aus dem Projekt A) liefert null.
Automatische Indizierung externen Datenquellen
{code}
UserService userService = remoteProject.getUserService();
ContentStoreRoot contentStore = userService.getStore(Store.Type.CONTENTSTORE, false);
//context.getElement() = de.espirit.firstspirit.access.store.contentstore.Dataset
String localContentType = context.getElement().getParent().getUid();
long localFsId = context.getElement().getEntity().getKeyValue().getValue(0);
context.logInfo("looking up remote template " + localContentType + "@" + remoteProject.getName());
context.logInfo("looking up remote FS_ID " + localFsId + "@" + remoteProject.getName());
//Suche nach der Remote-Entity
Content2 content = (Content2) contentStore.getStoreElement(localContentType, Content2.UID_TYPE);
Schema schema = content.getSchema();
Session session = schema.getSession(false);
Entity entity = session.find(context.getElement().getEntity().getEntityType().getName(), localFsId);
if(entity == null){
context.logWarning("entity " + localFsId + "@" + remoteProject.getName() + " does not exist");
}
Dataset dataset = content.getDataset(entity);
{code}
Gibt es eine Möglichkeit neue Datensätze in Remoteprojekten lesend zur Verfügung zu stellen?
Mit freundlichen Grüßen
Peter Grzeschik
--
peter.grzeschik@publicispixelpark.de, Tel +49.521.98780-132
Hallo,
mit der Hilfe des Helpdesks ist die Lösung nun folgende:
Im Remoteprojekt wird auf dem gewünschten Schema der Cache zurückgesetzt (schema.resetReadTimestamp();) und die Daten dann neu gezogen. Der Rest des Codes ist unverändert.
{code}
...
Schema schema = content.getSchema();
//Wichtig! Setzt die Caches zurück
schema.resetReadTimestamp();
Session session = schema.getSession(false);
...
{code}
Ein Versuch über eine neue Connection liefert das gleiche Ergebnis, die Entity ist im Remoteprojekt noch nicht bekannt.
Mit freundlichen Grüßen
Peter Grzeschik
--
peter.grzeschik@publicispixelpark.de, Tel +49.521.98780-132
Hallo,
mit der Hilfe des Helpdesks ist die Lösung nun folgende:
Im Remoteprojekt wird auf dem gewünschten Schema der Cache zurückgesetzt (schema.resetReadTimestamp();) und die Daten dann neu gezogen. Der Rest des Codes ist unverändert.
{code}
...
Schema schema = content.getSchema();
//Wichtig! Setzt die Caches zurück
schema.resetReadTimestamp();
Session session = schema.getSession(false);
...
{code}