unil/iafbm — Issue #23: Reflexion archivage commission
Author: damiencorpataux
Created: 2011-10-17 12:33:36+00:00
State: open
Labels: @Commission, Refléxion

# Principes de base lors de la clôture d'une commission

## Alternative 1
- Le champs **commission.type** passe à *clôturé*
- Les **entités externes** partagées (*personnes*) doivent être conservées au temps **t** de la clôture.

**2** alternatives pour conserver l'état de ces **entités externes**:
- Par **copie**:
- Les entités sont copiées dans une table d'archive (p.ex. personnes -> personnes_archive)
- Les requêtes SQL sont modifiées pour que les jointures soient faites sur la table d'archive
- **Implications:**
- Le model doit être capable de *switcher* de jointure sans changer les prefixes de champs
- L'historique lié à la table de travail (*personnes*) peut être réutilisé sur les entitées de la table archivée
- Les composants ExtJS fournissent les paramètres nécessaires? **[todo]**
(*personnes_archive*)
- Par **historique** (versioning):
- La date de la clôture (ou son n° de révision) de la commission est stockée
- Les entités externes sont **reconstituées** via l'historique (au sein du model)
- soit par application chronologique de l'historique sur une *entité vierge* (tous les champs à *null*)
- soit par application antichronologique de l'historique sur la version courante de l'entité
- **Implications:** todo
- Le model doit être capable de fournir une entité à une dévision donnée (un argument *xrevision* est passé au model)
- L'historique lié à la table de travail (*personne*) est conservé simplement réutilisé
- Les composants ExtJS fournissent les paramètres nécessaires? **[todo]**
- L'historique de la commission est conservé car seul le champs *type* est modifié

## Alternative 2
- Les tables commissions sont copiées dans des tables d'archive (commissions_*_archive)
- Les entités externes sont copiées dans une table d'archive (1 table par type d'entité)
- **Implications**
- Un model spécifique est créé pour chaque table d'archive
- Les id de chaque entité est répliqué dans les tables d'archive (pas d'AUTO_INCREMENT pour les primary keys)
- Les historiques des tables de travail peuvent être réutilisés pour les tables d'archive
- Les composants ExtJS doivent permettre de *switcher* de modèle