Hybris set/generate versionID 在哪里获取命令?

Where does Hybris set/generate versionID for orders?

想知道是否有人可以告诉我 where/how Hybris 正在为修改等订单生成版本 ID

谢谢

订单 VersionID 是在 DefaultOrderHistoryService.createHistorySnapshot(OrderModel) 中使用 KeyGenerator

生成的

在取消订单、return或更换订单的情况下,将版本 ID 分配给订单。

对服务的完整引用; de.hybris.platform.orderhistory.impl.DefaultOrderHistoryService

维护订单历史记录和订单版本控制的目的是跟踪应用于订单的更改,这有助于客户服务代理查看特定订单的实际情况。

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);

由于快照也像订单一样驻留在同一个 table 中,要获取所有原始订单,您还需要在获取订单时应用 {versionID} IS NULL 条件。