Créer un historique sur un business object héritié

Bonjour,

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 ?

[Platform]
Status=OK
Version=4.0.P24
BuiltOn=2020-10-14 23:22 (revision 3c63448f648587d9a89ec04d597946d26e4f7937)
DBPatchLevel=4.0;P24;c7fe66442735519a6c29cae8957fd0e1

Cordialement,
KWu

Je ne reproduis pas votre problème.

Effectivement BHistoric doit :

  • 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).

1 Like

Bonjour François,

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

Mon historic reste vide

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* ?

Cordialement,
KWu

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.