Historique sur objet

Bonjour,

Je travaille avec la 3.2 M06 :

  • J’active l’historique sur un objet,
  • je le grant (petit problème en passant la fonction n’est pas renseignée directement quand j’essaie de rajouter une habilitation)
  • Je teste la modification sur l’objet, la version 1 de l’historique est bien enregistré
  • Je réessaie de tester, je n’ai que la version 1 précédemment créés et pourtant les attributs que je modifie sont bien dans l’objet historique.

Cordialement,
Zouhair

Bonjour

Nous avons poussé une mise à jour sur l’instance 87053989ce (je suppose que l’on parle de celle-ci).

Une des correction qu’elle embarque a peut être un effet sur ce pb (je viens de tester sur une autre instance à jour de cette mise à jour et le fonctionnement de l’historique me semble correct)

Merci de nous dire ce qu’il en est.

Hello,

Non le problème ne semble pas être réglé. J’ai un message d’erreur :

2017-03-20 14:00:31,875 ERROR [com.simplicite.util.engine.ObjectManager] SIMPLICITE|https://ns373680.ip-94-23-248.eu:12293||ECOREOM001|designer|com.simplicite.util.engine.ObjectManager|historize||Impossible de créer un historique de données pour BCSIApplicationHistoric
com.simplicite.util.exceptions.ValidateException: ERR_NUMBER:Version#ERROR#row_idx
at com.simplicite.util.engine.ObjectManager.historize(ObjectManager.java:2397)
at com.simplicite.util.engine.ObjectManager.update(ObjectManager.java:2093)
at com.simplicite.util.engine.ObjectManager.save(ObjectManager.java:2496)
at com.simplicite.util.ObjectDirect.save(ObjectDirect.java:423)
at com.simplicite.util.ObjectDB.save(ObjectDB.java:929)
at com.simplicite.webapp.ObjectForm.validateAndSave(ObjectForm.java:1853)
at com.simplicite.webapp.ObjectForm.display(ObjectForm.java:201)
at com.simplicite.webapp.ObjectForm.display(ObjectForm.java:73)
at com.simplicite.util.ObjectDB.displayForm(ObjectDB.java:1999)
at com.simplicite.util.ScriptedObjectDB.displayForm(ScriptedObjectDB.java:1171)
at org.apache.jsp.jsp.ALL_005fform_jsp._jspService(ALL_005fform_jsp.java:194)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at com.simplicite.webapp.filters.AuthMethodFilter.doFilter(AuthMethodFilter.java:184)
at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:591)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

Zouhair

Je ne peux pas investiguer plus avant sans accès au paramétrage en question (sur les instances 3.2 sur lesquelles j’ai testé les historisations fonctionnement). Merci de m’envoyer le mot de passe designer à mon adresse email pour que je puisse regarder de plus près ce cas particulier.

Hello,

Je me permets de relancer ce sujet parce que j’ai trouvé la cause du problème : Quand on active l’historique sur un objet qui contient des champs avec des listes de valeurs liées, l’historique bloque à l’enregistrement . Le problème est réglé quand je copie le mécanisme de listes liées au niveau de l’objet historic.

Cordialement,
Zouhair

Je ne vois pas bien le rapport car une liste liée se déclare entre 2 champs d’un objet donné, il n’agit donc que sur un objet, pas sur son historique qui n’est pas un héritage.

D’après la log d’erreur, il doit y avoir qq chose sur l’historique qui fait que le row_idx/version n’est pas un entier. je ne vois pas encore de rapport avec une liste liée sauf un erreur de paramétrage qq part qui bloque l’alimentation de ce champ.

Y a-t-il du code sur l’objet historique ou est-il instancié pour générer des historiques spécifique par code… ?

Bonjour,

Je pense que j’ai relancé ce vieux post par rapport à un dysfonctionnement sur l’historique sans faire attention au log que j’avais communiqué. Il y a bien une erreur dans les logs sur la création d’historique sur des valeurs de liste liée mais pas le même message d’erreur.

Si je reprends mon explication :

  • J’ai un objet avec deux champs de liste de valeur liées pour certaines valeurs.
  • Je n’ai aucun code sur l’objet historique
  • Quand je fais des modifs en mettant des valeurs sur le champs “père” qui ne sont pas liées avec des liste de valeurs du champs “fils”, ça crée bien un nouveau record dans l’historique
  • Quand je renseigne une valeur liée dans le champs “père” sans rien spécifier dans le champs “fils”, ça crée bien un nouveau record dans l’historique.
  • Par contre, dès que renseigne une valeur liée dans le champs “père” en renseignant une valeur dans le champs “fils”, ça ne crée pas de nouveau record dans l’historique et j’ai ce message d’erreur :

2018-06-01 09:56:50,607 ERROR [com.simplicite.util.engine.ObjectManager] SIMPLICITE|https://dev.simplicite.io:10353||ECOREOM001|p088101|com.simplicite.util.engine.ObjectManager|historize||Impossible de créer un historique de données pour BCSISample2Historic
com.simplicite.util.exceptions.ValidateException: ERR_ENUM:Sample 2list child#ERROR#Sample2ListChild
at com.simplicite.util.engine.ObjectManager.historize(ObjectManager.java:2632)
at com.simplicite.util.engine.ObjectManager.update(ObjectManager.java:2315)
at com.simplicite.util.engine.ObjectManager.save(ObjectManager.java:2715)
at com.simplicite.util.ObjectDirect.save(ObjectDirect.java:455)
at com.simplicite.util.ObjectDB.save(ObjectDB.java:912)
at com.simplicite.webapp.tools.JSONServletTool.update(JSONServletTool.java:914)
at com.simplicite.webapp.ObjectJson.update(ObjectJson.java:353)
at com.simplicite.webapp.tools.JSONServletTool.businessObjectService(JSONServletTool.java:476)
at com.simplicite.webapp.servlets.AbstractJSONServlet.service(AbstractJSONServlet.java:82)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.simplicite.webapp.filters.AuthMethodFilter.doFilter(AuthMethodFilter.java:112)
at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
at com.simplicite.tomcat.valves.APISessionValve.invoke(Unknown Source)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:412)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1385)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

Face à ce problème, j’ai tenté de créer la liste liée mais côté historique et je constate qu’on refaisant le test, un nouveau record est bien créé dans l’historique.

J’ai crée deux exemples sur l’instance renault dev pour reproduire les deux cas :

  • Sans liste liée sur histo : BCSISample2
  • Avec liste liée sur histo : BCSISample3

Les entrées de menu sont dans le domaine BCSI-Sample

Cordialement,
Zouhair