PostNuke - Génération de code en php, plus d'explications sur ModuleStudio
Auteur Sujet

Post 
ModuleStudio est un logiciel de génération de code permettant de créer automatiquement des modules complets pour Postnuke. Sa vision est totalement originale dans le monde du php, d'une part parce qu'elle est totalement orientée objet, d'autre part parce que le logiciel s'inscrit dans le courant des logiciels MDA, des logiciels qui génère tout votre code source à partir d'une représentation de son diagramme de classe en UML.

ModuleStudio se présente sous la forme d'une version allégée du logiciel Eclipse,dédiée à la génération de code. Notez que comme Eclipse est codé en java, il est multi-plateforme et vous pourrez aussi bien l'utiliser sous windows que sous linux.


Dans la première partie, une faute a volontairement était commise , en effet, tout le module n'est pas généré à partir d'un diagramme de classe, en effet, seul la partie persistance peut être généré de cette manière ( la partie qui gère l'accès à la base de donnée pour faire simple), maintenant il faut se dire que dans un module, il y a aussi une couche présentation (ou couche graphique) qui peut être aussi personnalisé avec ModuleStudio.

Pour être plus clair, et comme une image vaut mille mots, voila une présentation d'une logiciel en quelques prises d'écran, pour un exemple simple de gestion clients.

Tout d'abord, voila la définition globale du projet

- data layer (couche DAO): gère l'accès à la base de donnée (fonction de base de création, mise à jours, effacement)
- presentation layer (couche présentation) :gère la partie graphique
- logic layer (couche métier) : couche métier qui gère les échanges entre la partie graphique et la partie DAO
- process layer : modélise différentes vues du logiciel et leur interaction selon le type d'acteur concerné (admin ou utilisateur majoritairement). Pour faire simple, c'est une représentation des cas d'utilisation de l'application montrant l'interaction de l'utilisateur/administrateur entre les différentes pages (notez que des objets Ajax sont présents)

generation-code.jpg

Par la suite, seul la couche DAO et sa représentation sous forme d'un diagramme de classe sera étudié, libre à vous d'aller voir le reste.

model-uml.jpg

Tout ceux qui connaissent déjà Pagesetter et sa gestion de type et de relation ne seront pas dépaysées puisque le principe appliqué est le même, vous modéliser vos objets métiers (vos "type" en langage pagesetter) et leurs relations. Sachant que vous avez le droit aux relations unidirectionnels ( vive la simplicité ^^), pour le reste si vous connaissez le fonctionnement des diagrammes de classes, tout ira pour le mieux ^^.

Notez que order(1:n) veut dire que pour un "customer", vous pouvez avoir n "orders" (suivez le sens de la flèche)

Vous pouvez télécharger la béta (alpha ?) de ModuleStudio et les exemples gratuitement sur
télécharger ModuleStudio



Lien vers l'Article

Données personnelles Accueil

Post 
Errata:

Voila il y avait deux trois fautes sur l'article, j'ai corrigé dans mon post, mais je peux pas éditer l'article de la home
si c'est possible de le faire çà serai cool:
- les images ne s'affichent pas
- ce n'est pas une "instance d'éclipse", mais une version allégée (voir plus haut)
- l'orthographe de "première" n'est pas le bon

merci d'avance

modifié par : mumuri, 27 Jan 2008 - 13:41
Données personnelles Accueil

Post 
Corrigé !

Pour ma part, il a quelques semaines (mois?) J'avais essayé de générer un module avec. Je dit bien essayé car après la modélisation de mon "supermodule", je n'ai jamais réussi à en voir la couleur !

Je vais le télécharger à nouveau pour de nouveaux tests !

A+


Gilles  ><>°
Données personnelles Accueil

Post 
C'est pour çà que j'ai dit "alpha", le logiciel n'est pas finalisé je pense, mais l'idée est de voir que de nouveaux outils de développement en phase de finalisation de recherche sont en train d'arriver "sur le marché", autrement dit qu'on arrive à un gros chgt dans la maniére de développer les logiciels, potentiellement
- passage de projet orienté objet type java/J2ee en php (ce qui ouvre un gros marché en particulier celui des banques)
- simplification de la façon de développer des softs ( en particulier la partie debuggage)
Données personnelles Accueil

Post 
J'ai découvert ce ModuleStudio ce WE, l'ai installé (nota : n'oubliez pas Java 1.6 pour que ça marche). J'ai sommairement exploré et j'avoue que je suis rester pantois : moi qui ne suis pas développeur (et qui avait beaucoup apprécier pnModGen proposé sur OpenStar), je suis extrêmement séduit par ce type d'environnement ou d'assistant ... très prometteur.

C'est encore embryonnaire (apparemment) mais quelle aide précieuse pour mettre en place les bases d'un module ... avant d'entrer dans le vif du sujet (les spécificités du module). C'est purement génial (je n'ai pas encore généré de module mais exploré les exemples disponibles : modèles de spécification et modules générés).

J'ai souvent lu : "faut partir du module blank", mais lorsque on voit la différence entre le module blank et tout ce que prépare ModuleStudio à partir de 2 modeles (process et persistence, parce que les 2 autres - behavior et presentation - j'ai pas encore bien compris ce qu'ils apportent vraiment), y'a pas photos (de mon point de vue).

ModuleStudio va dans le bon sens, souhaitons lui longue vie et surtout de multiples enrichissements.

laurent
Données personnelles

Post 
a priori présentation, çà doit être la partie qui te permet de personnaliser tes templates et css (comment ? je sais pas ...) et behaviour, peut être que çà a un rapport avec la composante "contrôleur" du modèle MVC, ceci dit faut vraiment attendre d'avoir une version stable pour dire clairement à quoi çà sert ^^
Données personnelles Accueil

Post 
J'ai poursuivi l'exploration avant hier. Quelques petits pb mineurs, dont voici les solutions (communiquées par l'auteur de ModuleStudio) :

> pour la génération du module : le chemin du dossier cible ne doit pas comporter d'espace (type : "...\Documents and setting\..."). Il est donc préférable de créer un dossier (sans espace) à la racine du disque C: ou D:

> pour générer un module à partir des exemples proposés en download sur modulestudio.de : dézipper les fichiers dans le répertoire (chemin sans espace), éditer le fichier .msmodule (xml) et changer l'attribut "modelPath".

J'ai donc pu généré et tout cela est très prometteur (mais cela reste une alpha).


laurent
Données personnelles

Post 
Citation :
J'ai donc pu généré et tout cela est très prometteur

A l'aide de la modélisation, tu arrives donc à créer ton module ?


Gilles  ><>°
Données personnelles Accueil

Post 
J'ai pu généré ... à partir d'un exemple fourni (AutoCustomer).

J'obtiens un set de fichiers conforme au set d'un module (300 Ko de code pour un datamodel de 5 tables).

J'ai ensuite installé dans l'environnement pn (module / regénération / activation).

Mais lorsque je tente d'accéder au module (à partir de l'icone dans le panneau d'administration), j'obtiens :

  1. Parse error: parse error in c:\program files\easyphp1-8\www\blabla\modules\AutoCustomer\classes\PNCustomerArrayBase.class.php on line 25 
  2. Dictionary driver 'includes/classes/adodb/datadict/datadict-mysql.inc.php' not available 
  3.  
  4. Fatal error: Cannot instantiate non-existent class: safehtml in c:\program files\easyphp1-8\www\blabla\system\SecurityCenter\pnuserapi.php on line 473 


A ce stade, j'ai interrompu l'expérimentation. Mais pour voir le résultat, rendez-vous sur la page example de modulestudio.de. Les modules générés sont consultables. Mais cela, quelqu'un s'intéressant au sujet le savait.

Si quelqu'un a une idée de l'origine du pb, je suis preneur évidemment.

De toute manière, j'y reviendrais, car le code généré à partir d'un datamodel de n tables est déjà un temps précieux de gagner.

J'ai une correspondance avec Axel. Il n'a pas beaucoup de temps à y consacrer pour le moment mais il souhaite porter ce projet beaucoup plus loin qu'au stade (embryonnaire) où il en est.

laurent
Données personnelles

Post 
De quand date ta version pn ?

Prend la dernière version ici :

http://www.postnuke-france.org/Down...load-cid-8.html


Gilles  ><>°
Données personnelles Accueil

Post 
ben c'est la RC2 ... downloadée le 9 janvier.

Est-ce à dire qu'il existe plusieurs RC2 ? J'y comprends plus rien.

Laurent
Données personnelles
Post 
Citation :

Est-ce à dire qu'il existe plusieurs RC2 ? J'y comprends plus rien.

Non, ne t'inquiete pas !

En fait à la RC2, on a encore trouvé des bugs et celui que tu nous rapporte me fait penser à un de ceux qu'on a trouvé.

Sur le lien que je t'ai donné, tu as une version qui se met à jour 2 fois par jour grâce aux améliorations des équipes de développement. Elle devrait contenir une version non-buggée je pense.

Si le problème persiste, envoi ton module afin qu'on puisse regarder.

A+



Gilles  ><>°
Données personnelles Accueil