Questions & Answers

JonasE
I'm new here

Externe Datenquellen: Synchronisierung durch Aktualisierung in SiteArchitect

Hallo zusammen,

wir haben zwei verschiedene Projekte fรผr Internet bzw. Intranet. Das Internet-Projekt enthรคlt eine Datenquelle, in der Kontakte gepflegt werden. Das Intranet-Projekt hat ausschlieรŸlich einen lesenden Zugriff auf diese Kontakte. Um in der Intranet-Seite ร„nderungen der Kontakte zu sehen, war bisher das Vorgehen:

1. Sicherstellen, dass aktuelle Inhalte verwendet werden (https://community.e-spirit.com/people/hoebbel/blog/2010/12/03/adventskalender-und-automatisches-umsc...). Dazu verwenden wir den Zweizeiler

context.getProject().createTag("Generation","needed for external database content",null);

context.setStartTime(new Date());

2. Damit wird dann eine Generierung angestoรŸen

3. Der Suchindex wird erneuert

Heute ist aufgefallen, dass dieser Weg nicht mehr zu funktionieren scheint. Eine ร„nderung eines Datensatzes im "Master"-Projekt Internet, gefolgt von den oben genannten drei Schritten, fรผhrt nicht dazu, dass diese ร„nderung im ContentCreator des Intranet-Projekts sichtbar ist.

Kurze Nebeninfo zur Infrastruktur: Das Preview-System und der Content-Creator sind ausgelagert und laufen nicht auf dem gleichen Server wie der SiteArchitect (vielleicht spielt das eine Rolle?)

Nun das Kuriosum:

ร–ffnet man nach der ร„nderung eines Datensatzes im Internet-Projekt das Intranet-Projekt im SiteArchitect, so ist die ร„nderung bei initialer Anzeige des Remote-Datensatzes nicht sichtbar. Eine simple Aktualisierung (F5) รคndert das. Der Datensatz wird sichtbar (im SiteArchitect) und ist ebenfalls im ContentCreator zu sehen. Die drei oben genannten Schritte fallen sรคmtlich weg.

Wodurch wird dieses Verhalten verursacht und wie kann man eine Aktualisierung des Remote-Datensatzes ohne den Umweg รผber den SiteArchitect erreichen?

Viele GrรผรŸe

Jonas

0 Kudos
4 Replies
pavone
I'm new here

Hallo Jonas,

sowohl StoreElement als auch Entity besitzen eine refresh() Methode. Ich habe es nicht รผberprรผft, aber ich denke, dass du damit die Aktualisierung im Intranet-Projekt triggern kรถnntest. Ggf. lรคsst sich so ein Aufruf ja sinnvoll irgendwo einbauen.

Viele GrรผรŸe

Tim

0 Kudos

Hallo Tim,

danke fรผr die Antwort. Leider hilft kein Refresh-Aufruf. Weder auf dem contentstore-Objekt, der spezifischen Datenquelle (Tabelle), den Datasets, noch auf der Entity. Das einzige, was bisher die Synchronisierung ausfรผhrt, ist ein Klick auf den Refresh-Button im SiteArchitect. Kann man diesen Klick irgendwie ohne den SiteArchitect in einem Script ausfรผhren?

Viele GrรผรŸe

Jonas

0 Kudos

Hi Jonas,

der Trick den du beschreibst, der ist nur fรผr eine normale Generierung relevant und sollte dafรผr auch funktionieren - hier hat sich nichts geรคndert.

Fรผr die Vorschau allerdings, hat das รผberhaupt keine Auswirkung. Was in dieser Situation problematisch ist, ist dass externe Datenbanken auf dem FirstSpirit-Server gecacht werden. Das heiรŸt ร„nderungen an der Datenbank werden erst sichtbar, wenn der Cache invalidiert wird. Dies wird ausgelรถst, wenn du im SiteArchitect auf den Refresh-Button drรผckst.

Wenn du das ganze รผber die API ausfรผhren willst, gibt es seit der FirstSpirit-Version 5.1.304 funktionierend eine Methode auf dem Schema, mit der du den Refresh auslรถsen kannst:

 

storeElement = context.getStoreElement(); 

schema = storeElement.getSchema(); 

schema.resetReadTimestamp();

Hilft dir das?

GrรผรŸe,

Hannes

0 Kudos

Hallo Hannes,

danke fรผr den Vorschlag. Das ganze Verhalten war scheinbar ein Bug. In unser Integrationsumgebung ist er wie beschrieben aufgetreten, auf anderen Systemen ist er nicht vorgekommen. Der zuvor verwendete Weg, um die Aktualisierung zu erreichen, ist also weiterhin ausreichend.

Das Thema kann geschlossen werden.

GruรŸ

Jonas

0 Kudos

Type a product name