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

2020-08-22 20:12发布

         点击此处--->   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一旦启动,就必须始终在同一集群节点上运行?

感谢您提供任何信息

         点击此处--->   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
1楼 · 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加载之前初始化的。)

我希望这会有所帮助。

SC_Yao
2楼-- · 2020-08-22 20:37

嗨,我面临着同样的问题..我们使用的是Hybris版本6.7 ..此业务流程在我的本地环境中运行良好,但是当指向Qa时 db ..生成的流程模型随后启动了业务流程,但无法找到电子邮件流程..如果有人遇到相同的情况并解决了该问题,请告诉我这会有所帮助。 错误:de.hybris.platform.processengine.definition.NoSuchProcessDefinitionException:没有已知名为" rentalsCustomerRegistrationEmailProcess(VERSION:216139c498657dba1e1099298721f7cfd41aecba0ce94b3812994ae72aedf253)"的进程定义。

谢谢,湿婆

SKY徐
3楼-- · 2020-08-22 20:40
 这个普通的脚本将解决该问题。
  导入de.hybris.platform.orderprocessing.model.OrderProcessModel
  导入de.hybris.platform.processengine.BusinessProcessService
  导入de.hybris.platform.processengine.definition.ProcessDefinitionFactory
  导入de.hybris.platform.processengine.definition.ProcessDefinitionsCache
  导入de.hybris.platform.servicelayer.model.ModelService
  导入de.hybris.platform.servicelayer.search.FlexibleSearchService
  导入org.apache.commons.collections.CollectionUtils
 
  FlexibleSearchService flexibleSearchService = spring.getBean(" flexibleSearchService");
  ProcessDefinitionFactory processDefinitionFactory = spring.getBean(" processDefinitionFactory")
  ProcessDefinitionsCache processDefinitionsCache = spring.getBean(" processDefinitionsCache")
 
  if(CollectionUtils.isEmpty(processDefinitionsCache.getAllIds())){
      println(" processDefinitionsCache为空,正在初始化...。")
      processDefinitionsCache.loadInitialDefinitions()
      println processDefinitionsCache.getAllIds()
      println(processDefinitionFactory.getAllProcessDefinitionsNames())
  }其他{
      println(" processDefinitionsCache已初始化。")
      println(processDefinitionFactory.getAllProcessDefinitionsNames())
  }
  
Alawn_Xu
4楼-- · 2020-08-22 20:44

我已经更新了order-process.xml,构建并重新启动了服务器,然后我开始看到此错误:processNotfound。 因此,我按照以下步骤进行操作:如上所述,使用Groovy脚本清除缓存,然后将Groovy脚本运行到getAllIds(),该错误给出了一个错误:processNotfound。

Nan4612
5楼-- · 2020-08-22 20:39

不幸的是,本机异常是隐藏的,因此最终只能出现" NoSuchProcessDefinitionException"。 要找出问题所在,您可以使用script,像他一样清除定义,然后运行

  c.loadInitialDefinitions()

  

那应该给您描述真正的问题。 如果不是,请尝试对其进行调试。 将断点设置为

  de.hybris.platform.processengine.definition.DefaultProcessDefinitionFactory#getProcessDefinitions

  

,然后尝试再次加载InitialDefinitions()。

一周热门 更多>