Mise à jour partielle de masse d'enregistrements de données MDM via l'API REST
Dans le Talend MDM, au lieu de mettre à jour les enregistrements de données un par un, il est possible de mettre à jour un ou plusieurs champs de plusieurs enregistrements de données appartenant à une même entité, en une fois.
Une interface REST MDM est disponible pour vous permettre d'effectuer la mise à jour partielle des enregistrements en une opération de masse via l'API REST.
Cet article s'applique à tous les produits Talend Platform avec MDM, versions 6.3.1 et supérieures.
API REST pour les mises à jour partielles de masse
Mise à jour partielle de nombreux enregistrements appartenant à une entité, en une opération de masse.
Notez que l'opération partielle de masse n'invoque pas de processus Before-Saving.
Requête
PATCH /services/rest/data/{containerName}/{entity}/bulk
URL de la requête
http://{serverurl}/talendmdm/services/rest/data/{containerName}/{entity}/bulk
Paramètres de la requête
- containerName : valeur String qui spécifie le nom du conteneur de données dans lequel vous souhaitez effectuer la mise à jour partielle de masse.
- entity : valeur String qui représente l'entité sur laquelle effectuer la mise à jour partielle de masse.
- updateReport : valeur booléenne qui contrôle la création d'une entrée dans le journal (rapport de mise à jour). Par défaut, la valeur est True.
En-têtes
- Content-Type : application/xml
- Authorization : schéma d'authentification basique (Basic)
Corps de la requête
Représentation XML des enregistrements qui seront utilisés pour mettre à jour partiellement les enregistrements de données existants.
Chaque enregistrement contient :
- Un ou plusieurs champs de clé primaires avec des valeurs, obligatoires car elles seront utilisées pour spécifier l'enregistrement à mettre à jour.
- Un nombre arbitraire d'autres champs, avec des valeurs qui seront utilisées pour mettre à jour les champs existants.
Exemple :
<records>
<Product>
<Id>1</Id>
<Name>New Name</Name>
<Price>30</Price>
</Product>
<Product>
<Id>2</Id>
<Name>New Name2</Name>
</Product>
</records>
Corps de la réponse
Aucun contenu.
Code de la réponse
-
200 OK
: indique que tous les enregistrements spécifiés ont bien été mis à jour. -
403 FORBIDDEN
: indique que les utilisateurs et utilisatrices n'ont pas les droits d'accès en lecture ou en écriture au conteneur ou à l'entité spécifié(e). -
400 Bad Request
: indique que l'opération de mise à jour partielle de masse a échoué. Les causes peuvent être les suivantes :- Le nom du conteneur spécifié dans l'URL de la requête est différent de celui de l'entité fournie dans le corps de la requête.
- Il n'y a pas de champ de clé primaire dans le corps de la requête.
- Il n'y a pas de valeur de clé primaire dans le corps de la requête.
- Un ou plusieurs enregistrements spécifiés dans le corps de la requête n'existent pas.
- La valeur est manquante pour un ou plusieurs champs obligatoires dans le corps de la requête.
- Des enregistrements de données invalides existent dans le corps de la requête.
Exemples : Mise à jour partielle de champs de type simple ou de champs multi-occurrence de différents enregistrements de données via l'API REST
Dans ces exemples, les enregistrements de données à mettre à jour appartiennent à l'entité Product du modèle de données Product, dans le projet démo MDM, comme affiché ci-dessous.
<Product>
<Id>1</Id>
<Name>Book</Name>
<Description>Harry</Description>
<Features>
<Sizes/>
<Colors/>
</Features>
<Price>10.00</Price>
<Stores/>
</Product>
<Product>
<Id>2</Id>
<Name>Book</Name>
<Description>Harry Potter</Description>
<Features>
<Sizes/>
<Colors/>
</Features>
<Price>20.00</Price>
<Stores/>
</Product>
<Product>
<Id>3</Id>
<Name>Book</Name>
<Description>Harry Potter Series</Description>
<Features>
<Sizes>
<Size>Large</Size>
<Size>X-Large</Size>
</Sizes>
<Colors>
<Color>Light Pink</Color>
</Colors>
</Features>
<Price>30.00</Price>
<Stores/>
</Product>
Avant d'effectuer une mise à jour partielle, vérifiez que :
- Le Talend MDM Server est en cours de fonctionnement.
- Le projet démo MDM a bien été importé et déployé sur le Talend MDM Server.
- Les enregistrements de données mentionnés ci-dessus existent déjà.
Mise à jour partielle de champs de type simple de différents enregistrements de données
Corps de la requête
Pour mettre à jour les valeurs les champs de type simple (Name, Description et Price dans cet exemple) dans les trois enregistrements de données Product, vous devez envoyer les informations de mise à jour suivantes dans le corps de la requête :
<records>
<Product>
<Id>1</Id>
<Name>The first book</Name>
<Description>Harry Potter and the Philosopher’s Stone</Description>
<Price>111</Price>
</Product>
<Product>
<Id>2</Id>
<Name>The second book</Name>
<Description>Harry Potter and the Chamber of Secrets</Description>
<Price>222</Price>
</Product>
<Product>
<Id>3</Id>
<Name>The third book</Name>
<Description>Harry Potter and the Prisoner of Azkaban</Description>
<Price>333</Price>
</Product>
</records>
Résultats
Une fois la mise à jour partielle de masse terminée, les enregistrements mis à jour doivent ressembler à ceci :
<Product>
<Id>1</Id>
<Name>The first book</Name>
<Description>Harry Potter and the Philosopher’s Stone</Description>
<Features>
<Sizes/>
<Colors/>
</Features>
<Price>111.00</Price>
<Stores/>
</Product>
<Product>
<Id>2</Id>
<Name>The second book</Name>
<Description>Harry Potter and the Chamber of Secrets</Description>
<Features>
<Sizes/>
<Colors/>
</Features>
<Price>222.00</Price>
<Stores/>
</Product>
<Product>
<Id>3</Id>
<Name>The third book</Name>
<Description>Harry Potter and the Prisoner of Azkaban</Description>
<Features>
<Sizes>
<Size>Large</Size>
<Size>X-Large</Size>
</Sizes>
<Colors>
<Color>Light Pink</Color>
</Colors>
</Features>
<Price>333.00</Price>
<Stores/>
</Product>
Mise à jour partielle de champs multi-occurrence de différents enregistrements de données
Corps de la requête
Pour mettre à jour les valeurs des champs multi-occurrence (Size et Color dans cet exemple) dans deux enregistrements de données Product d'ID 1 et Id 2, envoyez les informations de mise à jour suivantes dans le corps de la requête :
<records>
<Product>
<Id>1</Id>
<Features>
<Sizes>
<Size>Small</Size>
<Size>Medium</Size>
</Sizes>
<Colors>
<Color>White</Color>
<Color>Light Blue</Color>
</Colors>
</Features>
</Product>
<Product>
<Id>2</Id>
<Features>
<Sizes>
<Size>Small</Size>
</Sizes>
<Colors>
<Color>Lemon</Color>
</Colors>
</Features>
</Product>
</records>
Résultats
Une fois la mise à jour partielle de masse terminée, les enregistrements mis à jour doivent ressembler à ceci :
<Product>
<Id>1</Id>
<Name>Book</Name>
<Description>Harry</Description>
<Features>
<Sizes>
<Size>Small</Size>
<Size>Medium</Size>
</Sizes>
<Colors>
<Color>White</Color>
<Color>Light Blue</Color>
</Colors>
</Features>
<Price>10.00</Price>
<Stores/>
</Product>
<Product>
<Id>2</Id>
<Name>Book</Name>
<Description>Harry Potter</Description>
<Features>
<Sizes>
<Size>Small</Size>
</Sizes>
<Colors>
<Color>Lemon</Color>
</Colors>
</Features>
<Price>20.00</Price>
<Stores/>
</Product>
Exemples : Suppression des valeurs d'un champ multi-occurrence via l'API REST
Dans ces exemples, les enregistrements de données suivants seront mis à jour :
<Company>
<CompanyId>DStar</CompanyId>
<Subsidiaries>S_Beijing</Subsidiaries>
<Subsidiaries>S_Shanghai</Subsidiaries>
<Branches>
<Office1>Large</Office1>
<Office2>Medium</Office2>
<Office3>Small</Office3>
</Branches>
</Company>
Suppression des valeurs d'un champ multi-occurrence de type simple
Corps de la requête
Pour effacer les valeurs d'un champ multi-occurrence de type simple (Subsidiaries dans cet exemple), dans l'enregistrement Company dont la valeur de CompanyId is DStar, envoyez les informations de mise à jour suivantes dans le corps de la requête :
<records>
<Company>
<CompanyId>DStar</CompanyId>
<Subsidiaries></Subsidiaries>
</Company>
</records>
Résultat
Une fois la mise à jour partielle de masse terminée, l'enregistrement mis à jour doit ressembler à ceci :
<Company>
<CompanyId>DStar</CompanyId>
<Branches>
<Office1>Large</Office1>
<Office2>Medium</Office2>
<Office3>Small</Office3>
</Branches>
</Company>
Suppression des valeurs d'un champ entier multi-occurrence de type complexe
Corps de la requête
Pour effacer les valeurs d'un champ multi-occurrence de type complexe (Branches dans cet exemple) dans l'enregistrement Company dont la valeur de CompanyId est DStar, envoyez les informations de mise à jour suivantes dans le corps de la requête :
<records>
<Company>
<CompanyId>DStar</CompanyId>
<Branches>
<Office1></Office1>
<Office2></Office2>
<Office3></Office3>
</Branches>
</Company>
</records>
Résultat
Une fois la mise à jour partielle de masse terminée, l'enregistrement mis à jour doit ressembler à ceci :
<Company>
<CompanyId>DStar</CompanyId>
<Subsidiaries>S_Beijing</Subsidiaries>
<Subsidiaries>S_Shanghai</Subsidiaries>
</Company>
Suppression de la valeur d'un élément spécifique dans un champ de type multi-occurrence de type complexe
Corps de la requête
Pour effacer la valeur d'un élément spécifique dans un champ multi-occurrence de type complexe (élément Office2 du champ Branches dans cet exemple) de l'enregistrement Company dont la valeur de CompanyId est DStar, envoyez les informations de mise à jour suivantes dans le corps de la requête :
<records>
<Company>
<CompanyId>DStar</CompanyId>
<Branches>
<Office2></Office2>
</Branches>
</Company>
</records>
Résultat
Une fois la mise à jour partielle de masse terminée, l'enregistrement mis à jour doit ressembler à ceci :
<Company>
<CompanyId>DStar</CompanyId>
<Subsidiaries>S_Beijing</Subsidiaries>
<Subsidiaries>S_Shanghai</Subsidiaries>
<Branches>
<Office1>Large</Office1>
<Office3>Small</Office3>
</Branches>
</Company>