Jan_Wehe
I'm new here

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()+"");

10 Replies

Auf dem Schema gibt es keine rollback-Methode. Aber ich habe das als Denkansatz genutzt und jetzt scheint es zu funktionieren. Wenn ich die XML-Dateien importiere und anschließend das Skript ablaufen lasse, dann wird mir nicht mehr 0, sondern die korrekte Anzahl ausgegeben. 🙂 Der Praxistext folgt dann demnächst.

//! Beanshell

import de.espirit.firstspirit.access.store.Store;

import de.espirit.firstspirit.access.store.IDProvider;

// helper objects

project = context.getProject();

lang = project.getMasterLanguage();

us = project.getUserService();

// get datasource store element

store = us.getStore(Store.Type.CONTENTSTORE, false);

db = store.getStoreElement("datasource", IDProvider.UidType.CONTENTSTORE);

// refresh datasource

schema = db.getSchema();

schema.resetReadTimestamp();

schema.getSession().rollback();

db.refresh();

0 Kudos