Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

Version 1 Nächste Version anzeigen »

Allgemein

Für die Regelprogrammierung müssen Informationen und Daten zu den Entitäten, den Statusmodellen und anderen Nuclos-Einheiten zur Verfügung stehen. Damit der Zugriff und die Verwendung möglichst einfach und fehlerfrei bleibt, werden diese Daten objektiviert als Java-Klassen bereit gestellt. Diese Java-Klassen können dann aus den Regeln heraus aufgerufen und benutzt werden.

Folgende Typen von unterstützenden Klassen gibt es:

TypBeschreibungSuffix
BusinessObjekt

Ein BusinessObjekt repräsentiert eine NuclosEntität wie z.B. Auftrag oder Kunde. Die dazugehörenden Felder werden aus den Meta-Informatioen glesen und als Attribute in die Klasse geschrieben. Ja nach Art des Attributts und der Zugriffsrechte werden setter und getter-MEthoden zum Setzen und Auslesen von Werten zur Verfügung gestellt.

Wird mittels EntityWizzard eine neue Entität angelegt oder eine bestehende verändert, werden mit erfolgreichem Abschluss des Speichervorgangs die Ändergeun im dazugehörenden BusinessObjekt vorgenommen und im Classloader angelegt. Damit stehen die Änderungen sofort zur Verfügung.

Allgemeine Konventionen:

  • Der Name des BusinessObjekts entspricht dem java-tauglich überarbeiteten Namen der Entität. So sind weder Sonderzeichen noch Leerzeichen erlaubt.
  • Jedes BusinessObjekt besitzt weiterhin eine Package-Angabe. Wurde eine Entität keinem Nuclet zugewiesen wird als Default das Package "org.nuclet.businessentity" verwenden, ansonsten der Pfad des Nuclets, z.B: org.meineFirma.meinNuclet
  • Die Felder der Entität können mit gettern und setter befüllt, bzw. ausgelesen werden. Sondernzeichen, Leerzeichen oder auch Zahlen zu Beginn des Namens sind nicht erlaubt und werden bei der Generierung der Klassen automatisch korrigiert, weshalb es zu Abweichungen zwischen den Namen der Methoden/Klassen und den Meta-Informationen aus dem Entitäten-Wizzard kommen kann. Beispiel: setBestelldatum(Date dat)
  • Für die Abfrage der Dependents stehen ebenfalls Methoden zur Verfügung, die - wenn gewünscht - mit Flags erweitert werden können und eine Einschränkung deren Status vornehmen zu können. Beispiel: public List<Bestellposition> getBestellposition(Flag... flags). Mögliche Flags sind: NONE, UPDATE, INSERT oder DELETE. Damit kann festgelegt werden, ob nur als gelöscht markierte Dependents zurückgegeben werden sollen oder z.B. solche, die auf der Oberfläche neu hinzugefügt wurden,.
  • Das BusinessObjekt umfasst ebenfalls Konstanten, welche für die Erstellung von Abfragen im QueryProvider verwendet werden können.
public class Adresse extends AbstractBusinessObject implements Modifiable {

public static final Attribute<java.lang.Boolean> Standard = new Attribute<java.lang.Boolean>("Standard", "org.nuclet.basistemplate", "Adresse", new Long(40005905), "standard", new Long(40006275), java.lang.Boolean.class );

public static final StringAttribute<java.lang.String> Postfach = new StringAttribute<java.lang.String>("Postfach", "org.nuclet.basistemplate", "Adresse", new Long(40005905), "postfach", new Long(40006271), java.lang.String.class );

public java.lang.Boolean getStandard()
{
return getField("standard", java.lang.Boolean.class); 
}
public void setStandard(java.lang.Boolean pStandard)
{
 setField("standard", pStandard); 
}
public java.lang.String getPostfach()
{
return getField("postfach", java.lang.String.class); 
}
public void setPostfach(java.lang.String pPostfach)
{
 setField("postfach", pPostfach); 
}
}

--
Statusmodell-Klasse

Eine Statusmodell-Klasse ist eine Java-Klasse, die fachlich einem in Nuclos erstellen Statusmodell entspricht. Diese werden in der Regelprogrammierung verwendet, um eine einfache und sichere Gestaltung von beispielsweise Statuswechseln zu gewährleisten.

Allgemeine Konventionen:

  • Der Name der Statusmodell-Klasse entspricht dem java-tauglich überarbeiteten Namen des Statusmodells. So sind weder Sonderzeichen noch Leerzeichen erlaubt.
  • Jede Statusmodell-Klasse besitzt weiterhin eine Package-Angabe. Wurde ein Arbeitsschritt keinem Nuclet zugewiesen wird als Default das Package "org.nuclet.statemodel" verwenden, ansonsten der Pfad des Nuclets, z.B: org.meineFirma.meinNuclet
  • Die Statusmodell-Klasse umfasst alle ihr zugewiesenen Status als statische Konstanten mit folgender Namenskonvention: "State_[Statusnumeral]. Beipsiel: AuftragSM.State_10  
public class AuftragSM{
public static State State_10 = 
    new StateImpl(IdUtils.toLongId(40006496), "Entwurf", "Geplant", 10, IdUtils.toLongId(40006477));
public static State State_90 = 
    new StateImpl(IdUtils.toLongId(40006497), "Abgeschlossen", "Abgeschlossen", 90, IdUtils.toLongId(40006477));
public static State State_50 = 
    new StateImpl(IdUtils.toLongId(40006498), "Offen", "Offen", 50, IdUtils.toLongId(40006477));
public static State State_99 = 
    new StateImpl(IdUtils.toLongId(40006499), "Storniert", "Storniert", 99, IdUtils.toLongId(40006477));
}

Die hinterlegten Status können für manuelle Statuswechsel im StatemodelProvider verwendet werden.

SM
Arbeitsschritt-Klasse

In Nuclos können Arbeitsschritte erstellt werden. Um innerhalb von Regeln solche Arbeitsxchritte auch manuell ausführen zu können, werden nach erflogreichen Abschluss des Speicvhernvorgang einesArbeitschrittes sogenanten Arbeitsschritt-Klassen ider aucuh Generaotr.-Klassen erstellt. Diese können dann über den GenerationProvider gestartet werden. eine Arbeitsschritt-Klasse ist mittels Generics typsicher aufgebaut und legt Quell- und Zielentitäten (als BusinessObjekte) fest. Ein beipsielhasfter Aufbau könnte wir folgt aussehen:

public class ErstelleRechnungAusAuftragGEN implements Generation<Auftrag, Rechnung> { 
	public Class<Auftrag> getSourceModule() {
 		return Auftrag.class;
	}
	public Class<Rechnung> getTargetModule() {
		return Rechnung.class;
	}
}

Die Handhabung des GenerationProviders wird hier erklärt.

Allgemeine Konventionen:

  • Der Name der Arbeitsschritt-Klasse entspricht dem java-tauglich überarbeiteten Namen des Arbeitsschritt. So sind weder Sonderzeichen noch Leerzeichen erlaubt.
  • Jede Arbeitsschritt-Klasse besitzt weiterhin eine Package-Angabe. Wurde ein Arbeitsschritt keinem Nuclet zugewiesen wird als Default das Package "org.nuclet.generation" verwenden, ansonsten der Pfad des Nuclets, z.B: org.meineFirma.meinNuclet
  • Als Quell- und Zielklassen werden die BusinessObjekte der Entitäten verwendet, die im Arbeitsschritt angegeben wurden.
GEN

Report-Klassen

 Report-Klassen stellen objektivierte Datenquellen aus "Report und Formular" dar. Werden in Nuclos Quellen angelegt, wird eine entsprechende Report-Klasse erstellt. Diese kann dann in der Regelprogrammierung als Quelle verwendet und über den DatasourceService aufgerufen werden.

Allgemeine Konventionen:

  • Der Name der Report-Klasse entspricht dem java-tauglich überarbeiteten Namen des Reports. So sind weder Sonderzeichen noch Leerzeichen erlaubt.
  • Jede Report-Klasse besitzt weiterhin eine Package-Angabe. Wurde ein Arbeitsschritt keinem Nuclet zugewiesen wird als Default das Package "org.nuclet.datasource" verwenden, ansonsten der Pfad des Nuclets, z.B: org.meineFirma.meinNuclet
  • Zur weiteren Information beinhaltet eine Report-Klassen Id, Namen und Beschreibung der Datasource. Da keine Eingangsinformation angegeben werden müssen, ist eine Report-Klasse schlicht gehalten.
public class ExportRechnungsdatenDS implements Datasource {
public static final Long id = new Long(40016085); 
 
public static final String name = "Export: Rechnungsdaten"; 
 
public static final String description = "Export: Rechnungsdaten - für alle Kunden"; 
public Long getId() { return new Long(40016085);}  
 
}
DS

Klassengeneriung

Für die oben beschriebenen Klassen gelten bestimmte Regeln und Reihenfolgen, in der sie erstellt und bereitgestellt werden. Die Klassen werden je nach Typ compiliert und in einer eigenen Jar im Code Generator angelegt. Von dort aus werden die Archive in den Classloader aufgenommen und können verwendet werden.

TypKlasseReihenfolge der Generierung
BusinessObjekteBOentities.jar 
Report-KlassenReportDSEntities.jar 
Arbeitsschritt-Klasse  
Statusmodell-Klasse  
Regeln und BibliothekenNuclet.jar 

 

Regelkompilierung

 

  • Keine Stichwörter