- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Aktualisierung von Datenbank-Daten in Remoteprojekt, aber wie?
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
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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}

