NoSuchProcessDefinitionException:名称不知道任何流程定义

2020-08-22 20:12发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨 我遇到混合动力 Busin...

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

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


我遇到混合动力 BusinessProcess 的问题。 该过程应

  1. 生成电子邮件

  2. 发送邮件

  3. 再次将其删除

    这是 process.xml:

      <操作ID  =" generateContactEmail" bean =" generateContactEmail">
              
              
          
     
          
              
              
          
     
          
              
              
          
     
          出了点问题。
          无法发送客户联系电子邮件。
          已发送客户联系电子邮件。
     
      
    
      

因此,我使用的所有进程都是标准的hybris进程。 (generateContatctEmail正在扩展 abstractGenerateEmailAction )。

不时发生的异常是" NoSuchProcessDefinitionException:没有名称为contactEmailProcess(VERSION:d6e0 ....)的进程定义。"

我的系统设置:

  • 我正在4个服务器的群集中运行hybris。

  • 我的hybris版本是5.7.0.15

  • BusinessProcess已有大约一年的历史,并且自一个月以来就出现了问题,但未对其进行任何更改...

问题是,该异常仅不时发生。 有时,该过程可以生成邮件,但不能发送出去。 有时它可以发送但不能删除它,有时甚至不能生成邮件。 阅读有关此问题的先前问题以及异常文本本身,我认为问题在于 businessProcess.versionOfDefinition 。 因此,我仅几次重新启动了4个群集节点之一,但是无论我在哪个服务器节点上进行会话,当我尝试发送新电子邮件时," versionOfDefinition "始终保持不变。 >

那么怎么可能发生:

  • 找不到业务流程?

  • BusinessProcess的一两个步骤正常工作,然后找不到了吗?

  • 是否存在一个隐藏的设置,即BusinessProcess一旦启动,就必须始终在同一集群节点上运行?

感谢您提供任何信息

5条回答
宇峰Kouji
2020-08-22 20:27 .采纳回答

嗨,

我在hybris 6.2中面临着相同的问题。:我们的系统有时会无法执行进程,并且会失败并显示" NoSuchProcessDefinitionException"。 这是我所知道的:

  • 有时hybris能够执行某些过程步骤。 当查看失败的进程时,您会发现hybris在各个步骤之间切换群集节点,并且在尝试在特定节点上执行该步骤时该过程失败。

  • 当使用以下 groovy 脚本检查de.hybris.platform.processengine.definition.ProcessDefinitionsCache时,我发现该特定服务器上的缓存为空。

      import de.hybris.platform.processengine.definition.ProcessDefinitionsCache;
      导入de.hybris.platform.core.Registry;
    
      ProcessDefinitionsCache c = Registry.getApplicationContext()。getBean(" processDefinitionsCache",ProcessDefinitionsCache.class);
    
      返回c.getAllIds();
    
      
  • 您可以使用 clear()方法清除并重建缓存(此后缓存不应再为空)。

      import de。  hybris.platform.processengine.definition.ProcessDefinitionsCache;
      导入de.hybris.platform.core.Registry;
    
      ProcessDefinitionsCache c = Registry.getApplicationContext()。getBean(" processDefinitionsCache",ProcessDefinitionsCache.class);
      c.clear();
     
    
      
  • 我仍然不知道为什么缓存首先是空的。 (看来,缓存是在 ProcessDefinitionResource bean加载之前初始化的。)

我希望这会有所帮助。

一周热门 更多>