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