Bonjour,
Nous n’arrivons pas à mettre en place le journal des modifications.
L’option est bien cochée sur l’objet mais rien n’est tracé lors des modifications.
Bonjour,
Nous n’arrivons pas à mettre en place le journal des modifications.
L’option est bien cochée sur l’objet mais rien n’est tracé lors des modifications.
Avez vous ouvert le tuyau général dans les param systèmes ?
LOG_SESSION
{
"database": true,
"prune": 7,
"unit": "day",
"logger": true
}
LOG_ACTIVITY
{
"database": true,
"prune": 7,
"unit": "day",
"logger": false
}
Ensuite l’info est stockées dans m_session et m_redolog, et donc accessible par objet Simplicité / Exploitation.
J’ai bien les paramètres comme indiqués :
en explorant la table m_session, nous avons bien des lignes par contre la table m_redolog est vide.
La sérialisation des REDOLOG a changée et effectivement il y a une petite régression lors de la sauvegarde du journal, il faudra mettre à jour l’instance.
De mon côté ça fonctionne :
Ensuite vous devez avoir des redo log accesibles via Exploitation/Journal des modifications
Bonjour,
Est-il est possible de cacher la vue sur le journal des modifications au niveau du formulaire de l’objet configuré avec cette option :
Le besoin ici est d’activer le journal des modifications et d’y accéder que depuis le l’objet RedoLog directement.
A priori en implémentant le hook canReference()
Merci David, donc tu confirmes que par paramétrage d’objet ce n’est pas possible pour l’instant ?
Non à ma connaissance ce n’est pas possible de masquer un lien type “metaobject” par paramétrage. @Francois tu confirmes ?
update par code mais ça ne le fait plus.
D’ailleurs comment forcer le journal des modifications lorsqu’on met à jour un ObjectDB par code avec un update ?
Je laisse @Francois regarder le “update par code mais ça ne le fait plus”
Sur l’autre question : un update programmatique sur un objet qui fait l’objet d’une historisation doit, je pense, se faire en chargeant/valorisant les old values
quand je dis que ça ne le fait plus, c’est que je n’ai plus le problème sur la version actuelle, donc rien à faire.
Merci @david je vais tester.
@david je n’arrive toujours pas à voir de lignes s’ajouter dans le journal des modifications, au niveau du paramétrage de l’objet, dans historique des données j’ai activé seulement la case “journal de modifications”.
Une modification par UI m’ajoute bien la ligne c’est seulement par code ou j’ai rien.
Est-ce qu’il y a autre chose à valoriser une fois qu’on récupère l’ObjectDB et avant de faire l’update() ?
Tu fais bien un select(rowId)
avant l’update ? Le select valorise les old values.
Perso je ferais un truc du genre:
ObjectDB obj= getGrant().getTmpObject("MyObject");
BusinessObjectTool objt = new BusinessObjectTool(obj);
objt.selectForUpdate(myRowId);
obj.setFieldValue("myField", myValue);
objt.validateAndSave();
Dans un try/catch
bien sûr
Je viens de tester @david avec un objet simple, ça n’a pas l’air de marcher chez moi.
La modification par formulaire alimente bien le journal des modifications mais toujours rien en modification par code même en utilisant le select ou en valorisant des oldValue.
[Platform]
Version=4.0.P24
BuiltOn=2020-10-08 16:30 (revision e7d0f2f103310b42db2fa87b3b365118badd3462)
Ok on va retester la journalisation par mise à jour via code en V4.
Il y a peut être une subtilité sur les instances non UI car il faut avoir un working Id dans m_session.
Suite à analyse, l’archivage d’une mise à jour en session (redolog) est bien end-user donc sur la mise à jour via un appel de la UI, ça fonctionne avec le undo/redo de ce qu’il vient de faire.
Donc si on fait une mise à jour par code, ce n’est pas archivé un peu comme si on avait fait du SQL par code. L’utilisateur n’est pas responsable de ce que le système fait indirectement pour lui / ce n’est pas à tracer dans son journal des modifications.
Il va donc falloir :
@khalil
A mon avis comme vous êtes les seuls à avoir ce besoin de façon un peu globale sur vos objets, il faudrait mieux partir sur l’évolution 2 si vous êtes sur que :
Pour nous c’est bon.
L’utilisateur veut surtout tracer les modifications réalisées sur l’objet et même si c’est la modification est réalisée par code dans certain cas, il reste à l’origine de la modification.
Ok il y a un peu de boulot alors.
Il va falloir ajouter un choix de paramétrage pour être compatible ascendant comme toujours.
Vous devrez reparamétrer vos objets à ce niveau car il y aura une 4eme options “Redo-log full” incluant les mises à jour indirectes = tout le redo log d’une mise à jour (celui qui sert au undo) et pas juste l’objet modifié par l’utilisateur.
Ok pas de problème, on attend ton retour sur la disponibilité de l’évolution