Darstellung
User Exit
Transaktion: DEV02 User Exit
UI-Pfad: runnableServiceEventList / runnableServiceEventEdit
Business-Zweck
User Exits (Domäne RunnableServiceEvent) erlauben Partnern, Groovy-Code vor oder nach bestehenden Service-Methoden auszuführen – z. B. Validierung, Feldanreicherung, externe API-Aufrufe oder abweichende Buchungslogik. Die Hooks werden zur Laufzeit über einen Method-Interceptor eingebunden.
Kernbegriffe
| Begriff | Bedeutung |
|---|---|
| RunnableServiceEvent | Konfiguration eines Hooks |
| serviceClass | Vollqualifizierter Service (z. B. com.reybex.services.wws.sales.SalesHeadService) |
| serviceMethod | Methodenname (Default: save) |
| beforeCode | Skript vor Methodenaufruf |
| afterCode | Skript nach Methodenaufruf |
| isActive | Hook aktiv/inaktiv |
| sortOrder | Reihenfolge bei mehreren Hooks |
| domains | Liste aller hook-fähigen Domänen/Services |
Fachlicher Ablauf / Workflow
- Verfügbare Services laden:
GET /api/runnableServiceEvent/runnableServices - Domains/Hooks einsehen:
GET /api/runnableServiceEvent/domains - User Exit anlegen mit
serviceClass,serviceMethod, Skripten - Skript validieren:
POST /api/runnableServiceEvent/analyzeScript - Aktivieren (
isActive: true) und speichern - Bei Änderungen: Event-Historie und Diff prüfen
Partner-Szenarien
| Szenario | Hook |
|---|---|
| Auftragsvalidierung vor Speichern | SalesHeadService.save – beforeCode |
| Zusatzfelder nach Material-Anlage | MaterialService.save – afterCode |
| Externe Preisprüfung | SalesHeadService.save – beforeCode |
| Mehrere Hooks sortiert | sortOrder aufsteigend |
Voraussetzungen
- Transaktionsrecht DEV02
- Groovy-Kenntnisse, Zugriff auf Domänen im Skript-Kontext
- Testmandant für Skript-Validierung
Auswirkungen im ERP
| Aktion | Auswirkung |
|---|---|
| beforeCode | Kann Request manipulieren oder Exception werfen (Abbruch) |
| afterCode | Kann Ergebnis/Domäne nachbearbeiten |
| isActive=false | Hook wird übersprungen |
| Fehler im Skript | Transaktion bricht ab (BusinessException) |
Typische Fehlerquellen
| Fehler | Ursache |
|---|---|
| Skript kompiliert nicht | Syntaxfehler – analyzeScript nutzen |
| Hook greift nicht | isActive=false oder falscher serviceMethod |
| Falsche Reihenfolge | sortOrder prüfen |
| Performance | Schwere Logik in beforeCode vermeiden |