🎯 Objectif
Le système MWBS permet de gérer des structures hiérarchiques d’ensembles et de composants à partir de listes plates, en assurant la reconstruction correcte de leur hiérarchie lors de la modification ou du chargement.
📦 Structure de MWBS
MWBSEnsembleListe
: liste plate d’ensemblesMWBSComposantListe
: liste plate de composants
Ces listes ne contiennent aucune hiérarchie. Chaque élément (ensemble ou composant) est sérialisé indépendamment et contient son propre modèle, ses données, et un contexte (identifiant, père, etc.).
🔁 Reconstruction hiérarchique
Étapes principales
- Création d’un
MEnsembleProvider
viaMWBS.GetProvider()
. - Injection de ce provider dans le contexte de l’ensemble à modifier.
- Appel à
Construire()
dans l’ensemble, qui utilise le provider pour retrouver ses enfants.
Exemple de code (dans MENChaudiere
)
SI m_pclContexte.p_bProviderDisponible ALORS m_pclContexte.SetEnsemble(m_pclPreparation) m_pclContexte.SetEnsemble(m_pclChaudiere) ... FIN
🧩 Le Provider
MEnsembleProvider
joue le rôle de source abstraite de données. Il contient :
- Une liste d’
AEnsemble
- Une liste d’
AComposant
Il remplace l’usage de MWBS
dans les ensembles pour garantir le découplage et l’indépendance du contexte.
👨💻 Flux de modification d’un ensemble
- On appelle
ModifierEnsemble()
depuis le présentateur. - On obtient les données via
FEnsembleData.gGetData()
. - On instancie l’objet via
FEnsemble.GetModele()
. - On injecte le provider dans le contexte de l’ensemble.
- On affiche l’ensemble avec
GEnsembleAfficheur.Afficher()
. - En retour, on enregistre l’ensemble modifié.
🛠 Exemple : GetProvider dans MWBS
PROCÉDURE GetProvider() : MEnsembleProvider pclProvider = new MEnsembleProvider POUR TOUT ensemble DE m_pclEnsembleListe.p_tabModele pclProvider.AjouterEnsemble(ensemble.p_pclEnsemble) FIN POUR TOUT composant DE m_pclComposantListe.p_tabModele pclProvider.AjouterComposant(composant.p_pclComposant) FIN RENVOYER pclProvider
✅ Résultat
- Le modèle
MWBS
est auto-suffisant et isolé. - La hiérarchie est reconstruite dynamiquement.
- Les traitements sont découplés (fabrique, affichage, persistance).
- Testabilité et extensibilité garanties via le pattern Provider.