在向购物车添加商品时,方法调用的高级流程为 -
handleAddItemToOrder() - > addItemToOrder() - > mergeItemInputForAdd() - > doAddItemToOrder - > runProcessRepriceOrder() - > runProcessAddItemToOrder()。
根据oracle文档,最后一个管道的chainId在CartModifierFormHandler.addItemToOrderChainId中定义。现在我对最后一个管道的执行几乎没有问题 -
请帮助我低估这一点。 (请在CartModifierFromHandler和PurchaseProcessHelper的配置文件中提供相关的提升)
答案 0 :(得分:1)
- 这条管道做什么?文档中没有提供详细信息。
醇>
默认情况下没有,因为默认情况下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
服务的组件类。
- 还有另一个组件PurchaseProcessHelper,它包含相同的方法runProcessAddItemToOrder()。这是将项目添加到购物车时调用的方法吗?如果是,那么控制如何流向此方法。
醇>
再一次,默认情况下,此方法不会调用管道链,因为PurchaseProcessHelper.addItemToOrderChainId
已设置为null
。该方法何时被调用? CartModifierFormHandler
未向订单添加商品。我相信它只是一种方便的方法,可供其他需要将项目添加到购物车的表单处理程序使用。