Questions & Answers

SOLVED
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

Type a product name