0

以下の要件を解決するソリューションを探しています

  • 製品カタログでは、各製品には、各製品レベルで整数値を保持する「予約注文在庫」カスタム プロパティが必要です。

  • その製品をカートに完全に追加すると、カウントが 1 減少し、ユーザーは値がゼロになるまで製品をカートに追加できます。

  • BCC で製品を確認すると、その製品に対する最新のカウントが表示されます。

このカスタム プロパティを製品カタログの一部として使用することを考えていましたが、製品カタログはバージョン リポジトリであるため、BCC から更新する代わりにコードから直接値を更新するのは少し複雑です。

「予約注文在庫」番号を保存し、リポジトリを製品カタログにマップし、製品カタログの詳細タブに最新のカウントを表示するために、別のバージョン以外のリポジトリを用意することは可能ですか、それとも良いですか?

ありがとう

ビベック・シン

4

1 に答える 1

0

実際、本番インスタンスからバージョン管理されたリポジトリ アイテムを更新することは非常に悪い習慣であるため、私の意見では、あなたの提案が私が想像できる唯一の可能な解決策です。製品の在庫を追跡するアイテム記述子 ( stockLevelと呼びましょう) を含む、バージョン管理されていない永続的なリポジトリ ( InventoryRepositoryと呼びましょう) が必要です。

しかし、このアプローチには落とし穴があります。製品の在庫レベルが最新であることを保証するには、stockLevelアイテム記述子のキャッシュを無効にする必要があります。これにより、データベースが更新によって過負荷になるリスクが生じ、効率の問題が発生する可能性があります。

私のプロジェクトの 1 つで、在庫の実現機能を別のサーバー インスタンス (util) に移動することで、この問題を回避しました。これは、非同期 DMS 呼び出しによってトリガーされます (そのソースは、アイテムをバスケットに入れるなどの顧客のアクションでした)。そのおかげで、本番インスタンスはInventoryRepositoryから在庫レベルを読み取るだけで、更新はしていませんでした。

これはパフォーマンスの大幅な改善でしたが、本番インスタンスはまだキャッシュされていない値を非常に頻繁に読み取っていました。特定のデバイスの在庫レベルが非常に高い場合、ブール情報のみが必要な場合 (利用可能かどうか)、正確な値を確認する必要がないことがわかりました。そのため、製品 ID にブール値のプロパティ ( isHighlyAvailable ) を割り当てた、キャッシュされたアイテム記述子を導入しました。特定の製品の在庫レベルがしきい値 (たとえば 100) まで減らされるまで、isHighlyAvailableは true に設定され、実稼働インスタンスはその値に依存していました。しきい値に達すると、isHighlyAvailableは (非同期 DMS メッセージによって) 設定解除され、今後はキャッシュされていない正確なstockLevel製品の入手可能性を評価する際に、実稼働インスタンスによって値が考慮されました。

于 2020-02-21T23:51:24.103 に答える