What is JasperWho?
JasperWho – Technische Übersicht
JasperWho ist eine Laravel-Anwendung zur Verwaltung und Generierung von JasperReports-Templates. Sie stellt eine API bereit, über die Templates hochgeladen, konfiguriert und als PDF gerendert werden können.
Architektur
Die Anwendung folgt dem Standard-Laravel-MVC-Muster und ist in folgende Schichten aufgeteilt:
Jasper-Integration
JasperWho kommuniziert mit einem JasperReports-Server via HTTP. Die Verbindungsdaten werden pro Umgebung in .env konfiguriert.
JASPER_HOST=https://jasper.example.com
JASPER_USER=admin
JASPER_PASSWORD=secret
JASPER_TIMEOUT=30
Template-Lifecycle
Ein Template durchläuft folgende Zustände:
.jrxml-Datei wird hochgeladen und validiert
Registrierung – Metadaten und Parameter werden in der Datenbank gespeichert
Deployment – Template wird auf den Jasper-Server übertragen
Rendering – API-Request mit Parametern triggert die PDF-Generierung
Archivierung – Generierte Dokumente werden optional gespeichert
API-Endpunkte
GET
/api/templates
Alle Templates auflisten
POST
/api/templates
Neues Template hochladen
GET
/api/templates/{id}
Template-Details abrufen
DELETE
/api/templates/{id}
Template löschen
POST
/api/templates/{id}/render
PDF rendern
Render-Request (Beispiel)
{
"parameters": {
"report_date": "2026-05-22",
"customer_id": 4711,
"include_charts": true
},
"format": "PDF"
}
Konfiguration
Info Alle Umgebungsvariablen können über
.envoder als Container-Secrets gesetzt werden.
JASPER_HOST
✅
–
URL des Jasper-Servers
JASPER_USER
✅
–
Benutzername
JASPER_PASSWORD
✅
–
Passwort
JASPER_TIMEOUT
❌
30
Timeout in Sekunden
TEMPLATE_DISK
❌
local
Laravel-Filesystem-Disk für Templates
Fehlerbehandlung
Schlägt ein Render-Job fehl, gibt die API eine strukturierte Fehlerantwort zurück:
{
"error": "render_failed",
"message": "JasperReports server returned 500",
"template_id": 42,
"trace_id": "a3f9c1"
}
Häufige Ursachen:
.jrxml-Definition)
Jasper-Server nicht erreichbar (Timeout)
Template nicht deployed (Status ≠ active)
Lokale Entwicklung
# Abhängigkeiten installieren
composer install
# Umgebung vorbereiten
cp .env.example .env
php artisan key:generate
# Datenbank migrieren
php artisan migrate --seed
# Server starten
php artisan serve
Warning Für lokale Entwicklung wird kein echter Jasper-Server benötigt — der
JasperFakeDriversimuliert Rendering und gibt Dummy-PDFs zurück.