Voici la deuxième partie de ce tutoriel sur l’utilisation de TOS (rappel : première partie sur la création des métadonnées). Maintenant que les connexions aux bases de données sont configurées, nous pouvons commencer à travailler.

Nous allons donc créer un job simple, dont le but est de nettoyer les articles qui ont été migrés sur WordPress. Par « nettoyer », j’entends par exemple « supprimer les acronymes » qui avaient été insérés dans les articles. Ceux-ci n’ont plus de raison d’être, puisqu’ils sont maintenant dynamiquement renseignés par le plugin « acronyms ».

Création du job

Nous créons un nouveau job « NettoyageAconymes », sans oublier de renseigner les informations complémentaires (objectif et description du traitement).

Dans les métadonnées précédemment créées, nous trouvons dans la connexion à la base WordPress la table des posts, « wp_posts » qui nous intéresse. Nous allons donc la faire glisser deux fois vers le job. Une fois pour créer un composant tMysqlInput, et une fois pour créer un composant tMysqlOutput : le premier va nous permettre de lire le contenu de la table, le deuxième de la mettre à jour avec les données corrigées.

A ce stade, le job ressemble donc à ceci :

Début du job de nettoyage des acronymes

Début du job de nettoyage des acronymes

Modification du schéma des composants

Si nous observons le schéma de ces composants, nous nous apercevons qu’ils contiennent chacun 23 colonnes de données (correspondant à la structure de la table correspondante). Parmi celles-ci, seules trois d’entre elles nous intéressent. Nous allons donc éditer le schéma (bouton du même nom dans l’onglet de configuration du composant) de ces composants, pour en supprimer les données superflues, et ne garder que « ID », « post_excerpt », et « post_content ». Pour cela, on passe en mode « Built-In » :

Schéma de la table wp_posts

Schéma de la table wp_posts

A la suite de ça, il nous faut régénérer la requête de lecture du composant tMysqlInput. Par chance, l’outil nous simplifie la tâche et il suffit de cliquer sur le bouton « Guess Query » pour que cela soit fait automatiquement.

Cette opération est intéressante pour les tables à forte volumétrie, car elle limite le nombre de données qui transitent entre la base et le programme, accélérant ainsi le traitement (même si dans notre exemple, cette modification sera non significative).

Remarque : cette opération « déconnecte » le composant de la métadonnée correspondante. TOS ne permet malheureusement pas pour le moment de garder ce lien lorsqu’on réduit le nombre de champs de la requête. Concrètement, cela signifie que si la métadonnée évolue (changement de la structure de la table), cela ne sera pas répercuté automatiquement. C’est donc un point auquel il faut faire attention.

Configuration du traitement de nettoyage

Les composants de lecture/écriture étant positionnés sur le job, il nous reste à mettre en place le traitement proprement dit. Cela consiste dans la plupart des cas à trouver le composant correspondant parmi la liste de ceux qui sont disponibles dans la palette. Dans notre cas, nous voulons rechercher/remplacer du texte dans un champ : le composant tReplace paraît donc tout indiqué.

On le place donc dans le job, en le connectant en entrée au tMysqlInput et en sortie au tMysqlOutput.

Il ne reste plus qu’à configurer le traitement, dans  :

  • la balise de fin, « </acronym> », est facile à détecter : dans la partie « Mode simple » du composant, on la remplace par «  » dans les champs « post_content » et « post_excerpt » (en supprimant le mode « Tout le mot »).
  • la balise de début, en revanche, est un peu plus complexe à supprimer, car elle contient un paramètre qui varie en fonction de l’acronyme. Pour résoudre ce problème, nous allons utiliser le « Mode avancé » du composant, permettant de trouver une expression régulière et non plus un simple texte. Il ne reste plus qu’à trouver la bonne expression :
"<acronym\\s+title=\"[^\"]+\"\\s*>"

Je passe rapidement sur cette expression (qui n’est pas déterminante pour cet article). Pour la comprendre, il existe sur internet de nombreux tutoriels sur les expressions régulières, dont un sur developpez.com.

Voilà le résultat :

Job de suppression des acronymes finalisé

Job de suppression des acronymes finalisé

Configuration de la mise à jour des données

Il ne reste plus qu’une toute petite manipulation à effectuer. Par défaut, TOS considère qu’on travaille en « insertion de données ». Dans notre cas, nous corrigeons des données existantes. Il faut donc configurer le composant d’écriture (tMysqlOutput), en lui indiquant que « l’action sur les données » est une mise à jour.

Conclusion

Il ne reste plus qu’à vérifier le bon fonctionnement du traitement sur la base de données de tests, en lançant ce job depuis le studio de développement. Une fois cette vérification effectuée, on exporte les scripts du job, afin de l’exécuter sur le serveur de production (après avoir configuré les variables de contexte… et, règle numéro 1 de l’informatique : effectué une sauvegarde de la base !).

Si j’exclue la durée des captures d’écran nécessaires à ce tutoriel, il m’a fallu moins d’un quart d’heure pour réaliser l’ensemble de ce traitement. En comptant très large, mettons qu’il m’aura fallu trois quarts d’heure en tout (export des scripts, déplacement du job sur mon serveur, configuration du job et exécution en production compris) pour corriger mes données.

J’espère que ce petit exemple tout simple vous permettra de comprendre comment TOS permet à des développeurs informatiques d’économiser du temps au quotidien, dès lors qu’il est question de manipuler des données…

Question subsidiaire : combien de temps cela m’aurait-il pris de faire cette vérification/nettoyage manuellement, ou en redéveloppant un programme « from scratch », sachant que mon blog ne contient qu’un peu plus de 60 articles ?

Etape suivante : contrôler la qualité des données suite à cette correction, en vérifiant qu’on n’a pas oublié certains acronymes dans ce nouveau blog.