Home Forum Nuclos Entwicklung Makros und Regeln Zugriff auf andere Entität ohne Beziehung

Ansicht von 6 Beiträgen - 1 bis 6 (von insgesamt 6)
  • Autor
    Beiträge
  • #2682
    Jan Smiesko
    Teilnehmer

    Hallo,

    könnte mir jemand bitte einen Tipp geben, wie ich Nachstehendes am besten lösen kann:

    Ich möchte beim Speichern eine Regel ausführen, die sich aus einer Config-Entität (Name z.B. „Config“) einen Wert holt (z.B. fortlaufende Nummer), diesen anpasst (erhöht) und den Wert in der aktuellen Enität und in der Config-Entität speichert.

    In der Config-Entität muss zuerst nach der richtigen Zeile (Datensatz) gesucht werden und dann der gewünschte Wert ausgelesen.

    FG
    Jan

    #2684
    Claudia Mangstl
    Teilnehmer

    Hallo Jan,

    um das umzusetzen können Sie folgendermassen vorgehen:

    Passenden Datensatz in Config suchen:

    CollectableComparison cond = org.nuclos.common.SearchConditionUtils.newMDComparison(MasterDataMetaCache.getInstance().getMetaData(„“), „“, ComparisonOperator.EQUAL, „“);

    Entsprechend dazu gibt es noch:
    ComparisonOperator.GREATER_OR_EQUAL, ComparisonOperator.GREATER, ComparisonOperator.LESS_OR_EQUAL, ComparisonOperator.LESS.

    Collection collErgebnisdaten = server.getMasterDataIds(„“, new org.nuclos.server.genericobject.searchcondition.CollectableSearchExpression(cond));

    In der Ergebnismenge erhalten Sie die Id des Config Datensatzes.
    Wert auslesen:
    Object wert = (Object)server.getFieldValue(„“, , „“);
    Wert nach der Erhöhung wieder setzen:
    server.setFieldValue(„“, , „“, );

    Ich hoffe das hilft Ihnen weiter ?

    Viele Grüße,
    Claudia M.

    #2688
    Jan Smiesko
    Teilnehmer

    Hallo Claudia!

    Vielen Dank für die ausführliche Darstellung!

    zur Info:

    Bei Integer-Collection hat der Compiler einen Fehler gebracht.

    ‚Collection collErgebnisdaten = server.getMasterDataIds…‘

    Deshalb habe ich wie verlangt ‚Collection‘ verwendet und später in (Integer) umgewandelt. Das hat dann funktioniert.

    Woran kann das liegen, dass ich explizit umwandeln muss?

    FG
    Jan

    #2692
    Claudia Mangstl
    Teilnehmer

    Hallo Jan,

    kurz und knapp: das ist historisch gewachsen :dry:

    In einer Vorgängerversion sollten die Schlüssel der sogenannten MasterData Objekte nicht auf Integer festgelegt sein, anders als bei GenericObject Objekten. Diese Trennung existiert nun nicht mehr, die Methoden im Ruleinterface basieren aber zum Teil noch auf dem alten Mechanismus.

    Viele Grüße,
    Claudia M.

    #2697
    Jan Smiesko
    Teilnehmer

    Hallo Claudia,

    erlauben Sie mir eine Frage zum Unterschied zwischen GenericObject- und MasterData-Objekten.

    Bei MasterData-Objekte glaube ich zu wissen, dass es sich um die angelegten/konfigurierten Entitäten/Tabellen handelt.

    Was sind grundsätzlich GenericObject Objekte und wann braucht der Programmierer diese zum Unterschied zu MasterData Objkekten?

    Danke für Ihre Bemühungen!

    FG
    Jan

    #2698
    Claudia Mangstl
    Teilnehmer

    MasterData und GenericObject Objekte wurden zusammengelegt. Früher wurden für die GenericObjects keine eigenen Tabellen erzeugt, sondern die Attribute nur über die Metadaten unterschieden. Alle Daten wurden in einer Tabelle gespeichert und über Views entsprechend zu den Modulen gejoint. Diesen Mechanismus gibt es nicht mehr, es gibt nur noch die Variante mit den eigenen Tabellen (also MasterData). Das heute noch erkennbare Unterscheidungsmerkmal ist das Flag für das Statusmodell.
    Statusmodell = ja -> war mal GenericObject
    Statusmodell = nein -> Masterdata

    Das RuleInterface wurde noch nicht überall auf den neuen Mechanismus angepasst, daher gibt es hier ein paar Differenzen. Das o.g. Merkmal können Sie aber prinzipiell für die Auswahl der richtigen Methode heranziehen.

    Bitte zögern Sie nicht, dazu jederzeit Fragen im Forum zu stellen !

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