Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Info

Achtung: Der Ausgangskontext für "Neu aktiv (dynamisch)" ist immer das übergeordnete BO der Subform, der Ausgangskontext für "Bearbeiten aktiv (dynamisch)", "Löschen aktiv (dynamisch)" und "Klonen aktiv (dynamisch)" hingegen ist immer das BO der Subform selbst.

Will man sich also beispielsweise in einem Subform für Auftragspositionen den Status des Auftrages holen, muss man dies für "Neu" mittels

context."#{NAME.Auftrag.nuclosStateNumber}" 

tun, für "Bearbeiten", "Löschen" und "Klonen hingegen muss man erst einen Kontext nach oben gehen mittels

context."#{NAME.Auftragsposition.auftrag.context}"."#{NAME.Auftrag.nuclosStateNumber}".

 

Beispiel 1

Bestimmte Felder sollen abhängig des ausgewählten Wertes (componentType) aktiviert oder deaktiviert sein.

Codeblock
if ("Artikel".equals(context."#{DIB.PackageComponent.componentType}")) {
    if (context.field == "#{DIB.PackageComponent.textNumber}")  
	   return false  
}
if ("Text".equals(context."#{DIB.PackageComponent.componentType}")) {
	if (context.field == "#{DIB.PackageComponent.article}")  
	   return false   
	if (context.field == "#{DIB.PackageComponent.price}")  
	   return false  
   	if (context.field == "#{DIB.PackageComponent.amount}")  
	   return false  
	if (context.field == "#{DIB.PackageComponent.weight}")  
	   return false  
 
}
return true

Beispiel 2

Feld invoiceamountinhours soll abhängig des ausgewählten Wertes (chargedashours) aktiviert oder deaktiviert sein. Vorsicht: Da das BO ein Leerzeichen hat, muss es auch im Groovy-Code so verwendet werden ("External services").

Codeblock
if (context."#{D3R1.External services.chargedashours}" == false) {
   if (context.field == "#{D3R1.External services.invoiceamountinhours}") {
       return false
   }
 }
 return true




Funktionen über Bibliotheksregeln

Sie können in Bibliotheksregeln Funktionen definieren, die in dynamischen Eigenschaften und berechneten Werten verwendet werden können. Eine Bibliotheksregel muss hierfür mit der Annotation org.springframework.stereotype.Component gekennzeichnet werden, damit sie von der Laufzeitumgebung erkannt wird (Hinweis: es wird nur eine Instanz der Klasse erzeugt - beachten Sie dies beim Einsatz von Klassenvariablen). Falls Sie eine Methode dieser Klasse als Funktion verwenden möchten, kennzeichnen Sie diese mit der Annotation org.nuclos.api.annotation.Function und vergeben Sie einen global eindeutigen Namen. Diesen Namen verwenden Sie später, um die Funktion mit Hilfe über context."#FUNCTION{<Funktionsname>}" aufzurufen. Bei der Implementierung von Funktionen ist darauf zu achten, dass Parameter- und Rückgabe-Typen übereinstimmen. Ggf. notwendige Umwandlungen müssen manuell vorgenommen werden. Ausserdem muss beachtet werden, dass der Namensraum des Packages im Nuclet Mangagement und der Packagename der Componente (Bibliotheksregel) gleich sind.

Beispiel

In folgendem Beispiel wird eine automatische Vergabe von Bestellnummern in Abhängigkeit des ausgewählten Kunden implementiert.

...