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条回答
SKY徐
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())
  }
  

一周热门 更多>