Option 1
LambiqueGlobal est un composant externe unique intégré au projet client. Il agit comme un singleton global pour gérer et partager des informations transversales entre tous les modules du projet.
🎯 Objectifs
- Centraliser certaines entités applicatives communes (utilisateur, entité, etc.)
- Éviter la duplication de listes volumineuses dans chaque composant
- Assurer la communication entre composants à travers des objets métiers sérialisés (ex: JSON)
- Rediriger dynamiquement les traitements vers le module source responsable de chaque type d’objet métier
🧠 Fonctionnalités principales
- Utilisateur courant : accessible via
setUser()
/getUser()
- Stockage centralisé pour :
UtilisateurListe
UniteListe
,UniteTypeListe
CouleurListe
DeviseListe
MonEntite
TauxHoraireListe
- Router métier : acheminement d’un objet JSON vers le module d’origine
- Gestion centralisée des interactions avec la vue générique
🔄 Cycle typique d’un objet métier partagé
- Un module appelle
LambiqueGlobal
pour créer un objet métier - LambiqueGlobal route le JSON vers le module d’origine
- Le module crée l’objet, son présentateur, et appelle la vue générique
- Après modification, l’objet est retransformé en JSON et retourné via LambiqueGlobal
📌 Considérations techniques
- Implémentation sous forme de singleton
- Utilise des structures dynamiques (ex:
variant
,json
, etc.) pour la sérialisation - Réduction de la charge mémoire dans les composants (données centralisées)
- Facilite l’évolution et la maintenance des modules métiers
Option 2
LambiqueGlobal est un composant global (singleton) intégré à l’échelle du projet, responsable de la centralisation des données métier partagées et de la coordination inter-modules.
📌 Rôles principaux
- Maintien de l’utilisateur courant et informations associées
- Enregistrement et récupération d’objets métier entre composants
- Coordination des vues génériques avec données transmises au format JSON
- Interface centralisée pour fournir certains services métier via des Providers
🔁 Communication inter-modules
- Les modules peuvent s’enregistrer auprès de
LambiqueGlobal
pour proposer leurs objets métier - Les objets peuvent être transmis sous forme de JSON vers une vue générique
- Après modification, ils retournent au module d’origine via un mécanisme de délégation
🧩 Notion de Provider & Interface
Pour éviter d’intégrer des composants métier dans LambiqueGlobal
, une architecture par interface est utilisée.
🎯 Objectif
- Éviter les dépendances croisées entre modules
- Conserver
LambiqueGlobal
léger et générique
📐 Principe
LambiqueGlobal
définit une interfaceIUtilisateurProvider
- Un autre composant métier implémente cette interface via une classe comme
CLUtilisateurProvider
LambiqueGlobal
utilise un objet dynamique :GUtilisateurProvider
⚙️ Exemple d’utilisation
SI GLambiqueGlobal.GUtilisateurProvider = Null ALORS
GLambiqueGlobal.GUtilisateurProvider = new CLUtilisateurProvider()
FIN
ListeU = GLambiqueGlobal.GUtilisateurProvider.ChargerListeUtilisateurs()
Remarque : En raison de l’utilisation d’un objet dynamique, l’auto-complétion ne sera pas disponible. La documentation et les commentaires deviennent donc importants.
📁 Localisation
- L’interface
IUtilisateurProvider
est déclarée dansLambiqueGlobal
- Les implémentations concrètes restent dans les modules métiers (non référencés par
LambiqueGlobal
)