java - Broadleaf Commerce - 我的工作流程 Activity 被执行两次

标签 java broadleaf-commerce

内置工作流 Activity 似乎被执行了两次。我正在测试结账工作流程,DecrementInventoryActivity 正在从 sku 中删除数量两次。

这是一个已知的错误还是我做错了什么?

我像这样创建了工作流程:

<!-- Checkout Workflow Configuration -->
<bean id="blCheckoutWorkflow" class="org.broadleafcommerce.core.workflow.SequenceProcessor">
   <property name="processContextFactory">
      <bean class="org.broadleafcommerce.core.checkout.service.workflow.CheckoutProcessContextFactory"/>
   </property>
   <property name="activities">
      <list>
         <bean p:order="6000" id="blDecrementInventoryActivity" class="org.broadleafcommerce.core.checkout.service.workflow.DecrementInventoryActivity">
            <property name="rollbackHandler" ref="blDecrementInventoryRollbackHandler" />
         </bean>
         <bean p:order="7000" id="blCompleteOrderActivity" class="org.broadleafcommerce.core.checkout.service.workflow.CompleteOrderActivity">
            <property name="rollbackHandler" ref="blCompleteOrderRollbackHandler" />
         </bean>
         <bean p:order="9999999" class="com.mycompany.workflow.checkout.NotifyExternalInventorySystem" />
      </list>
   </property>
   <property name="defaultErrorHandler">
      <bean class="org.broadleafcommerce.core.workflow.DefaultErrorHandler">
         <property name="unloggedExceptionClasses">
            <list>
               <value>org.broadleafcommerce.core.inventory.service.InventoryUnavailableException</value>
            </list>
         </property>
      </bean>
    </property>
</bean>

最佳答案

从 Broadleaf 4.0 开始,DecrementInventoryActivity 默认添加到 blCheckoutWorkflow 中。请参阅 3.1.10-4.0.0 迁移说明:http://www.broadleafcommerce.com/docs/core/4.0/migration-notes/3.1-to-4.0-migration/3.1.10-to-4.0-migration ,在“库存管理”部分。

这也适用于defaultErrorHandler,并且您可以删除blCompleteOrderActivity(它始终在框架中管理)。基本上,您的自定义 blCheckoutWorkflow bean 应更改为:

<bean id="blCheckoutWorkflow" class="org.broadleafcommerce.core.workflow.SequenceProcessor">
   <property name="activities">
      <list>
         <bean p:order="9999999" class="com.mycompany.workflow.checkout.NotifyExternalInventorySystem" />
      </list>
   </property>
</bean>

从 Broadleaf 3.0 开始,对 blCheckoutWorkflow bean 的任何修改都会经过 Broadleaf XML 合并处理(合并像 blCheckoutWorkflowactivities 列表这样的 bean id)。在您的情况下,由于 DecrementInventoryActivity 已在核心框架 XML 文件中定义,并且您的 blCheckoutWorkflow 定义与其合并,因此最终结果是 的 2 个实例减少库存 Activity

关于java - Broadleaf Commerce - 我的工作流程 Activity 被执行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41984707/

相关文章:

java - 如何在 BroadLeaf Commerce 框架中找到请求的 Controller 类

mysql - 阔叶商业 : Not able to setup

mysql - Broadleaf 演示应用程序帮助 tomcat 进行外部设置和 mysql 连接

java - Android/Java 与现在的时差 ISO 8601

java - App Engine 聊天应用程序

java - 从 Broadleaf 框架社区连接到 MySQL

java - Broadleaf - 创建动态产品异常(exception)

java - 请为基于动态表单的 Web 应用程序推荐一个好的框架

java - Hibernate从数据库读取数据时出错

java - Java中的未知编译器错误,我认为这是一个范围问题