Exemple : Insertion et remplacement de listes de prix

L'utilitaire de chargement des données propose deux modes de chargement des listes de prix : insertion ou remplacement. Utilisez le mode insertion pour les nouvelles listes de prix. Utilisez le mode remplacement pour mettre à jour une liste de prix existante.

N'utilisez pas le mode insertion si une liste de prix avec le même nom ou le même uniqueId existe dans la base de données. Sous le mode remplacement, si le nom ou l'élément uniqueId de la liste de prix dans le fichier de chargement n'existe pas dans la base de données, la liste de prix concernée n'est pas remplacée. Sous le mode insertion, si une liste de prix avec le même nom ou le même uniqueId existe dans la base de données, l'enregistrement n'est pas inséré. Sous le mode remplacement, si une liste de prix du fichier de chargement n'existe pas dans la base de données, la liste de prix est insérée.

Cet exemple utilise un fichier CSV pour expliquer comment insérer, remplacer ou supprimer vos données. Vous pouvez aussi créer et utiliser un fichier au format XML pour insérer, remplacer ou supprimer vos données. Si vous choisissez de créer et d'utiliser un fichier au format XML, assurez-vous que vos éléments XML utilisent les mêmes noms que ceux des colonnes CSV.

Fichier CSV avec exemples de données de liste de prix

Le fichier CSV PriceListGroup.csv contient des exemples de données de liste de prix. La première ligne du fichier CSV peut également être composée de noms de colonnes, en fonction de l'attribut firstLineIsHeader du fichier de configuration de chargement des données de la liste de prix. firstLineIsHeader est un attribut de l'élément <_config:DataReader>.
firstLineIsHeader
true
Indique que la première ligne du fichier CSV sera traitée comme des données de nom de colonne et ne sera pas insérée dans la base de données.
false
Indique que la première ligne du fichier CSV contient des données devant être lues et insérées dans la base de données.
Fichier CSV mis en forme avec en-têtes de colonnes
Nom Description Priorité Type
Standard Price List (Liste de prix standard) Il s'agit de la liste de prix standard. 1 S
Holiday price list (Liste de prix période des fêtes) Il s'agit de la liste de prix pour la période des fêtes. 5 C
Legacy system price list (liste de prix de l'ancien système) Il s'agit de la liste de prix gérée par l'ancien système. 2 E
Overstock price list (liste de prix des articles en excédent de stock) Il s'agit de la liste des prix des articles en excédent de stock. 1 C

définitions de colonne CSV et d'élément XML

L'ordre des colonnes est défini dans le fichier de configuration de chargement des données de liste de prix. Reportez-vous à l'attribut number dans l'élément <_config:Data>.

UniqueID
(Facultatif, Chaîne) Identificateur de la liste de prix. Si le nom et l'élément uniqueID de la liste de prix sont tous deux fournis dans l'enregistrement CSV, l'utilitaire de chargement des données utilise l'élément uniqueID de la liste de prix. S'il existe un mappage de données pour la valeur UniqueID de liste de prix dans le fichier de configuration de chargement des données de liste de prix, la valeur uniqueID est requise dans le fichier CSV.
Nom
(Requis, chaîne) Nom de la liste de prix. Si le nom et l'élément uniqueID de la liste de prix sont tous deux fournis dans l'enregistrement CSV, l'utilitaire de chargement des données utilise l'élément uniqueID de la liste de prix.
Description
(Facultatif, chaîne) Description de la liste de prix.
Priorité
(Facultatif, double) Valeur qui détermine quelle liste de prix est prioritaire lorsque plusieurs listes de prix sont en vigueur simultanément. Le système utilise le conteneur de positions commerciales dont la valeur de priorité est la plus élevée. Si cette colonne a la valeur Null dans le fichier d'entrée, elle est définie à la valeur par défaut 0.0. La valeur est mappée à la colonne de base de données OFFER.PRECEDENCE.
Remarque : La valeur Precedence n'est pas utilisée avec les règles de tarification. Pour les règles de tarification, si vous voulez inclure plusieurs listes de prix dans une règle de tarification, vous devez utiliser des branches de condition dans l'outil Filtre de catalogue et tarification. Lorsque vous utilisez des branches de condition pour ajouter plusieurs listes de prix, les conditions déterminent la priorité des listes de prix. La valeur Precedence pour les listes de prix est ignorée. Si vous n'utilisez pas de règles de tarification alors que plusieurs listes de prix (conteneur de positions commerciales) s'appliquent, le système utilise la liste de prix dont la priorité est la plus élevée.
Type
(Facultatif, chaîne) Type de conteneur de positions commerciales :
S
(Valeur par défaut) Liste de prix standard contenant les prix de base des produits dans le catalogue du magasin.
C
Liste de prix personnalisée qui spécifie une liste de produits avec leurs prix personnalisés.
E
Liste de prix externe.
Les valeurs autres que S, C ou E sont considérées correspondre à des types personnalisés. Le type est inséré dans la table. Le médiateur n'impose pas de restriction quant à cette valeur.

Données de mappage

Le fragment suivant du fichier d'exemple de configuration illustre comment mapper chaque colonne de données dans le fichier CSV source à une valeur.

Figure 1. Mappage de données avec uniqueID
<_config:Data>
	<_config:column number="1" name="UniqueId" />
	<_config:column number="2" name="Name" />
	<_config:column number="3" name="Description" />
	<_config:column number="4" name="Precedence" />
	<_config:column number="5" name="Type" />
</_config:Data>

L'attribut number dans l'élément <_config:column> définit l'ordre des colonnes dans le fichier des enregistrements CSV. L'attribut name définit le nom de colonne utilisé dans l'élément <_config:DataMapping>.

Le fragment suivant mappe chaque valeur à un chemin de schéma logique d'objet métier.

<_config:DataMapping>
	<_config:mapping xpath="PriceListIdentifier/UniqueID" value="UniqueId" valueFrom="InputData" />
  <_config:mapping xpath="PriceListIdentifier/ExternalIdentifier/Name" value="Name" valueFrom="InputData" />
  <_config:mapping xpath="Description/value" value="Description" valueFrom="InputData" />
  <_config:mapping xpath="precedence" value="Precedence" valueFrom="InputData" />
  <_config:mapping xpath="type" value="Type" valueFrom="InputData" />
</_config:DataMapping> 

L'attribut value dans l'élément <_config:DataMapping> doit être cohérent avec l'attribut name de l'article correspondant dans l'élément <_config:column>. Les deux attributs sont sensibles à la casse.

Figure 2. Mappage de données sans uniqueID
<_config:DataSource>
	<_config:Data>
		<_config:column number="1" name="Name" />
		<_config:column number="2" name="Description" />
		<_config:column number="3" name="Precedence" />
		<_config:column number="4" name="Type" />
		</_config:Data>
</_config:DataSource>

L'attribut number dans l'élément <_config:column> définit l'ordre des colonnes dans le fichier des enregistrements CSV. L'attribut name définit le nom de colonne utilisé dans l'élément <_config:DataMapping>.

Le fragment suivant mappe chaque valeur à un chemin de schéma logique d'objet métier.


<_config:DataMapping>
	<_config:mapping xpath="PriceListIdentifier/ExternalIdentifier/Name" value="Name" valueFrom="InputData" />
	<_config:mapping xpath="Description/value" value="Description" valueFrom="InputData" />
	<_config:mapping xpath="precedence" value="Precedence" valueFrom="InputData" />
	<_config:mapping xpath="type" value="Sequence" valueFrom="InputData" />
</_config:DataMapping>

L'attribut value dans l'élément <_config:DataMapping> doit être cohérent avec l'attribut name de l'article correspondant dans l'élément <_config:column>. Les deux attributs sont sensibles à la casse.

Médiateur d'objet métier

Le nom de classe de médiateur est com.ibm.commerce.price.dataload.mediator.PriceRuleMediator. Le schéma logique correspondant est PriceRule.xsd. L'ID du composant est le suivant : com.ibm.commerce.price.

Remarque : Lorsque vous utilisez un médiateur qui est fourni avec HCL Commerce avec l'utilitaire de chargement des données, l'utilitaire suppose que vous chargez des données dans toutes les colonnes d'un objet métier. Si vous souhaitez mettre à jour les données dans des colonnes spécifiques seulement, configurez une liste d'exclusion de colonne pour le processus de chargement. Une liste d'exclusion de colonne amène l'utilitaire de chargement de données à ignorer des colonnes spécifiques au cours de l'opération de chargement. Si vous n'utilisez pas de liste d'exclusion de colonne, l'utilitaire met à jour toutes les colonnes dans la ligne d'une table base de données lorsque l'utilitaire met la ligne à jour. Si aucune valeur n'est définie dans le fichier d'entrée, l'utilitaire peut remplacer la valeur de colonne existante par une valeur par défaut ou définir que la valeur sera nulle. Pour plus d'informations, voir Configuration d'une liste d'exclusion de colonnes.