如何获取atg中特定订单Id的存储库项



我有任务获取特定订单id的存储库项目("它像运输组和支付组详细信息"),现在我在一个对象中获得了所有存储库项目。

但问题是我不知道如何从这个对象中获取这些存储库项(shipping group和payment group)

This my code I have try .

 Repository connection;
 connection=/atg/commerce/order/OrderRepository-->this i putted in my property file 
 Repository repository = (Repository)getConnection();
 RepositoryItem Item = (RepositoryItem)   
 Repository.getItem(getOrderId());

在这个"repositoryItem"对象中,我有所有的存储库项,所以我必须从这个对象中获取所有的shipping group和payment group .

请帮帮我。

Thanks in Advance.

对于订单,当您的起点是orderId时,有两种方法可以到达ShippingGroupPaymentGroup

让我们从Repository方式开始:

RepositoryItem order = getConnection().getItem(getOrderId(), "order"); //The getConnection().getItem(getOrderId()) method is deprecated. Make sure you pass the itemDescriptor in with your query
List<RepositoryItem> shippingGroups = (List<RepositoryItem>) order.getPropertyValue("shippingGroups");
List<RepositoryItem> paymentGroups = (List<RepositoryItem>) order.getPropertyValue("paymentGroups");

然而,对于某些对象,ATG提供了一些辅助方法来简化操作。因此,使用开箱即用的OrderManager,代码可能会使事情变得更容易:

Order order = getOrderManager().loadOrder(getOrderId());
List<ShippingGroup> shippingGroups = order.getShippingGroups();
List<PaymentGroup> paymentGroups = order.getPaymentGroups();

您现在可以更容易地访问航运组和付款组中的大多数内容。请记住,您的存储库定制不会在这些类中自动公开,您必须扩展OrderOrderImpl类才能做到这一点(ShippingGroupPaymentGroup也是如此)。

ATG表示两个不同级别的订单—作为存储库项(因此在数据库中)和作为订单对象。

强烈建议您在对象级别而不是存储库级别与订单交互。

OrderManager组件提供了按id加载订单所需的API。

Order order = orderManager.loadOrder(orderId);

其中orderManager是保存对/atg/commerce/order/OrderManager Nucleus组件的引用的变量。

该API隐藏了从存储库加载订单及其相关数据实体所需的所有代码。

相关内容

  • 没有找到相关文章

最新更新