オンラインストアにデータをインポートするためのアルゴリズム

実装
次の画像は、CatalogLoaderからOpenCartへの標準のアンロードダイアログを示しています。

OpenCartの標準オプション:
-商品を無効にします(「消えた」商品を無効にする機能を決定します)。
-更新する必要のない記事のプレフィックス。
-データベースプレフィックス。
-Catalogloader_handler.phpファイルへのパス。
-ファイルdelete_cache.phpへのパス(OpenCartで一般的)。
ユーザーに提供される標準のインポートモジュールには、アルゴリズムで使用可能なパラメーターセット全体が含まれていないことに注意してください。 これは、インターフェイスが煩雑にならないように、またユーザーに追加の質問がないように、意図的に行われます。 これらのパラメーターは、大部分のプロジェクトに十分です。 そして、パーツのみが特別なモードで利用可能な特別なパラメーターを必要とします。
次の画像は、1C-Exchangeプロトコルを介した標準のBitrixアップロードダイアログを示しています。

機能:
-1C-Exchangeプロトコルのサポート。
-デバッグモードのサポート。 多くの場合、このモードはBitrixへの唯一のインポートオプションです。
アルゴリズムの原理
アルゴリズムの原理は、次の考え方に基づいています。 アルゴリズムの入力は、オンラインストアの新しい状態を持つローカルデータベースです(このKLPデータベースと呼びます)。 つまり インポートプロセスが完了すると、KLPデータベースは必要なCMSデータベースに「流れ」ます。 一部の機能を使用するかどうかにかかわらず、完全にまたはそうではありません-ユーザーが定義するデータインポートプロセス自体の設定に既に依存しています。
以下は、インテグレーターおよび開発者が関心を持つ技術情報です。データのインポートプロセスに影響するパラメーターです。
CmsEngine文字列変数[デフォルト( "")]
オンラインストアのCMSを定義します。 可能な値:bitrix、commerceml、magento、insales、prestashop、vamshop、opencart、hostcms、shopcms、shopscript、virtuemart、joomshoping、simplaなど
ModeIsDisable boolean [デフォルト値(false)]
KLPデータベースにない商品を無効にするモードが含まれています。
DbPrefix文字列変数[デフォルト値( "")]
オンラインストアデータベースプレフィックスを定義します。
HttpTunnelLink文字列変数[デフォルト( "")]
CatalogLoaderとオンラインストア間のデータ転送インターフェイスとして機能するリンクを定義します。
可能なオプション:CatalogLoader_hanpler.phpスクリプトへのリンク、CommerceMLプロトコル経由で送信するための1c_exchange.phpスクリプトへのリンク。
HttpTunnelDelay数値変数[デフォルト値(0)]
HttpTunnelLinkで定義されたインターフェイスに送信されるリクエスト間の遅延を定義します。 これは、サイトが弱いホスティングにあり、CatalogLoaderによるアクティブなアクション(頻繁な呼び出し)がサイトを停止する場合(CPU制限など)に必要です。
HttpImageWebDownloaderLink文字列変数[デフォルト値( "")]
オンラインストアホスティングの画像アップロードスクリプトへのリンクを定義します。
Bitrixなどのcmsの場合、インソールは必要ありません。
HttpImageWebDownloaderLinkSaveToFile boolean [デフォルト値(false)]
HttpImageWebDownloaderLinkで定義されたインターフェイスを使用して画像を読み込むことを禁止し、このインターフェイスを呼び出すためのすべてのパラメーターを、CatalogLoaderプログラムでディレクトリ内のファイルに保存します。 これは、将来イメージのロードを延期する必要がある場合に必要です。
SqlConnectionString文字列変数[デフォルト( "")]
オンラインストアデータベースの接続文字列変数を定義します。 これにより、データのダウンロード速度が大幅に向上します。
文字列変数ShopUser [デフォルト値( "")]
ターゲットオンラインストアでの特定のユーザーログイン(通常は管理者)。
利用可能:1c交換モードのbitrix、インセールス。
ShopPassword文字列変数[デフォルト( "")]
ターゲットオンラインストアの特定のユーザーパスワード(通常は管理者)。
利用可能:1c交換モードのbitrix、インセールス。
CategoryNameForImportAll文字列変数[デフォルト( "")]
オンラインストアのすべての「新しい」製品が定義されるカテゴリを定義します。 すべての新製品を「新製品」カテゴリにインポートすることが必要な場合があり、古い製品は単に更新されます。
注:bitrix、commercemlでは機能しません。
PriceUpdate boolean [デフォルト値(true)]
製品の価格がCatalogLoaderによって変更されない製品更新機能の動作を定義します。 これは、サイト管理者が商品の価格を個別に設定する場合に必要です。
MissedProductIsDisabledブール値[デフォルト値(true)]
製品の非アクティブ化モードを定義します。 値がtrueの場合、製品の非アクティブ化は実際の非アクティブ化を意味し(製品はデータベースに残り、非アクティブとしてマークされます)、そうでない場合、製品はCatalogLoaderソフトウェアストアから削除されます。 (理解しないでください)
MissedProductProcessブール値[デフォルト(true)]
製品の非アクティブ化機能の動作を定義します。 値が「true」の場合、オンラインストアのデータベースに存在し、KLPファイルにない商品は無効化されます。そうでない場合、商品を無効化する機能は存在しない商品には適用されません。
ブール変数MissedCombinationIsDisabled [デフォルト値(true)]
製品の組み合わせを非アクティブ化する機能の動作を定義します。 値が「true」の場合、オンラインストアのデータベースに存在し、KLPファイルにない製品の組み合わせは非アクティブ化されます。そうでない場合は、データベースから削除する必要があります。
CustomParameters文字列変数[デフォルト(“”)]
特定のCMSに固有のパラメーターが決定されます。 たとえば、prestashopの場合、このパラメーターの値はid_lang = 7です。これは、商品のテキストデータをオンラインストアの言語7にインポートする必要があることを意味します。
CallUrlOnStart文字列変数[デフォルト値(“”)]
インポートプロセスを開始する前に、CatalogLoaderソフトウェア(get request)から呼び出されるhttpリンクを定義します。 一般的にデータベースのバックアップに使用されます。
CallUrlOnFinish文字列変数[デフォルト値(“”)]
インポートプロセスが完了した後、CatalogLoaderソフトウェア(get request)から呼び出されるhttpリンクを定義します。 通常、キャッシュをクリアするか、データベースのバックアップコピーを作成するために使用されます。
ProductsUpdateSkip boolean [デフォルト値(false)]
製品更新機能の動作を定義します。 falseに設定すると、更新機能が製品に適用されますが、そうでない場合は適用されません。
CustomerProductSkuTemplate文字列変数[デフォルト値(“”)]
テンプレート(正規表現)を定義します。テンプレートを使用すると、CatalogLoaderソフトウェアではなく、オンラインストアに手動で入力された製品を判別できます。 テンプレートが定義されている場合、商品番号がテンプレートに適合する商品は、「非アクティブ化」機能を適用する商品の選択から除外されます。
たとえば、CustomerProductSkuTemplate = CUS_
ImagesUpdate boolean [デフォルト(false)]
画像更新機能の動作を定義します。 値が「false」の場合、画像は更新されません。それ以外の場合は完全に更新されますが、処理された製品のすべての画像は事前に自動的に削除されます。 通常、以前の更新の繰り返しで写真の品質が高くない場合、このパラメーターを一度「true」に設定する必要があります。
ImagesUpdateMissedブール値[デフォルト値(false)]
画像更新機能の動作を定義します。 値がfalseの場合、画像は更新されません。それ以外の場合は、追加モードで更新されます。 最初に、プログラムは製品にすでにある画像を決定し、その後にのみ、必要な「新しい」画像を製品に追加します。 通常、このパラメーターは、以前の更新の繰り返しで低品質の写真をアップロードする場合、「true」に1回設定する必要があります。
対象:prestashop。
MiminumProductsCountInSet数値変数[デフォルト値(0)]
商品の最小数量を定義します。 パラメーター値がゼロより大きい場合、処理されたKLPファイル内のパラメーターが決定したよりも少ない商品がある場合、CatalogLoaderソフトウェアは商品のインポートプロセスを開始しません。
もちろん、多くのニュアンスが存在するすべての場所で、アルゴリズムのすべてのパラメーターをサポートすることは、CMSごとに常にではなく、必ずしもそうではありません。 これは、交換プロトコル、データベースのアーキテクチャ、またはCMS実装の機能が原因である可能性があります。 提示されたアプローチにより、オンラインストアにデータをインポートするプロセスを非常に柔軟にカスタマイズでき、最大数十万のポジションまでの大量のデータに対応できます。
このアプローチは、次のCMSにデータをインポートするために実装されました。

ニコライ・ケキシュ、
CatalogLoaderのディレクター