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:
Typ | Beschreibung | Suffix |
---|---|---|
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:
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:
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:
| 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:
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.
Typ | Klasse | Reihenfolge der Generierung |
---|---|---|
BusinessObjekte | BOentities.jar | |
Report-Klassen | ReportDSEntities.jar | |
Arbeitsschritt-Klasse | ||
Statusmodell-Klasse | ||
Regeln und Bibliotheken | Nuclet.jar |
Regelkompilierung