Développer un plugin pour MySQL Workbench
MySQL Workbench est un logiciel de modélisation de bases de données pour MySQL. Successeur du feu DB Designer, il offre une ergonomie d'utilisation, une stabilité et un éventail de fonctionnalité très étendu :
- Modélisation des tables et des relations spécifiquement pour MySQL,
- Génération des scripts SQL et de la base de données MySQL,
- Création des diagrammes à partir d'une base MySQL existante ou d'un script SQL.
Mais pour un projet contenant de nombreuses tables, il est parfois nécessaire d'effectuer des traitements automatiques sur celles-ci. MySQL Workbench est un logiciel "programmable", c'est-à-dire qu'il est possible de développer des script/plugins pour automatiser certaines tâches telles que :
- génération de code (comme le schema.yml de Doctrine),
- création de documentation,
- modifications du schéma ...
Le langage de programmation est LUA, celui-ci a une syntaxe proche de python, quelques exemples de code sont disponibles sur le wiki de MySQL.
Cet article a été écrit en utilisant MySQL Workbench 5.2 OSS.
1. Exécuter des commandes LUA dans la console GRT
MySQL Workbench propose une console pour la saisie de commandes simples. Pour la l'afficher depuis le menu :
View>Advenced>GRT Shell ou au clavier CTRL+F3.
Vous pouvez essayer avec la commande suivante pour afficher le contenu du catalogue :
print(grtV.getGlobal("/wb/doc/physicalModels/0/catalog"))
2. Créer un script LUA et l'exécuter
Maintenant que nous savons exécuter des commandes simples, nous allons apprendre à créer un script LUA. Pour cela, il faut afficher l'explorateur de scripts en cliquant sur l'onglet GRT Shell dans la colonne de droite. Si cet onglet n'apparaît pas, cliquez sur l'icône noire Show GRT Schell IDE.
Cliquez sur l'icône New à gauche puis choisissez le type de fichier LUA Script File. Sous Windows, ceux-ci sont enregistré par défaut dans votre répertoire %APPDATA%\Roaming\MySQL\Workbench\scripts\
Essayez de coller ce qui suit dans l'éditeur de code qui apparait.
-- Affichage de toutes les tables du catalogue
catalog = grtV.getGlobal("/wb/doc/physicalModels/0/catalog")
for i=1, grtV.getn(catalog.schemata) do
print("Schema: " .. catalog.schemata[i].name .. "\n")
for j=1, grtV.getn(catalog.schemata[i].tables) do
print(" " .. catalog.schemata[i].tables[j].name ..
" (" .. grtV.getn(catalog.schemata[i].tables[j].columns) .. " attributs)\n")
end
end
Enfin cliquez sur le bouton Execute et constatez le résultat. Vous pouvez modifier le code à votre convenance.
La fenêtre GRT Tree vous permet d'explorer l'arborescence des données de votre fichier MySQL Workbench pour vous aider au développement.
3. Créer un plugin/module
Pour créer un plugin sous MySQL Workbench sous Windows Vista ou Seven, il est nécessaire d'exécuter ce logiciel en tant qu'administrateur pour qu'il ait les droits en écriture sur le répertoire %PROGRAMS%\MySQL\MySQL Workbench 5.1 OSS\modules.
Un plugin se crée de la même manière qu'un script LUA, mais celui-doit contenir des fonctions supplémentaires décrivant sont fonctionnement au logiciel. Faites donc de même en choisissant LUA GRT Module File.
En choisissant l'un des deux templates, les fonctions de description du module sont pré-écrites. Votre plugin final sera architecturé comme décrit dans le schéma ci-dessous.
C'est à vous de jouer maintenant. Vous pouvez vous inspirer des quelques plugins présents par défaut dans MySQL Workbench.
Liens :
- Lua 5.1 Reference Manual
Référence complète du langage LUA - MySQL Workbench Plugins
Création et installation de plugins
Aucun trackbacks pour l'instant





2 janvier 2010 - 19:37
pour ceux que ça intéresse, il existe un plugin d’export Doctrine : http://code.google.com/p/mysql-workbench-doctrine-plugin/ avec gestion des Behaviours s’il vous plait
3 janvier 2010 - 11:17
Merci Eric, j’utilise aussi ce plugin très pratique lorsqu’on développe avec Symfony. L’utilisation du bloc de commentaire pour la gestion des behaviours est intéressant : http://code.google.com/p/mysql-workbench-doctrine-plugin/wiki/HowToAddDoctrineBehavioursToTheWorkbenchModel
9 février 2010 - 15:23
Merci beaucoup pour cet article intéressant.
Est-ce que vous utilisez aussi MySQL Workbench pour les schémas de localization i18n??
9 février 2010 - 16:45
@JB : Dans la derniere version du plugin d’export, il est possible de definir les actAs : http://code.google.com/p/mysql-workbench-doctrine-plugin/wiki/HowToAddDoctrineBehavioursToTheWorkbenchModel
15 février 2010 - 13:44
Merci Jérome !!