5.5.1间隔触发器不触发

2020-09-18 14:06发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)只需在带有developer c...

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

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


只需在带有developer config的全新5.5.1安装中重现此问题。 当我在具有间隔间隔的同步作业上指定触发器时,不会触发它。 在特定时间戳上触发的触发器确实会触发。 保存触发器时,我还注意到了此堆栈跟踪:

 在此处输入代码错误[000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob] [PoolableThread]执行000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob时出现问题:实体 找不到(pk = 8796111995381名称='de.hybris.platform.persistence.processing_CronJob'类型代码='501'db表='cronjobs')
  de.hybris.platform.util.jeeapi.YNoSuchEntityException:找不到实体(pk = 8796111995381 name ='de.hybris.platform.persistence.processing_CronJob'type code ='501'db table ='cronjobs')
      在de.hybris.platform.persistence.GenericBMPBean.loadData(GenericBMPBean.java:260)
      在de.hybris.platform.persistence.GenericBMPBean.ejbLoad(GenericBMPBean.java:149)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOutsideTx(RemoteInvocationHandler.java:185)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:164)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:107)
      com.sun.proxy。$ Proxy161.getModifiedTime(未知来源)
      在de.hybris.platform.persistence.ItemEJBImpl.getModificationTime(ItemEJBImpl.java:142)
      在de.hybris.platform.jalo.Item.getModificationTimeFromPersistenceLayer(Item.java:1539)
      在de.hybris.platform.jalo.Item.getLocalItemCache(Item.java:1410)
      在de.hybris.platform.jalo.Item.getGetterSetterCache(Item.java:1420)
      在de.hybris.platform.jalo.Item.access $ 0(Item.java:1418)
      在de.hybris.platform.jalo.Item $ CacheableItemLogic.getCacheMap(Item.java:560)
      在de.hybris.platform.jalo.Item $ CachedGetter.get(Item.java:686)
      在de.hybris.platform.jalo.ExtensibleItem.getProperty(ExtensibleItem.java:364)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:432)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2474)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:441)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2461)
      在de.hybris.platform.cronjob.jalo.CronJob.setLog4JMDC(CronJob.java:3917)
      在de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:752)
      在de.hybris.platform.cronjob.jalo.Job.access $ 1(Job.java:747)
      在de.hybris.platform.cronjob.jalo.Job $ JobRunable.run(Job.java:667)
      在de.hybris.platform.util.threadpool.PoolableThread.run(PoolableThread.java:198)
 
  错误[000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob] [作业]执行000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob时出现问题:找不到实体(pk = 8796111995381 name =  'de.hybris.platform.persistence.processing_CronJob'类型代码='501'数据库表='cronjobs')
  de.hybris.platform.util.jeeapi.YNoSuchEntityException:找不到实体(pk = 8796111995381 name ='de.hybris.platform.persistence.processing_CronJob'type code ='501'db table ='cronjobs')
      在de.hybris.platform.persistence.GenericBMPBean.loadData(GenericBMPBean.java:260)
      在de.hybris.platform.persistence.GenericBMPBean.ejbLoad(GenericBMPBean.java:149)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOutsideTx(RemoteInvocationHandler.java:185)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:164)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:107)
      com.sun.proxy。$ Proxy161.getModifiedTime(未知来源)
      在de.hybris.platform.persistence.ItemEJBImpl.getModificationTime(ItemEJBImpl.java:142)
      在de.hybris.platform.jalo.Item.getModificationTimeFromPersistenceLayer(Item.java:1539)
      在de.hybris.platform.jalo.Item.getLocalItemCache(Item.java:1410)
      在de.hybris.platform.jalo.Item.getGetterSetterCache(Item.java:1420)
      在de.hybris.platform.jalo.Item.access $ 0(Item.java:1418)
      在de.hybris.platform.jalo.Item $ CacheableItemLogic.getCacheMap(Item.java:560)
      在de.hybris.platform.jalo.Item $ CachedGetter.get(Item.java:686)
      在de.hybris.platform.jalo.ExtensibleItem.getProperty(ExtensibleItem.java:364)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:432)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2474)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:441)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2461)
      在de.hybris.platform.cronjob.jalo.CronJob.setLog4JMDC(CronJob.java:3917)
      在de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:752)
      在de.hybris.platform.cronjob.jalo.Job.access $ 1(Job.java:747)
      在de.hybris.platform.cronjob.jalo.Job $ JobRunable.run(Job.java:667)
      在de.hybris.platform.util.threadpool.PoolableThread.run(PoolableThread.java:198)
 

  

我还在全新的5.5.0安装上尝试了此操作,以完全相同的方式添加了间隔间隔触发器,并且确实触发了这些操作。

有什么想法吗?

10条回答
代楠1984
2020-09-18 14:30 .采纳回答

我认为升级到5.5.1版时出现的问题如下。 对于每个Trigger项,现在必须有一个对应的TriggerTask项。 这些TriggerTask项目仅为新创建的Trigger项目创建。 这是在CronJobManager.afterItemCreation中完成的。 对于已经存在的Trigger项,TriggerTask项丢失,需要手动创建。 在升级到Hybris 5.5.1之后,我们使用了以下脚本来使触发器工作:

  import de.hybris.platform.cronjob.jalo.CronJobManager;
  导入de.hybris.platform.cronjob.jalo.Trigger;
  导入de.hybris.platform.jalo.JaloSession;
  导入de.hybris.platform.jalo.flexiblesearch.FlexibleSearch;
  导入java.util.List;
 
  最终的List 触发器= FlexibleSearch.getInstance()。search("从{Trigger}中选择SELECT {pk}",Trigger.class).getResult();
  对于(最终触发器触发器:触发器){
      println"为触发器创建TriggerTask + +属于cronjob的trigger.getPK()+"(trigger.getCronJob()== null?" null":trigger.getCronJob()。getCode());
      CronJobManager.getInstance()。afterItemCreation(JaloSession.getCurrentSession()。getSessionContext(),trigger.getComposedType(),trigger,null);
  }
  

一周热门 更多>