什么时候调用addItemToOrder管道?

时间:2015-07-07 16:54:27

标签: atg

在向购物车添加商品时,方法调用的高级流程为 -

handleAddItemToOrder() - > addItemToOrder() - > mergeItemInputForAdd() - > doAddItemToOrder - > runProcessRepriceOrder() - > runProcessAddItemToOrder()。

根据oracle文档,最后一个管道的chainId在CartModifierFormHandler.addItemToOrderChainId中定义。现在我对最后一个管道的执行几乎没有问题 -

  1. 这条管道做什么?文档中没有提供详细信息。
  2. 还有另一个组件PurchaseProcessHelper,它包含相同的方法runProcessAddItemToOrder()。这是将项目添加到购物车时调用的方法吗?如果是,那么控制如何流向此方法。
  3. 请帮助我低估这一点。 (请在CartModifierFromHandler和PurchaseProcessHelper的配置文件中提供相关的提升)

1 个答案:

答案 0 :(得分:1)

  
      
  1. 这条管道做什么?文档中没有提供详细信息。
  2.   

默认情况下没有,因为默认情况下CartModifierFormHandler.addItemToOrderChainId设置为null,因此不会运行任何管道。

转到local / dyn / admin,查看CartModifierFormHandler的服务配置。 (http://HOSTNAME:PORT/dyn/admin/nucleus/atg/commerce/order/purchase/CartModifierFormHandler/?propertyName=serviceConfiguration)您会在此处看到addItemToOrderChainId的属性值已被注释掉:

#addItemToOrderChainId=addItemToOrder

为什么它被注释掉了?看看PipelineManager

<!-- These items are commented out because by default we do not need to run any chains <pipelinechain name="addItemToOrder" transaction="TX_REQUIRED" headlink="???"></pipelinechain><pipelinechain name="setOrder" transaction="TX_REQUIRED" headlink="???"></pipelinechain> -->

默认情况下,没有链可以运行,但是对于某些实现,您可能会这样做,或者您可能只想自定义CartModifierFormHandler服务的组件类。

  
      
  1. 还有另一个组件PurchaseProcessHelper,它包含相同的方法runProcessAddItemToOrder()。这是将项目添加到购物车时调用的方法吗?如果是,那么控制如何流向此方法。
  2.   

再一次,默认情况下,此方法不会调用管道链,因为PurchaseProcessHelper.addItemToOrderChainId已设置为null。该方法何时被调用? CartModifierFormHandler未向订单添加商品。我相信它只是一种方便的方法,可供其他需要将项目添加到购物车的表单处理程序使用。