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

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 29 Nächste Version anzeigen »

Allgemein

Die Nuclos API ermöglicht die Erstellung von (java-basierenden) Geschäftsregeln, die lesend und schreibend bei bestimmten Ereignissen auf Inhalte in Nuclos zugreifen können. Dazu bietet die Nuclos API verschiedene Klassen und Objekte an, um mit Nuclos zu interagieren.

Die vollständige Dokumentation der Nuclos API findet sich unter http://api.nuclos.de/

Ereignisse

Ereignisse (org.nuclos.api.rule), an die Geschäftsregeln geknüpft werden können, sind:

  • Die Neuanlage (InsertRule, InsertFinalRule) eines neuen Datensatzes (z.B. einer Rechnung, etc.)
  • Die Änderung (UpdateRule, UpdateFinalRule) eines existierenden Datensatzes (z.B. eines Auftrages, etc.)
  • Das Löschen (DeleteRule, DeleteFinalRule) eines existierenden Datensatzes (z.B. eines nicht mehr benötigten Adressdatensatzes, etc.)
  • Der Statuswechsel (StateChangeRule, StateChangeFinalRule) in einem existierenden Datensatz (z.B. die Überführung einer Rechnung von "Offen" nach "Mahnung", etc.)
  • Die Durchführung eines Arbeitsschrittes (GenerateRule, GenerateFinalRule) (z.B. die Erstellung eines Lieferscheines aus einem Auftrag, etc.)
  • Das Betätigen einer Schaltfläche (CustomRule) durch den User (z.B. um bestimmte Aktionen auszulösen, etc.)
  • Automatische Jobs (JobRule), die regelmässig ausgeführt werden können (z.B. die nächtliche Aktualisierung eines Onlineshops, etc.)

Regelausführung und Unterformulare

Die Regelausführung bei Änderung von BOs in Unterformularen bedarf derzeit noch der Systematisierung in Nuclos NUCLOS-6116 - Abrufen der Vorgangsdetails... STATUS .

Derzeitigs Verhalten ist wie folgt:

  • Bei Neuanlage (InsertRule, InsertFinalRule) nur bei Objekten mit Statusmodell
  • Bei Änderung (UpdateRule, UpdateFinalRule) keine Regelausführung
  • Beim Löschen (DeleteRule, DeleteFinalRule) nur bei Objekten mit Statusmodell

Regeleditor

Der Regeleditor (Menüpunkt "Server-Regeln (api-basiert)") ist das zentrale Werkzeug in Nuclos, um Regeln zu bearbeiten. Aktuell befindet sich ergänzend ein Eclipse-Plugin für die erleichterte Entwicklung und das erleichterte Debugging von Regel in Entwicklung.

Um voneinander abhängige Regeln, die nicht kompilierbar sind, korrigieren zu können, steht der Schalter "Automatische Kompilierung" (in der Toolbar des Regeleditors) zur Verfügung. Darüber lässt sich die automatische Kompilierung beim Speichern vorübergehend deaktivieren. Sobald man sie dort wieder aktiviert, wird beim nächsten Speichern wieder alles durchkompiliert.

Achtung: Solange Regeln nicht kompiliert sind, sind sie im Regelmanager (siehe folgender Abschnitt) auch nicht sichtbar.

Regelmanager

Der Regelmanager (Menüpunkt "Regel Management") ist das zentrale Werkzeug in Nuclos, um die Zuordnung zwischen Geschäftsregeln und Ereignissen zu verwalten. Die Zuweisung von Geschäftsregeln aus der Regelbibliothek (linker Baum) zu den Ereignissen (rechter Baum) geschieht mittels Drag&Drop.

Ereigniskontexte

Jedes Ereignis stellt den Regel, die diesem Ereignis zugewiesen werden, einen gewissen Ausführungskontext (org.nuclos.api.context) zur Verfügung. Diese Kontexte stellen den auszuführenden Regeln die für den jeweiligen Kontext relevanten Inhalte bereit, z.B. das gerade geänderte Objekt beim Ereignis Ändern oder das Quell- und das Zielobjekt beim Ereignis Arbeitsschritt.

Anwendungsspezifische Objekte

Nuclos kümmert sich automatisch um die Generierung aller nötigen anwendungsspezifischen Objekte. Dazu zählen

  • Businessobjekte (org.nuclos.api.businessobject). Businessobjekte repräsentieren die konfigurierten Businessobjekt jedes Nuclets. Für jedes Businessobjekt wird ein repräsentierendes Businessobjekt erzeugt, das entsprechende getter- und setter-Methoden für sämtliche Attribute des Businessobjekts bereitstellt.
  • Statusmodelle (org.nuclos.api.statemodel). Statusmodelle repräsentieren die konfigurierten Prozesse jedes Nuclets. Für jeden Prozess (Statusmodell) wird ein repräsentierendes Objekt erzeugt, dass den Geschäftsregeln einen erleichterten Zugriff auf die Statusnamen und -numerale bietet.
  • Datenquellen (org.nuclos.api.datasource). Datenquellen repräsentieren die konfigurierten Datenquellen jedes Nuclets. Für jede Datenquelle wird ein repräsentierendes Objekt erzeugt, dass den Geschäftsregeln einen erleichterten Zugriff auf die Datenquelleninhalte bietet.
  • Reports (in Entwicklung)
  • Formulare (in Entwicklung)

Werden Businessobjekte, Statusmodelle, Datenquellen, Reports und Formulare geändert, sind die Regeln, die diese anwendungsspezifischen Objekte verwenden, nicht mehr kompilierbar. Das hilft bei der unmittelbaren Erkennung der in Geschäftsregeln ggf. anzupassenden Stellen, die vorübergehend nicht mehr zu den geänderten anwendungsspezifischen Objekten passen.

Attribute vom Datentyp "Kommazahl" werden in Businessobjekten grundsätzlich über java.math.BigDecimal abgebildet. Mehr Informationen zu BigDecimal siehe http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html.

Zwei zeitsparende Hinweise zu BigDecimal:

  • Statt BigDecimal(double) immer BigDecimal.valueOf(Double) oder BigDecimal(String) verwenden.
  • Bei Divisionen immer .divide(BigDecimal, RoundingMode) statt .divide(BigDecimal) verwenden, um eine ArithmeticException zu vermeiden.

Unterstützende Provider

Provider (org.nuclos.api.provider) bieten unterstützende Funktionen, um Inhalte in Nuclos über Geschäftsregeln zu verändern. Aktuell sind folgende Provider implementiert, weitere werden folgen.

  • QueryProviderDer QueryProvider bietet diverse Methoden, um nach Businessobjekten zu suchen.
  • BusinessObjectProvider. Der BusinessObjectProvider bietet diverse Methoden, um Businessobjekte anzulegen, zu modifizieren und zu löschen. (Ab 4.28 deprected- Es gibt ab dann Methoden direkt am Objekt wie .save() und .delete())
  • StatemodelProvider. Der QueryProvider bietet diverse Methoden, um Prozesse zu automatisieren bzw. Statuswechsel durchzuführen. (Deprected- Ab 4.28 gibt es Methoden direkt am Objekt wie .changeStatus(....))
  • DataSourceProvider. Der DataSourceProvider bietet diverse Methoden, um Datenquellen abzufragen bzw. auszuführen, um die Ergebnisse weiter zu verarbeiten.
  • GenerationProvider. Der GenerationProvider ist eine Hilfeklasse, die alle notwendigen Methoden zur Ausführung eines Arbeitsschrittes (Generation) beinhaltet.

 

  • Keine Stichwörter