<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Vincent Mazenod, aka mazenovi, aka voisin de gennetines &#187; modélisation</title>
	<atom:link href="http://blog.mazenod.fr/tag/modelisation/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mazenod.fr</link>
	<description>#ispcp #php #symfony #social_networking #cornemuse</description>
	<lastBuildDate>Wed, 23 Nov 2011 09:46:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>outils de modélisation pour symfony</title>
		<link>http://blog.mazenod.fr/2010/03/outils-de-modelisation-pour-symfony/</link>
		<comments>http://blog.mazenod.fr/2010/03/outils-de-modelisation-pour-symfony/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 10:14:18 +0000</pubDate>
		<dc:creator>mazenovi</dc:creator>
				<category><![CDATA[dev]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[modélisation]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://blog.mazenod.fr/?p=818</guid>
		<description><![CDATA[<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/03/mwb.png"><img class="alignleft" style="margin-left: 20px; margin-right: 20px;" title="mwb" src="http://blog.mazenod.fr/wp-content/uploads/2010/03/mwb-300x171.png" alt="" width="300" height="171" /></a>Quel développeur n'a pas rêvé de dessiner son application?</p>
<p>Avec les fonctionnalités CRUD d'un framework du type symfony reposant sur une ORM (que ce soit Propel ou Doctrine) et un bon outil de modélisation comme MySQL Workbench, il est possible de développer une approche RAD intéressante</p>
<div></div>
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.mazenod.fr%2F2010%2F03%2Foutils-de-modelisation-pour-symfony%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.mazenod.fr%2F2010%2F03%2Foutils-de-modelisation-pour-symfony%2F&amp;style=normal&amp;b=2" height="61" width="50" title="outils de modélisation pour symfony" alt=" outils de modélisation pour symfony" /><br />
			</a>
		</div>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/03/mwb.png" rel="lightbox[818]"></a><a href="http://www.symfony-project.org/">Symfony</a> à radicalement changer mon approche du développement PHP.</p>
<p>En effet l&#8217;approche <a href="http://fr.wikipedia.org/wiki/D%C3%A9veloppement_rapide_d%27applications">RAD</a> proposée par ce framework rend d&#8217;autant plus crucial le schéma de base de données, sur lequel est basé l&#8217;application. Ce schéma matérialisé par le fichier schema.yml (ou .xml si vous utilisez propel) est en quelque sorte la feuille de route du développeur agile.</p>
<p>Il est intéressant de remarquer qu&#8217;une modélisation graphique de ce schéma donne un point de vue (partiel certes) sur le système d&#8217;information que l&#8217;applicaiton sert &#8230;</p>
<p>Il ya déjà quelques temps déjà j&#8217;avais cherché à automatiser la modification du schéma géré par <a href="http://www.symfony-project.org/">symfony</a> via des outils graphiques (<a href="http://blog.mazenod.fr/2007/11/utiliser-dbdesigner-avec-l-i18n-de-symfony/">Utiliser DBDesigner avec l&#8217;i18n de symfony 1.0</a>)</p>
<p>Aujourd&#8217;hui je vous propose un petit tour d&#8217;horizon des solutions à votre disposition selon vos outils et votre orm préférés</p>
<h2>DbDesigner</h2>
<p>si vous utilisez propel</p>
<ul>
<li>Le plugin <a href="http://www.symfony-project.org/plugins/sfDB4toPropelPlugin/1_0_3">sfDB4toPropelPlugin</a> automatisera le processus de conversion du schéma sauvé par DbDesigner en un schema.yml (à la manière des scritps cités précédemment)</li>
</ul>
<p>si vous utilisez Doctrine</p>
<p>le plugin <a href="http://www.symfony-project.org/plugins/sfDbDesignerPlugin">sfDbDesignerPlugin</a> ne s&#8217;installe pas correctement via la commande symfony. En revanche en l&#8217;installant manuellement, i.e. en téléchargeant l&#8217;archive directement sur le site et en la décompressant dans /plugins/sfDbDesignerPlugin puis en activant le plugin dans /config/ProjectConfiguration.class.php</p>
<pre class="php:nogutter:nocontrols">&lt;?php

require_once dirname(__FILE__).'/..\lib\vendor\symfony\lib/autoload/sfCoreAutoload.class.php';
sfCoreAutoload::register();

class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this-&gt;enablePlugins('sfDoctrinePlugin');
    $this-&gt;enablePlugins('sfDbDesignerPlugin');
  }
}</pre>
<p>vous aurez accès à la task</p>
<pre class="bash:nogutter:nocontrols">php symfony dbdesigner:convert-doctrine doc/database.xml</pre>
<p>Où  doc/database.xml est le path vers le fichier DBDesigner.<br />
Si vous n&#8217;avez pas une application nommée frontend il faudra la passer ne paramètre</p>
<pre class="bash:nogutter:nocontrols">php symfony dbdesigner:convert-doctrine --application=myapp doc/database.xml</pre>
<p>vous obtiendrez alors un fichier &laquo;&nbsp;ready to build&nbsp;&raquo; du schéma modélisé avec DBDesigner dans config/doctrine/schema.yml</p>
<h2>MySQLWorkBench</h2>
<p>Il est à noter que <a href="http://www.mysql.fr/products/workbench/">MySQLWorkbench</a> est un fork de <a href="http://www.fabforce.net/dbdesigner4/">DBDesigner4</a>, mais il ne peut pas remplacer ce dernier. En effet si <a href="http://www.mysql.fr/products/workbench/">MySQLWorkbench</a> sait parfaitement importer un fichier xml produit par <a href="http://www.fabforce.net/dbdesigner4/">DbDesigner4</a>, il est en revanche incapable d&#8217;exporter ce schéma au format xml de <a href="http://www.fabforce.net/dbdesigner4/">DbDesigner4</a>.  <a href="http://www.mysql.fr/products/workbench/">MySQLWorkbench</a> ne permet que d&#8217;enregistrer au format mwb.</p>
<p>Ce format est en fait un zip, qui une fois décompresser donne un fichier xml, mais qui n&#8217;a rien à voir avec le xml généré par <a href="http://www.fabforce.net/dbdesigner4/">DBDesigner4</a>, le fichier xml issu du .wmb est donc inutilisatble avec les deux plugins ci dessus.</p>
<p><a href="http://www.mysql.fr/products/workbench/">MySQLWorkbench</a> bénéficie en revanche d&#8217;<a href="http://forums.mysql.com/read.php?52,216856,216856">une bibliothèque de plugins</a> qui permettent de l&#8217;utiliser en remplaçant de <a href="http://www.fabforce.net/dbdesigner4/">DBDesigner</a>.</p>
<p>Pour installer un plugin dans<a href="http://www.mysql.fr/products/workbench/"> MySQLWorkbench</a> il suffit de copier le fichier .lua qui contient le code du plugin (du Python Like) dans le répertoire &laquo;&nbsp;modules&nbsp;&raquo; du répertoire d&#8217;installation de <a href="http://www.mysql.fr/products/workbench/">MySQLWorkbench</a></p>
<p><a href="http://blog.mazenod.fr/wp-content/uploads/2010/03/plugin_mwb.png" rel="lightbox[818]"><img class="aligncenter size-full wp-image-855" title="plugin_mwb" src="http://blog.mazenod.fr/wp-content/uploads/2010/03/plugin_mwb.png" alt="plugin mwb outils de modélisation pour symfony" width="553" height="245" /></a></p>
<ul>
<li>Si vous utilisez Doctrine <a href="http://code.google.com/p/mysql-workbench-doctrine-plugin/">mysql-workbench-doctrine-plugin<sup>1</sup> </a>fonctionne plutôt bien</li>
<li>Si vous utilisez Propel <a href="http://www.diloc.de/blog/2009/10/14/mysql-workbench-propel-export-plugin-v05/">mysql-workbench-propel-export-plugin<sup>2</sup></a> de générer le contenu de schema.xml, alors que <a href="http://trac.symfony-project.org/wiki/SymfonyYamlMyqlWorkbenchPlugin">SymfonyYamlMysqlWorkbenchPlugin<sup>3</sup></a> vous permettra de générer le contenu de schema.yml</li>
</ul>
<h2>Dia</h2>
<p>Si vous utilisez propel, il est possible de modéliser également votre schéma avec <a href="http://projects.gnome.org/dia/">Dia</a> grâce au plugin <a href="http://www.symfony-project.org/plugins/diaToPropelPlugin">diaToPropelPlugin</a>, en utilisant la boite à outil &laquo;&nbsp;Database&nbsp;&raquo; ça va sans dire.</p>
<p>Si vous utilisez Doctrine le plugin <a href="http://trac.symfony-project.org/wiki/ConvertPropelSchemaToDoctrineSchema">ConvertPropelSchemaToDoctrineSchema</a> réalisera la conversion d&#8217;un schéma propel en schéma doctrine.</p>
<h2>ArgoUML</h2>
<p>En graltant un pei plus j&#8217;ai trouvé également le plugin<a href="http://sourceforge.net/projects/uml2symfony"> uml2symfony</a>, qui semble avoir l&#8217;ambition de traduire non pas un schéma de base de données, mais un schéma UML généré avec <a href="http://en.wikipedia.org/wiki/ArgoUML">ArgoUML</a>. Je vous laisse aller plus loin car j&#8217;ai personnellement trouvé l&#8217;<a href="http://www.symfonylab.com/uml2symfony/">idée séduisante</a> mais la documentation très pauvre, voir inexistante!</p>
<h2>Conclusion</h2>
<p>Mon choix se portera sur le doublette gagnante <a href="http://www.mysql.fr/products/workbench/">MySQLWorkbench</a>, <a href="http://code.google.com/p/mysql-workbench-doctrine-plugin/">mysql-workbench-doctrine-plugin</a> car:</p>
<ul>
<li><a href="http://www.fabforce.net/dbdesigner4/">DBDesigner </a>n&#8217;est plus maintenu depuis belle lurette (je me rends compte en écrivant ce post que <a href="http://sourceforge.net/projects/dbdesigner-fork/">DBDesigner fork</a> qui a dormi pendant prêt de 3 ans semble revenir à la vie depuis quelques jours)</li>
<li>j&#8217;utilise maintenant Doctrine</li>
<li>ce plugin permet une gestion fine des <a href="http://code.google.com/p/mysql-workbench-doctrine-plugin/wiki/HowToAddDoctrineBehavioursToTheWorkbenchModel">Behaviors Doctrine</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mazenod.fr/2010/03/outils-de-modelisation-pour-symfony/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

