Import XML Suppression

Bonjour,

J’aimerais lors de l’import en xml supprimer toutes les valeurs du PlateformNode pour ensuite ajouter les miennes. J’ai déjà vu avec le if=existes sur l’action tag néanmoins ça me force à mettre en dur toutes les plateformesNodes.

Donc est ce qu’il y a un moyen de toutes les delete lors de l’import?

Merci d’avance

Bonjour,

Pouvez-vous nous en dire un peu plus sur votre besoin / process ?
De quel import parlez-vous et pour quelles raisons souhaitez vous supprimer toutes les valeurs de PlatformNode ?

Merci

Bonjour,

Je vous parle de cet import :

L’objectif est de réappliquer une configuration spécifique à un environnement à la suite d’un dump.

Qu’est-ce que vous importez exactement via cette vue ? Est-ce que vous utilisez un adapteur spécifique ?

Nous importons :

Sauf qu’étant donné que nous plaquons un dump sur notre conso il reste encore les restes de configuration de la PROD donc nous souhaitons supprimer tous les PlatformNode de la PROD lorsque nous importons le fichier de conf de la conso.

Pour mettre à jour / supprimer des éléments via import XML il faut forcément fournir la clé fonctionnelle du record à modifier. En l’occurrence la clé fonctionnelle de PlatformNode est son seul champ ptf_endpoint. Sans spécifier les différents éléments à supprimer, vous ne pourrez pas le faire via le fichier XML uniquement.

Je vous conseille donc de passer par un adapter spécifique qui hérite de SAXImportXML :

Vous pourrez y implémenter le hook preProcess par exemple :

public class MyCustomAdapter extends SAXImportXML {
	private static final long serialVersionUID = 1L;
	
	
	@Override
	public String preProcess() {
		ObjectDB platformNode = getGrant().getIsolatedObject("PlatformNode");
		platformNode.search().forEach(vals -> {
			platformNode.setValues(vals);
			platformNode.delete();
		});
		
		return super.preProcess();
	} 
	
}

Il faudra sélectionner cet adapter dans la liste déroulante “Utiliser l’adapteur” avant de faire l’import.

Bonjour,

L’import XML fonctionne bien pour notre besoin, nous modifions certains paramètres systèmes ainsi que les nœuds.
Vous me confirmez donc qu’il n’est pas possible, via un import XML classique, de supprimer un nœud sans en connaitre son nom ? Un peu comme cela :

PlatformNode delete *

La création d’un adapter me semble lourd simplement pour cette problématique.

Merci

Bonjour,

En standard il n’est pas possible de supprimer en masse des éléments de la base avec une syntaxe :

<object>
	<name>MyObject</name>
	<action>delete</action>
	<data>
		<objField>*</objField>
	</data>
</object>

Vous serez donc obligés de passer par une implémentation spécifique. Soit via un adapter comme spécifié plus haut, soit via l’appel d’une action associée à un objet dans le fichier XML importé :

<object>
	<name>MyObject</name>
	<action>MyCustomAction</action>
    <data></data>
</object>

PlatformNode étant un objet Système, vous ne pourrez pas y ajouter du code spécifique.

1 Like

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.

Bonjour,

Pour information, une Action de purge des Nodes a été ajoutée en 6.3 : Release Note
Elle est également accessible via appel I/O : I/O services | Simplicité Documentation