peterg
I'm new here

Aktualisierung von Datenbank-Daten in Remoteprojekt, aber wie?

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions

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}

View solution in original post

0 Kudos
2 Replies
peterg
I'm new here

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

0 Kudos

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}

0 Kudos