- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Datenquelle per Skript aktualisieren?
Hallo zusammen,
ich importiere Daten aus XML-Dateien in eine Datenquelle, das funktioniert auch prima.
Allerdings bekomme ich die Datenquelle nach erfolgreichem Import nicht aktualisiert, ich mรถchte quasi das manuelle F5 drรผcken simulieren.
Am Ende des Skripts lasse ich mir die Anzahl der Datensรคtze ausgeben, dort bekomme ich immer 0 zurรผck.
Wenn ich die Datenquelle manuell per F5 aktualisiere und das Skript anschlieรend nochmal laufen lasse, dann bekomme ich wie erwartet 292 ausgegeben.
//! Beanshell
import javax.swing.JOptionPane;
import de.espirit.firstspirit.access.store.Store;
import de.espirit.firstspirit.access.store.IDProvider;
// Methods in Beanshell Scripts
showInfo(String message) {
JOptionPane.showMessageDialog(null, message, "", JOptionPane.INFORMATION_MESSAGE);
}
// Storelement holen (e ist nur auf Beanshell verfรผgbar)
project = context.getProject();
lang = project.getMasterLanguage();
us = project.getUserService();
store = us.getStore(Store.Type.CONTENTSTORE, true, true);
db = store.getStoreElement("datenquelle", IDProvider.UidType.CONTENTSTORE);
dataList = db.getData(lang);
showInfo(dataList.size()+"");
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Eventuell hilft hier schon ein db.refresh()?
Stefan.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Anstelle von:
store = us.getStore(Store.Type.CONTENTSTORE, true, true);
db = store.getStoreElement("datenquelle", IDProvider.UidType.CONTENTSTORE);
hatte ich auch schon folgendes ausprobiert, leider ohne Erfolg:
store = us.getStore(Store.Type.CONTENTSTORE, false);
db = store.getStoreElement("datenquelle", IDProvider.UidType.CONTENTSTORE);
db.refresh();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Herr Wehe,
von welcher Stelle aus rufen Sie die Codezeilen auf? Mit welcher FirstSpirit Version arbeiten Sie aktuell?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich habe die Codezeilen in einem Skript stehen, das ich รผber das Menรผ aufrufe.
Wir benutzen firstSpirit 4.2.454.47473
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
bisher verwende ich bei Datenquellen immer den TEMPLATESTORE.
Event. hilft es auch vor der Abfrage noch ein
context.setStartTime(new Date());
zu setzen. (Das hat mal bei der Auftragssausfรผhrung geholfen).
Grรผรe Andreas
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Leider ist es mir auch รผber den TEMPLATESTORE nicht gelungen die Datenquelle zu aktualisieren.
Hat noch jemand einen Tipp fรผr mich?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Es gibt keinen API-Weg um die Gui (Datenquelle) zu aktualisieren. Ich sehe die Notwendigkeit aber auch nicht. Datenimporte sollten doch sinnvollerweise ohnehin auf dem Server (Auftragsverwaltung) durchgefรผhrt werden und nicht aus dem JavaClient heraus. Ein nach dem Import neugestarter JavaClient hat dann auch alle Daten die importiert wurden. JavaClients die wรคhrend des Importes offen sind, bekommen die Daten erst nach einem manuellen Refresh, sofern sie die entsprechenden Sichten (Datenquellen) im Client vorher schon angezeigt haben. Das ist aber doch auch korrekt.
Wenn es nur um die Ausgabe der Anzahl des Content2 (das ist nicht das Gui-Objekt) geht (also in einem Client, der veraltet ist), dann sollte es reichen auf dem Schema ein #resetReadTimestamp() aufzurufen und ein #refresh auf dem Content2.
Content2 content;
final Schema schema = content.getSchema();
schema.resetReadTimestamp();
content.refresh();
context.logInfo("entity count=" + content.getData().size());
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich weiร, dass dieser Weg vermutlich nicht der Beste ist, aber folgendes Szenario haben wir:
- auf einen Server (nicht der firstSpirit Server) werden XML-Dateien hochgeladen
- diese werden per PHP-Skript in die externe Datenbank importiert, die an firstSpirit angedockt ist (Datenquellen)
- dann soll firstSpirit bestimmte Detailseiten neu generieren und publizieren, da sich diese durch den XML-Import geรคndert haben kรถnnten
Der letzte Schritt funktioniert aber nicht, da die Datenquelle nach dem Import nicht aktualisiert wird. Von daher werden keine neuen Detailseiten generiert und die รnderungen erscheinen nicht auf der Webseite.
Wenn ich die Datenquelle im Java-Client manuell aktualisiere und danach die Generierung/Publizierung starte funktioniert alles.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Bitte mal ein "schema.rollback()" probieren.

