我正在寻找解决以下问题的解决方案。
在“产品目录”中,每个产品都应该具有“预购库存”自定义属性,该属性在每个产品级别上保存整数值。在“成功添加到购物车”时,“成功添加到购物车”中的
。
我想把这个自定义属性作为产品目录的一部分,但是由于产品目录是版本存储库,所以直接从代码更新值而不是从BCC更新值并不复杂。
是否有可能或好有单独的非版本存储库存储“预订购库存”编号和映射存储库到产品目录,并显示最新的计数在产品目录高级选项卡?
谢谢
维维克·辛格
发布于 2020-02-21 23:51:24
实际上,从生产实例中更新版本存储库项是一个非常糟糕的实践,因此在我看来,您的建议是我所能想到的唯一可能的解决方案。您需要一个非版本化的持久存储库(让我们称它为InventoryRepository),其中包含项目描述符(让我们称之为stockLevel),以跟踪产品库存。
然而,在这种方法的背后仍然存在一个陷阱。为了保证产品的库存级别是最新的,您必须禁用stockLevel项描述符上的缓存。这给数据库带来了更新超载的风险,这可能会导致效率问题。
在我的一个项目中,我们通过将库存实现功能转移到另一个服务器实例(util)来解决这个问题--由异步DMS调用(其源是客户的操作,比如将项目放入篮)触发。由于这一点,生产实例仅仅是从InventoryRepository,读取库存级别的,而不是更新。
这是一个巨大的性能改进,但是生产实例仍然非常频繁地读取非缓存的值。我们观察到,如果某个设备的库存级别非常高,那么如果只需要布尔信息(不管是否可用),就不需要检查它的确切值。因此,我们引入了一个缓存的项描述符,它将布尔属性(isHighlyAvailable)分配给产品id。在特定产品的库存级别没有降到阈值(例如100)之前,isHighlyAvailable被设置为true,生产实例依赖于它的值。一旦达到阈值,isHighlyAvailable就会被取消设置(通过异步DMS消息),并且从现在开始,生产实例在评估产品可用性时会考虑到确切的、非缓存的stockLevel值。
https://stackoverflow.com/questions/59174090
复制相似问题