Home › Forum › Nuclos Entwicklung › Makros und Regeln › Datenabgleich aus externer Datenquelle
- Dieses Thema hat 3 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 12 Jahre, 6 Monaten von
Jan Giebels.
-
AutorBeiträge
-
7 Dezember 2010 um 00:54 Uhr #2807
Jan Giebels
TeilnehmerHallo,
ich hole in einer Geschäftsregel mittels
CollectiondataRow = server.executeSelectOnJCADatasource(mysqlDS, sSQL);
Daten ab und möchte diese in eine Entität ohne Statusmodell übertragen.Im Grunde würde ich das lieber automatisiert über eine Fristenregel veranlassen, allerdings stehe ich da gerade etwas auf dem Schlauch, wie es am besten zu realisieren währe.
Könnt ihr mir dazu Code-Beispiele geben?
Danke und Gruß
Jan
7 Dezember 2010 um 19:48 Uhr #2817Claudia Mangstl
TeilnehmerHallo Jan,
ich gehe mal davon aus, dass es die Datensätze noch nicht gibt und Sie diese neu erzeugen möchten ?
Ich kenne die genauen Anforderungen nicht, aber wenn Sie diese Daten ohne Bezug zu einem bestimmten Objekt anlegen möchten, definieren Sie im ersten Teil der Fristenregel einen dummy, nur damit der zweite Teil aufgerufen wird:
public Collection getIntIds(RuleInterface server) {
Collection dummy = new ArrayList();
dummy.add(1);
return dummy;}
Hier findet nun das eigentliche Einfügen statt.
public void process(RuleInterface server, Integer iId) throws NuclosBusinessRuleException {
Collection dataRow = server.executeSelectOnJCADatasource (mysqlDS, sSQL);
// iterieren Sie über diese Collection
for (MasterDataVO singleData : dataRow) {
// jeden einzelnen Datensatz anlegen:
Map mpFields = new HashMap();
mpFields.put("ziel_feld1", singleData.getField("quelle_feld1"));
mpFields.put("ziel_feld2", singleData.getField("quelle_feld2"));
...
MasterDataVO mdvo_neu = new MasterDataVO(null, null, null, null, null, null, mpFields);
try{
org.nuclos.common2.ServiceLocator.getInstance().getFacade(org.nuclos.server.masterdata.ejb3.MasterDataFacadeLocal.class).create("Zielentität", mdvo_neu, null);
} catch (Exception e) {
e.printStackTrace();
}
}
Hilft das weiter ?
Viele Grüße,
Claudia M.8 Dezember 2010 um 12:28 Uhr #2820Jan Giebels
TeilnehmerJa, herzlichsten Dank! Das hilft massiv weiter. Leider ist mir dabei wieder ein Bug untergekommen, der scheinbar bei Entitäten mit Umlauten auftritt.
Habe das Problem im Bugtracker schon eingekippt. Nuclos kann die Metadaten der Entität mit Umlaut scheinbar nicht lesen.
In einem anderen Thread habe ich schon mal gefragt, aber bisher keine Lösung gefunden, wie ich denn Daten aus Nuclos heraus an diese fremde DS senden kann (Update, Insert, Delete)?
Offen ist bei uns auch noch, wie wir bestehende Daten nach einem initialen Import aus der fremden DS in Nuclos updaten können? Wir benötigen quasi eine 1:1 Spiegelung von bestimmten Tabellen, die über eine Fristenregel aktuell gehalten wird, und wenn sich in Nuclos dort Daten ändern, mittels einer Geschäftsregel ein Update auf die fremde DS fährt.
Unterstützung dabei ist sehr willkommen, da die Doku der API doch recht dürftig ist und sehr viel Try & Error erfordert, was enorm viel Zeit verschlingt.
Danke und Gruss
Jan
8 Dezember 2010 um 14:40 Uhr #2821Jan Giebels
TeilnehmerWie ich hier entnehmen konnte gibt es leider bisher keine Möglichkeit Insert, Update und Delete zu nutzen. Danke für die Aufnahme als Feature Request, Claudia.
Also bleibt vorerst nur die Möglichkeit Tabellen als „read-only“ aus Nuclos Sicht zu übernehmen.
Wie gehe ich am geschicktesten vor, um diese Daten, die sich ja auf MySQL Seite ändern können, via Fristenregel zu „synchronisieren“?
Es müsste ja dann bei jedem Datensatz auf Existenz geprüft werden und wenn vorhanden, ein Update, bzw. bei nicht Vorhandensein ein create wie oben beschrieben durchgeführt werden.
Danke und Gruss
Jan … der gerne ge-duzt wird 😉
-
AutorBeiträge