想知道是否有人可以告诉我Hybris在修改订单时为哪些/如何生成版本ID
由于
答案 0 :(得分:3)
使用DefaultOrderHistoryService.createHistorySnapshot(OrderModel)
KeyGenerator
生成订单 VersionID
如果订单取消,退货或更换,则会将versionID分配给订单。
对服务的完整参考; de.hybris.platform.orderhistory.impl.DefaultOrderHistoryService
答案 1 :(得分:0)
维护订单历史记录和订单版本控制的目的是跟踪应用于订单的更改,以帮助客户服务代理查看特定订单的实际情况。
OrderHistoryEntry 用于存储订单处理的历史信息。这不会创建原始订单的新版本,但可以引用订单状态快照。
OrderHistoryEntryModel entry = modelService.create(OrderHistoryEntryModel.class);
entry.setTimestamp(new Date());
entry.setOrder(processedOrder);
entry.setDescription("fraud check manually passed");
entry.setEmployee( (EmployeeModel)userService.getCurrentUser() );
要将先前的订单状态保留为历史信息,需要在更改订单之前创建订单的快照。这将创建原始订单的新版本。每个快照都包含特定的版本ID。
OrderHistoryService historyService = ..
// create snapshot - not persisted yet !
OrderModel snapshot = historyService.createHistorySnapshot(processedOrder);
该服务将生成原始订单的深层副本。
现在我们也可以在OrderHistoryEntryModel中保存这个快照。
entry.setPreviousOrderVersion(snapshot);
我们需要手动保存快照
// persist snapshot manually - this is necessary due to historical reasons
historyService.saveHistorySnapshot(snapshot);
由于快照也类似于订单并且位于同一个表中,因此要获取所有原始订单,您还需要在获取订单时应用{versionID} IS NULL
条件。