Home Forum Nuclos Entwicklung Makros und Regeln Wie funktioniert groovy? Wie funktioniert groovy?

#6357
Frank Pavlic
Teilnehmer

Hallo Hugo,
ja Groovy ist sehr sensibel in nuclos :unsure: . Nehmen wir deinen Beispielcode, dann geht das nicht, weil „auftrag“ und nicht „Auftrag“ verwendet wird. Ich gehe davon aus,
dass deine Entität-Definitionen vom Namen groß geschrieben sind. Also müsste folgendes funktionieren:
if (context."#{DEF.Auftrag.lief_adresse.id}" == 40100000)
return false
else
return true

Aktiv/Inaktiv – Regeln im Layout funktionieren ganz gut. Berechnungsausdrücke, also Groovy im Entitätenwizard hinterlegt, funktionieren dagegen miserabel. Als Beispiel habe ich im Attribut A Groovy-Code hinterlegt. Dort frage ich ein Attribut B auf Wert > 0.0 ab und abhängig davon setze ich den Wert in A aus B entsprechend. Ganz simpel. Das funktioniert nur genau bei ersten Tastenanschlag im Feld B, dann ist Schicht im Schacht. Gebe ich in B 200 ein, dann übernimmt A genau die 2 , mehr nicht. Da ich aber noch mit 3.9.4 arbeite, ist dafür noch kein JIRA aufgegangen. Und bisher komme ich ohne Groovy als Berechnungsausdruck aus.

return 0.0 ging bei mir auch nicht, allerdings ging folgendes:
def rc = new java.math.BigDecimal(0.0)
return rc.doubleValue()

Generell:
Groovy-Code läuft im Client, d.h. ob Datensatz bereits gespeichert oder nicht, der Code _muss_ ausgeführt werden. D. h. aber auch, dass Du Feldinhalte auch auf null prüfen musst, sonst gibt es NullPointerExceptions.

Um deinen Code von oben noch ein wenig zu modifizieren:

def lid = context."#{DEF.Auftrag.lief_adresse.id}"
if (lid != null && lid == 40100000)
return false
return true

Gruß
Frank