Je possède un business object A,
Je possède un business object B qui hérite de A
J’ai coché la case “history table” dans l’objet B pour avoir son historique,
Cela marche très bien mais n’historise que les champs de l’objet B
Remarquant qu’il n’y avait pas les champs de l’objet A, je coche la case “history table” dans cet objet, et l’objet B_history hérite de l’objet A_history pour que B_history récupère tous les champs pour pouvoir les visualiser dans une fenetre
Cependant mon problème est que je ne reçois plus aucune nouvelle ligne dans B_history
Y a-t-il des informations, ou des manipulation à faire en plus pour que B_history possède les champs de A et B et que l’on puisse voir toute l’historisation via B_history ?
hériter de AHistoric pour ne pas avoir à reparamétrer tous les attributs
partager la même table a_hist (sinon ce qui sera persisté dans b_hist ne sera pas visible dans a_hist)
contenir les attributs que vous souhaitez historiser de B (pas besoin de rappeler ceux de AHistoric hérités)
En général on retire les attributs qui ne sont pas modifiables des historique ou qui n’apporte rien.
Les objets historiques sont généré une seule fois par Simplicité (quand on coche la case l’option historique en base), ensuite c’est au designer de la maintenir s’il ajoute de nouveaux attributs à A ou B.
Un objet Historic se comporte comme n’importe quel objet (héritage, hooks, droits…), avec une fonctionnalité automatique en plus : quand l’objet parent est modifié ça déclenche une création en recopiant les attributs connus du père (donc peut avoir d’autres attributs complémentaires saisissables par exemple).
Pour revenir sur mon point, en mettant AHistoric dans le extend of code de BHistoric, je récupère bien les champs de A dans BHistoric, cependant, quand je crée un nouveau record
J’ai pas forcément besoin que la données soit stocké dans a_hist, surtout que a_hist est partagé sur plusieurs objets fils, est ce que j’ai quand meme besoin de partager la meme table ? Si oui, ce que vous appelez par “partager la meme table”, c’est à dire que a_hist et b_hist doivent avoir le meme nom dans le champ Table* ?
oui la table des historiques doit être la même = elle contiendra tous les champs possibles de tous les héritage possibles. C’est la couche logique qui dira quels champs renseigner.
Il faudra peut être rendre tous les attributs d’objet facultatifs au niveau des attributs des historiques, mais si c’est bien paramétré il n’y aura pas de collision de règle (car en base ils sont tous NULLable).
Si vous voulez des tables séparées, à vous de coder tous les hook postCreate de chaque historique pour dupliquer l’information dans les autres tables, mais je ne pense pas que ce soit votre besoin.