Hybris在哪里为订单设置/生成versionID?

时间:2017-11-09 11:27:48

标签: hybris

想知道是否有人可以告诉我Hybris在修改订单时为哪些/如何生成版本ID

由于

2 个答案:

答案 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条件。