カスタムIDジェネレーターを実装する

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

IDジェネレーターは、文字列の形式で一意の外部IDを受け取り、アイテムID (GUIDなど) として使用できる一意のIDを返します。デフォルトの実装は、MD5ハッシュアルゴリズムに基づいています。

メモ

Sitecore IDは一意である必要があり、IDジェネレーターからの出力はSitecore IDとして使用されるため、競合を避けるために、一意の外部IDには常に任意の固定文字列をプレフィックスとして付けることが重要です。たとえば、外部システムリポジトリ内の製造元のIDは、製品の範囲内で一意であっても、製品のIDと重複している場合があります。したがって、IDジェネレータへの入力は、それぞれManufacturer + ManufacturerIDとProducts + ProductIDの形式にする必要があります。

カスタムIDジェネレータを使用するには:

  1. 新しいID Generatorクラスを作成し、IIdGeneratorインターフェイスを実装します。

    インターフェイスには、次の2つのパラメーターを受け取る1つのStringToIDメソッドがあります。

    • 指定されたエンティティの外部IDの値を含む文字列。

    • 異なるエンティティに使用される同一の値間の競合を回避するための一意のプレフィックスを含む文字列。

      このメソッドは、外部エンティティを表すSitecoreの対応するアイテムに割り当てるために使用されるGUIDをresultとして返します。

    /// <summary>
    /// Defines interface for id generator.
    /// </summary>
    public interface IIdGenerator
    {
        /// <summary>
        /// String to Sitecore ID.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <param name="prefix">The prefix.</param>
        /// <returns>The generated ID</returns>
        [NotNull]
        ID StringToID([NotNull] string value, [NotNull] string prefix);
    }
  2. カスタムID GeneratorクラスをSitecore.Commerce.Products.configファイルに登録します。

    これを行うには、idGenerator要素のtype属性値をカスタムID Generatorタイプに変更します。

    <idGenerator type="Sitecore.Commerce.Data.Products.Md5IdGenerator, Sitecore.Commerce" singleInstance="true" />
    The default implementation is based on the MD5 hash algorithm provided in .NET. The source code is listed below:
    /// <summary>
    /// Defines default implementation of id generator.
    /// </summary>
    public class Md5IdGenerator : IIdGenerator
    {
        /// <summary>
        /// String to Sitecore ID.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <param name="prefix">The prefix.</param>
        /// <returns>The generated ID</returns>
    
        public ID StringToID(string value, string prefix)
        {
            Assert.ArgumentNotNull(value, "value");
            Assert.ArgumentNotNull(prefix, "prefix");
            // Create a new instance of the MD5CryptoServiceProvider object.
            var md5Hasher = MD5.Create();
            // Convert the input string to a byte array and compute the hash.
            var data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(prefix + value));
            return new ID(new Guid(data));
        }
    }
この記事を改善するための提案がある場合は、 お知らせください!