在hybris 6.4中保存" ProcessTaskLogModel"时获取ModelSavingException

2020-09-28 11:34发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


问题1:在hybris 6.4中保存" ProcessTaskLogModel"的同时获取ModelSavingException。 这是因为OOTB代码尝试保存的数据超出了logmessages列中所允许的限制。

问题2:正在为业务流程(例如orderprocess)中的每个操作节点生成两个ProcessTaskLogModel记录。 理想情况下,一个actionNode应该有一个processTaskLogmodel。

所有这些都是" ProcessEngineLoggingCtx.class"方法saveAsTaskLogModel(BusinessProcessModel进程,已记录字符串的消息)中的OOTB代码

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


问题1:在hybris 6.4中保存" ProcessTaskLogModel"的同时获取ModelSavingException。 这是因为OOTB代码尝试保存的数据超出了logmessages列中所允许的限制。

问题2:正在为业务流程(例如orderprocess)中的每个操作节点生成两个ProcessTaskLogModel记录。 理想情况下,一个actionNode应该有一个processTaskLogmodel。

所有这些都是" ProcessEngineLoggingCtx.class"方法saveAsTaskLogModel(BusinessProcessModel进程,已记录字符串的消息)中的OOTB代码

付费偷看设置
发送
7条回答
昵称总是被占用
1楼 · 2020-09-28 12:02.采纳回答

p_logmessages 列是MySQL text 类型。 最大长度为64kB。 (好像您正在从堆栈跟踪中使用MySQL)

首先要指出的是,如果您要记录64k个字符,则您可能试图在一项任务中做太多事情。 也许您可以查看较少的信息记录或将任务拆分为较小的工作单元?

如果您确实需要增加列的大小,那么这是一个非破坏性的操作,但是您需要确定它是否将锁定表的时间很短。 我会与您的dba交流,因为它可能取决于行数之类的内容。 我不确定文本列,因为数据未随表本身存储,因此可能"正常工作"。

  alter table tasklogs修改列p_logmessages longtext;
  

要使其更具永久性(即在初始化中幸存下来),您将需要在items.xml中重新定义列类型。 请参见 impex-items.xml

ImportBatchContent 类型的示例
  
        MEDIUMTEXT 
   
  

参考: http://boolean.co.nz/博客/max-length-for-mysql-text-field-types/135/

宇峰Kouji
2楼-- · 2020-09-28 12:01

问题1:Stacktrace 替代文本

问题2:正在创建processTaskLog的两个线程的堆栈跟踪- alt text 替代文字

微wx笑
3楼-- · 2020-09-28 12:14

谢谢!!!

是的,我正在使用MYSQL。 但是,我想知道如何记录较少的信息或将任务拆分为较小的工作单元。 因为这是开箱即用(OOTB)代码。 因此,我应该覆盖OOTB代码。 即扩展" ProcessEngineLoggingCtx"并覆盖所需的方法。

另外,根据您的回答,作为固定的分辨率,我需要在继承OOTB项目类型的新项目类型中重新声明日志消息。 并设置以下logmessages。 在运行系统更新(来自HAC)时,它将更新列类型。

  
                                     MEDIUMTEXT 
                           

  

另外,长文本或中文本会更好,因为您同时给出了这两种解决方法。

此外,您有以下解决方案吗?

 问题2:正在为业务流程(例如orderprocess)中的每个操作节点生成两个ProcessTaskLogModel记录。 理想情况下,一个actionNode应该有一个processTaskLogmodel。

  

谢谢

能不能别闹
4楼-- · 2020-09-28 12:19

谢谢

shere_lin
5楼-- · 2020-09-28 12:17

再次感谢!

作为解决logmessages问题的方法,我将使用DDL查询更新列类型。 另外,我将在新的item-type(扩展ProcessTaskLog item-type)中声明该属性,以将列类型更新为中文字。 因此,如果初始化数据库,则不会有任何影响。

谢谢

SKY徐
6楼-- · 2020-09-28 11:58

对不起,您对第二个问题一无所知。 我会尝试在模型类的构造函数中放置一个断点,并查看从哪里调用它们。

四川大学会员
7楼-- · 2020-09-28 12:17

关于我的第二个问题

 问题2:正在为业务流程(例如orderprocess)中的每个操作节点生成两个ProcessTaskLogModel记录。 理想情况下,一个actionNode应该有一个processTaskLogmodel。

  

我有两个调用的堆栈跟踪。

替代文字

替代文字

一周热门 更多>