Ansicht von 8 Beiträgen - 1 bis 8 (von insgesamt 8)
  • Autor
    Beiträge
  • #6023
    Matthias Haake
    Teilnehmer

    Hallo Nuclos-Team.

    Im Logfile sind seit dem Update ein paar „verdächtige“ Einträge:


    [org.nuclos.common.dal.vo.AbstractDalVOWithFields] - Trying to read getField(attributeId) instead of getFieldId(attribute) : This is a sever error and will not work in future versions of Nuclos

    Wie soll man sich als Entwickler verhalten? Woher bekommen wir nähere Informationen? Im Wiki steht (noch) nichts. In einigen Posts liest man immer schon die Worte „Neue API“…

    Danke und viele Grüße,
    Matthias

    #6024
    Thomas Pasch
    Teilnehmer

    Hintergrund: MasterDataVO ist ab Nuclos 3.8 nur noch ein Wrapper für EntityObjectVO.

    Leider gibt es offensichtlich noch einige Stellen (vorallen in Regeln), die getField( + „Id“) benutzten um die (foreign) ID (type Integer) zu erhalten. Richtig wäre jedoch (auch mit MasterDataVO) getFieldId().

    Im EntityObjectVO wird hier schärfer getrennt. Damit der erste Fall überhaupt noch etwa ‚vernünftiges‘ zurück liefert, gibt es im MasterDataVO einen entsprechenden Hack.

    Da wir MasterDataVO durch EntityObjectVO ersetzen werden, müssen diese Stellen beseitigt werden. Deshalb diese deutliche Sprache im Log. Das beste Vorgehen wäre also: Breakpoint auf die Log Message Stelle, und dann die Schuldigen finden und eliminieren.

    An dieser Stelle kommt die neue Regel API ins Spiel: Diese wird die jetzigen (‚alten‘) Regeln komplett ersetzten (z.B. das RuleInterface, MasterDataVO, usw).

    Wenn das Problem also aus einer Regel stammt, bieten sich 2 Möglichkeiten an: Wenn man in späteren Nuclos Versionen die ‚alte‘ Regel API benutzen möchte, dann muss man diese Stellen eliminieren. Wenn man dagegen vorhat, alles auf die neue Regel API umzustellen, dann kann man die Meldung z.Z. einfach ignorieren.

    #6025
    Frank Pavlic
    Teilnehmer

    Heisst das, dass die neue Regel-API mit 3.8 Einzug erhalten hat? Wie und wo ist diese zu finden? Falls es noch keine Dokumentation gibt, wie heisst die entsprechende Klasse?

    Im Voraus besten Dank für die Infos.

    Gruß

    Frank

    #6026
    Ramin Goettlich
    Teilnehmer

    -> 3.9

    #6027
    Matthias Haake
    Teilnehmer

    Interpretiere ich das richtig?

    • Update nach 3.9.x
    • Im Quellcode alle Vorkommen von MasterDataVO mit EntityObjectVO austauschen
    • Ggf. Methoden-Calls anpassen (sollte ja dank offenem Quellcode der EntityObjectVO, IEntityObjectVO usw. machbar sein)

    Oder was ist das empfohlene Vorgehen, wenn ich vorhabe alles auf die neue API umzuschreiben?

    Hier wäre dann ein Update im Wiki sehr willkommen. So einfache Beispiel aus dem „Alltag“ für’s Laden, Speichern, Sortieren und Löschen von Datensätzen, Status ändern, Arbeitsschritt anstoßen usw.

    #6028
    Ramin Goettlich
    Teilnehmer

    Hallo Matthias,

    nein.

    Ein wesentlicher Aspekt der neuen Nuclos API wird sein, dass der Zugriff auf interne Nuclos-Strukturen verwehrt sein wird. Der Zugriff darf nur noch über die Nuclos API erfolgen, denn nur für diese können wir die Aufwärtskompatibilität garantieren. In internen Nuclos-Strukturen wird es immer wieder Änderungen geben, die existierende Regeln stören (siehe Update auf 3.8).

    Also keine MasterDataVOs, keine EntityObjectVOs, etc.

    Stattdessen wird es viel komfortablere Businessobjekte geben, die durch den Entitätenwizard erzeugt werden. Ein Beispiel für ein zukünftiges Iterieren durch eine Menge von Businessobjekten:


    for (BusinessObject Auftrag a : QueryProvider.create(Auftrag.class).where(Auftrag.Beispielfeld1.eq(true)) {
    a.setBeispielfeld2("Wert");
    }

    Es wird eine Wiki-Dokumentation geben und JavaDocs für die API selbst.
    Achja: Die aktuelle 3.9-Beta enthält das alles noch nicht, also bitte noch gedulden.

    Alte Regeln werden bis auf Weiteres unterstützt – aber sind eben nicht garantiert aufwärtskompatibel.

    Grüsse,
    nuclosian

    #6029
    Matthias Haake
    Teilnehmer

    Das sieht ja ein bisschen nach Lambda-Ausdrücken (ähnlich wie in LINQ) aus 🙂 Ich bin gespannt.

    Danke für die Informationen und Grüße,
    Matthias

    #6030
    Frank Pavlic
    Teilnehmer

    Danke für die Aufklärung.

    Gruß

    Frank

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