Home Forum Nuclos Entwicklung Makros und Regeln Datenabgleich aus externer Datenquelle

Ansicht von 4 Beiträgen - 1 bis 4 (von insgesamt 4)
  • Autor
    Beiträge
  • #2807
    Jan Giebels
    Teilnehmer

    Hallo,
    ich hole in einer Geschäftsregel mittels

    Collection dataRow = 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

    #2817
    Claudia Mangstl
    Teilnehmer

    Hallo 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.

    #2820
    Jan Giebels
    Teilnehmer

    Ja, 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

    #2821
    Jan Giebels
    Teilnehmer

    Wie 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 😉

Ansicht von 4 Beiträgen - 1 bis 4 (von insgesamt 4)