我正在寻找解决以下要求的解决方案
-
在产品目录中,每个产品都应具有"预购库存"自定义属性,该属性在每个产品级别保存整数值。
-
成功完全添加到购物车后,该产品会将计数减少 1,并且仅允许用户将产品添加到购物车,直到值达到零。
-
当我们在密件抄送中看到该产品时,它应该显示该产品的最新计数。
我正在考虑将此自定义属性作为产品目录的一部分,但由于产品目录是版本存储库,因此直接从代码更新值而不是从 BCC 更新并不复杂。
是否有可能或更好的单独的非版本存储库来存储"预购库存"编号并将存储库映射到产品目录并在产品目录高级选项卡中显示最新计数?
谢谢
维韦克·辛格
实际上,从生产实例更新版本化的存储库项目是一种非常糟糕的做法,因此在我看来,您的建议是我能想象到的唯一可能的解决方案。您需要一个非版本化的持久存储库(我们称之为InventoryRepository(,其中包含跟踪产品库存的项目描述符(我们称之为stockLevel(。
但是,这种方法背后有一个陷阱。为了保证产品的库存水平是最新的,您必须禁用库存水平项目描述符上的缓存。这带来了数据库因更新而过载的风险,这可能会导致效率问题。
在我的一个项目中,我们通过将库存实现功能移动到另一个服务器实例(util(来解决这个问题 - 由异步 DMS 调用触发(其来源是客户的操作,例如将物品放入购物篮(。因此,生产实例只能从库存存储库读取库存水平,而不是更新它们。
这是一个巨大的性能改进,但生产实例仍然非常频繁地读取非缓存值。我们观察到,如果特定设备的库存水平非常高,则只需需要布尔信息(可用或不可用(,则无需检查其确切值。因此,我们引入了一个缓存的项目描述符,它将布尔属性(isHighlyAvailable(分配给产品ID。在特定产品的库存水平未降低到阈值(例如 100(之前,isHighlyAvailable设置为 true,生产实例依赖于其值。达到阈值后,将取消设置isHighlyAvailable(通过异步 DMS 消息(,从现在开始,生产实例在评估产品可用性时会考虑确切的、未缓存的库存水平值。