WindevExpert

Vidéo 26 • Reporting & Performance

Génération
Asynchrone

Apprenez à générer des rapports PDF massifs sans jamais ralentir votre application pour les autres utilisateurs.

Pourquoi attendre est dangereux ?

Reporting Direct

Le serveur calcule le PDF pendant que l'utilisateur attend. Le navigateur finit par faire un "Timeout".

RÉSULTAT : Serveur bloqué, application figée pour tous.

L'Attente Interminable

"En SaaS, un utilisateur ne doit jamais attendre une action qui prend plus de 2 secondes. On délègue au second plan."

Atelier : La File d'Attente de Rapports

Dashboard Utilisateur

Demander un export annuel (150 Mo)
Charge Serveur Web
12%

File d'attente des Jobs (Cloud Database)

Aucun job en cours

Le Cycle de Vie du Job

Les 3 États Vitaux

1

PENDING : La demande est inscrite en base mais pas encore traitée.

2

PROCESSING : Le Worker asynchrone génère le PDF.

3

COMPLETED : Le fichier est prêt sur S3/Cloud Storage.

Notification push
"Votre rapport est prêt !"

Implémentation de l'Enregistrement

// 1. Côté Webdev (L'interface qui reçoit le clic)
stJob est une ST_ReportJob
stJob.Type = "PDF_ANNUEL"
stJob.Statut = "PENDING"
stJob.IDTenant = gsIDTenantActuel

// 2. On écrit juste en base, on ne génère RIEN
HAjoute(F_JOBS, stJob)

// 3. On répond IMMÉDIATEMENT à l'utilisateur
PageActualise()
ToastAffiche("Génération lancée en arrière-plan...")

// 4. Le Worker (programme séparé) viendra lire F_JOBS