Home Forum Nuclos Entwicklung Makros und Regeln Fehler in Regeln nach Update

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

    Hallo,

    seit dem Update von 2.5.1-RC9 auf 2.5.1-final bekomme ich in fast allen Regeln Fehlermeldungen. Damit lässt sich hier fast nichts mehr speichern – das ist wirklich sehr ärgerlich, zumal nirgends eine Doku zu finden ist, was in welcher Version verändert wurde (ChangeLog).

    Wie kann ich solche Fehler beheben?

    cannot find symbol

    symbol : constructor CollectableGenericObjectEntityField(org.nuclos.server.attribute.valueobject.AttributeCVO)
    location: class

    org.nuclos.common.genericobject.CollectableGenericObjectEntityField
    CollectableEntityField entityField = new org.nuclos.common.genericobject.CollectableGenericObjectEntityField(AttributeCache.getInstance().getAttribute("address", "addressformat"));

    Ziel der Regel ist es, alle Datensätze (Adressen) zu finden, die das aktuelle Objekt (Adressformat) referenzieren. In allen gefundenen Adressen soll dann ein Text-Feld neu berechnet werden.

    Die obige Codezeile soll das AdressFormat-ID-Feld (Referenz) in der Entität Adresse ermitteln. Dieses Feld wird dann in einer „CollectableComparison“-Condition verwendet um dann mittels server.getGenericObjectIds alle Adressen zu finden…

    Hier nochmal der bis zum Update funktionierende Code aus der Regel beim Speichern eines Adressformates:

    public void rule(RuleInterface server) throws NuclosBusinessRuleException
    {
    Integer objectId = server.getObjectId();

    if (server.hasFieldChanged("addressformat", "format") && objectId != null)
    {
    String format = (String)server.getFieldValue("addressformat", "format");

    // load all addresses with this address format
    CollectableEntityField entityField = new org.nuclos.common.genericobject.CollectableGenericObjectEntityField(AttributeCache.getInstance().getAttribute("address", "addressformat"));
    CollectableComparison condition = new CollectableComparison(entityField, ComparisonOperator.EQUAL, new CollectableValueIdField(objectId, ""));
    Collection addresses = server.getGenericObjectIds("address", condition);

    for (Iterator it = addresses.iterator(); it.hasNext(); )
    {
    Integer addressId = it.next();
    ...
    }
    }

    Danke und viele Grüße,
    Matthias

    #2526
    Alpha Alpha
    Teilnehmer

    Hallo,

    durch Vereinheitlichungen am Metadatenmodell musste der Konstruktor für CollectableGenericObjectEntityField angepasst werden. Seit Version 2.5.1-final erwartet dieser einen zweiten Parameter (vom Typ EntityFieldMetaDataVO).

    Sie erhalten diesen zweiten Parameter von der MetaDataServerProvider-Instanz via getEntityField. In ihrem Fall also MetaDataServerProvider.getInstance().getEntityField(„address“,“addressformat“):


    public void rule(RuleInterface server) throws NuclosBusinessRuleException {
    Integer objectId = server.getObjectId();

    if(server.hasFieldChanged("addressformat", "format") && objectId != null) {
    String format = (String)server.getFieldValue("addressformat", "format");

    // load all addresses with this address format
    CollectableEntityField entityField = new org.nuclos.common.genericobject.CollectableGenericObjectEntityField(
    AttributeCache.getInstance().getAttribute("address","addressformat"),
    MetaDataServerProvider.getInstance().getEntityField("address", "addressformat"));
    CollectableComparison condition = new CollectableComparison(
    entityField,
    ComparisonOperator.EQUAL,
    new CollectableValueIdField(objectId, " "));
    Collection addresses = server.getGenericObjectIds("address",condition);

    for(Iterator it = addresses.iterator(); it.hasNext();) {
    Integer addressId = it.next();
    // ...
    }
    }
    }

    Ich hoffe, diese Antwort hilft Ihnen weiter.

    Viele Grüße,
    alpha

    #2528
    Matthias Haake
    Teilnehmer

    Vielen Dank für die Hilfe! Das hilft sehr weiter und ich werde es testen, so bald die 2.5.1-final wieder im Download verfügbar ist.

    Viele Grüße,
    Matthias

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