Vous êtes sur la page 1sur 50

COLE POLYTECHNIQUE DE LUNIVERSIT DE TOURS DPARTEMENT INFORMATIQUE 64, Avenue Jean Portalis 37200 TOURS

Rapport de Stage Dveloppement sur lERP OfbizNogia

Encadrants : Olivier HEINTZ Nride 3 bis, les Isles - 37270 Vretz

Etudiant : Simon BAUDRY EPU-DI 2me anne Anne - 2005-2006

Remerciements
Mes remerciements vont tout dabord Messieur Peter Goron et Olivier Heintz pour leur patience, la clart et la prcision de leurs explications et surtour pour leur bonne humeur et leur disponibilit. Je souhaite galement remercier lenssemble de lquipe Nride pour laide et avant tout pour la convivialit qui a rgn dans la socit. Je souhaite enn remercier les stagaires prsents dans lentreprise en mme temps que moi, Cdric Valle, Mickal Hardouin et Ccile Bourreau pour la bonne entente et les claircicements.

Table des matires


Remerciements Introduction 1 Prsentation gnrale 1.1 Lentreprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Le rseau Libre-Entreprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 LERP OfbizNogia 2.1 Les ERP . . . . . . . . . . . . . . 2.1.1 Dnition . . . . . . . . . 2.1.2 Avantages . . . . . . . . . 2.1.3 Inconvnients . . . . . . . 2.1.4 Les ERP libres . . . . . . 2.2 Ofbiz . . . . . . . . . . . . . . . . 2.2.1 Prsentation . . . . . . . 2.2.2 Architecture . . . . . . . 2.2.3 Framework . . . . . . . . 2.2.4 La couche mtier . . . . . 2.2.5 Les modules . . . . . . . . 2.2.6 Domaine dapplication . . 2.3 OfbizNogia . . . . . . . . . . . . 2.3.1 Naissance du projet . . . 2.3.2 Arborescence des chiers . 2.3.3 Changement dans le mode 2.3.4 Les apports de Nogia . . 2.3.5 En conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dveloppement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 4 5 6 7 8 9 9 10 10 10 11 11 11 12 14 17 18 19 19 20 21 23 23 24 25 25 25 26 26 26 27 27 29 32 33 35 37 38 39 44

3 Travail eectu 3.1 Prsentation des outils utiliss . . . . . . . . . 3.1.1 Eclipse . . . . . . . . . . . . . . . . . . 3.1.2 CVS . . . . . . . . . . . . . . . . . . . 3.1.3 Modlisation UML : Posidon . . . . . 3.1.4 Les constructeurs : Ant et Maven . . . 3.2 Rgles de dveloppement . . . . . . . . . . . . 3.3 Le module Lola . . . . . . . . . . . . . . . . . 3.3.1 Prsentation . . . . . . . . . . . . . . 3.3.2 Modlisation UML . . . . . . . . . . . 3.3.3 Cration de larborescence du module 3.3.4 Dvellopement des crans . . . . . . . 3.3.5 Le chier "controller.xml" . . . . . . . 3.3.6 Le chier "FlightScreens.xml" . . . . . 3.3.7 Le chier "FlightForms.xml" . . . . . 3.3.8 Dvellopement des processus . . . . . 3.3.9 Exemple de ux xml . . . . . . . . . .

Rapport de stage - Dveloppement sur lERP OfbizNogia

4 Bilan 46 4.1 Bilan professionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2 Bilan personnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Conclusion 48

Introduction
Mon stage de 2me anne de lEcole Polytechnique Universitaire de Tours, sest droul au sein de la socit Nride, SSLL (Solutions et Services en Logiciels Libres), spcialise dans le domaine de lintgration de PGI Open Source destination des PME. Actuellement, de plus en plus de dveloppeurs et dentreprises utilisent des logiciels Open Source comme MySQL, Eclipse, PHP ou JBoss et le systme dditeur de logiciel propritaire entame un dclin d un cot de licence prohibitif. Les entreprises qui investissent dans des solutions logicielles propritaires pour amliorer leur systme dinformation sont gnralement des grosses socits qui ne font encore que peu conance aux logiciels libre malgr le peu darguments expliquant le cot de licence de ces logiciels. Seule, les ores de service associes trouvent des justications. En eet le principal avantage du logiciel libre est la rduction des cot tout en limitant les riques car cel grantit le respect de standard et la mobilisation des communauts trs ractive aux nouveaux besoins. La premire partie de ce rapport portera sur le fonctionnement du PGI OfbizNogia ce qui a constitu la premire tape de mon travail dans lentreprise puis nous verrons les dveloppements ectus et notament sur le projet Lola.

Chapitre 1

Prsentation gnrale

Rapport de stage - Dveloppement sur lERP OfbizNogia

1.1

Lentreprise

La collaboration et les bonnes pratiques en action.

Nride est une jeune SSLL, fonde en 2004 et spcialise dans lintgration de lERP Open Source Ofbiz-Nogia auprs des PME. Il sagit dune SARL capital variable. Son sige social se situe une dizaine de kilomtres de Tours : Socit Nride 3 bis, Les Isles 37270 VERETZ En complmentarit avec lintgration dOFBiz-Nogia, cette socit propose une gamme complte de services : dveloppement dapplications spciques : raliser ou accompagner le dveloppement de fonctions complmentaires OFBiz-Nogia et spciques au client ; administration de systmes : mettre en place un lment systme, un rseau, intgrer et migrer des composants systmes, administration de systme existant ... ; maintenance et support applicatif (TMA : Tierce Maintenance Applicative) : prestations de support et de maintenance corrective et / ou volutive pour toutes les applications dveloppes partir de larchitecture OFBiz-Nogia ; gestion du systme dinformation (infogrance) : gestion globale du systme dinformation du client, prestation eectue en trois phases : inventaire dtaill, transition et transformation. De part sa participation au rseau Libre-Entreprise son ore de service peut tre tendue toutes les comptences des membres de ce rseau.

Lquipe de Nride est actuellement compose de 8 personnes. Lquipe technique est constitue de personnes expertes dans la mise en oeuvre de PGI Progiciel de Gestion Intgr, (essentiellement Baan, SAP, Oracle) issues de grands cabinets de conseils internationaux. Durant le stage taient galement prsents trois autres stagaires : Cedric Valle, Dpartement informatique de Polytech Tours ; Mickal Hardouin, Master informatique ; Ccile Bourreau, Master informatique ;

Rapport de stage - Dveloppement sur lERP OfbizNogia

1.2

Le rseau Libre-Entreprise

Le rseau Libre-entreprise est un rassemblement dentreprise toutes fortement impliques dans le domaine du logiciel libre. Les membres du rseau ont en commun des valeurs et un mode de fonctionnement bas sur : le partage des connaissances ; la capitalisation des expriences clients et des ralisations ; le respect de tous les acteurs dun projet ; la qualit des prestations.

Lappartenance dune entreprise au rseau fait lobjet dune valuation par les autres membres sur le respect de ces valeurs qui forment la base du rseau. Un compte rendu mensuel permet davoir une ide de la situation prcise de chaque entreprise, il porte sur leurs activits, leurs nances ... De nombreux documents sont partags an daider les membres du rseau dans leur dmarches : documents sur la cration de lentreprise ; documents techniques ; modles de documents ;

Un ensemble doutils de travail collaboratif est mis la disposition des membres du rseau pour simplier la communication et le partage des connaissances : calendrier ; listes de diusion partages ; serveur de messagerie instantane (Jabber) ; le laboratoire Libre-entreprise : une plate-forme dhbergement de projets informatiques tel que le clbre SourceForge. Elle ore les mmes services, savoir, site web, espace ftp, accs cvs, mailing-lists, etc. ; Planet Libre-Entreprise : cest un aggrgateur de contenu qui permet de suivre lactivit des membres du rseau.

Chapitre 2

LERP OfbizNogia

Rapport de stage - Dveloppement sur lERP OfbizNogia

2.1
2.1.1

Les ERP
Dnition

Un PGI progiciel de gestion intgr (en anglais Enterprise Resource Planning ou ERP) est un logiciel qui permet de grer lensemble des processus dune entreprise en intgrant lensemble des fonctions de cette dernire comme la gestion des ressources humaines, la gestion comptable et nancire, laide la dcision, mais aussi la vente, la distribution, lapprovisionnement, le commerce lectronique (Dnition du grand dictionnaire terminologique de lOce qubcois de la langue franaise (OLF)) Le principe fondateur dun ERP est de construire une application paie, (comptabilit, gestion de stocks) de manire modulaire tout en partageant une base de donnes unie. Cela cre une dirence importante avec la situation pr-existante car les direntes fonctions de lentreprise taient gres par une multitude dapplications ddies souvent htrognes. Ainsi, les Achats, la Comptabilit, la Gestion des Stocks, les Ressources Humaines, la Gestion Commerciale,... sont maintenant totalement interconnects. Avec larrive de lERP, les donnes sont dsormais standardises et partages entre les dirents modules, ce qui limine les saisies multiples et vite lambigut des donnes multiples de mme nature (ex : Clermont-Fd , Clermont Ferrand , Clermont-Ferrand , ...). Ceci permet un accroissement considrable de la abilit des informations puisque la source des donnes est unique, do une rduction des dlais et des cots de traitements. Lautre principe qui caractrise un ERP est lusage systmatique de ce quon appelle un moteur de workow, et qui permet, lorsquune donne est entre dans le systme dinformation, de la propager dans tous les modules du systme qui en ont besoin, selon une programmation prdnie. Ainsi, on peut parler dERP lorsquon est en prsence dun systme dinformation compos de plusieurs applications partageant une seule et mme base de donnes, par le biais dun systme automatis prdni ventuellement paramtrable (un moteur de workow). Plus quun simple logiciel, un ERP est un vritable projet demandant une intgration totale dun outil logiciel au sein dune organisation et dune structure spcique, et donc des cots importants dingnierie. Dautre part sa mise en place dans lentreprise entrane des modications importantes des habitudes de travail dune grande partie des employs.

Rapport de stage - Dveloppement sur lERP OfbizNogia

10

2.1.2

Avantages

Compars des applications sur mesure, les ERP / PGI prsentent plusieurs avantages : optimisation des processus de gestion (ux conomiques et nanciers) ; cohrence et homognit des informations ; intgrit et unicit du systme dinformation ; partage du mme systme dinformation facilitant la communication interne et externe ; globalisation de la formation (mme logique, mme ergonomie) ; matrise des cots et des dlais de mise en oeuvre et de dploiement. Il est important de remarquer que la mise en place dun ERP dans une entreprise est souvent le dclencheur dune rorganisation et rationalisation de lensemble des tches et processus de lentreprise.

2.1.3

Inconvnients

Les ERP / PGI ne sont cependant pas exempts dinconvnients : cot lev ; primtre fonctionnel souvent plus large que les besoins de lorganisation ou de lentreprise (le progiciel est parfois sous-utilis) ; lourdeur et rigidit de mise en oeuvre ; dicults dappropriation par le personnel de lentreprise ; ncessit dune bonne connaissance des processus de lentreprise (par exemple, une commande dachat et une commande de vente ncessitent deux processus dirents : il est important de savoir pourquoi, de savoir dcrire les points communs et les dirences entre ces deux processus de faon bien les paramtrer) ; ncessit dadapter parfois certains processus de lorganisation ou de lentreprise au progiciel ; ncessit dune maintenance continue.

2.1.4

Les ERP libres

Le secteur des ERP a depuis quelques annes dj subi un petit bouleversement : larrive de logiciels libres (OFBiz Tiny ERP, ERP5, Compiere, ...) sur des terres o rgnent en matres les logiciels propritaires : SAP, BAAN, Oracle, ... Le premier avantage des ERP Libre sur leurs alter-ego propritaires est bien sr labsence de cot de licence ; cot qui peut souvent apparatre comme prohibitif pour les PME. Un autre atout important est la possibilit dadapter et de faire voluer soi-mme le progiciel sans dpendre du bon vouloir de la socit ditrice. En outre, le logiciel libre mobilise souvent des communauts, qui le font voluer au gr des nouveaux besoins, et qui peuvent rpondre rapidement des demandes prcises. De plus comme tout logiciel libre, les ERP libre donne la garantie de travailler sur des standards ouverts et donc inter-oprables, avantages stratgiques pour beaucoup dentreprises. En parallle avec laugmentation de lutilisation des ERP en France 48 % des PME franaises sont quipes, et en janvier 2005, 9 % des PME franaises envisageaient dacqurir et de mettre en place un nouvel ERP dans lanne (Atelier groupe BNP Paribas), lintrt port par les entreprises sur le logiciel libre progresse. Ainsi, 58 % des entreprises envisageraient de passer de leur ERP propritaire actuel un ERP libre en 2004 (ERP2004 INFOWORLD). La prsence du logiciel libre sur le march des ERP nest donc plus marginal et les ERP Open Source prennent leurs places dans ce secteur.

Rapport de stage - Dveloppement sur lERP OfbizNogia

11

2.2
2.2.1

Ofbiz
Prsentation

Ofbiz est un logiciel de gestion de production communment appel PGI. Ce projet a t initi en mai 2001 par deux amricains David E. Jones et A. Zeneski. Leur souhait taient de crer des outils et une application pour le commerce. Ds le dbut les outils et larchitecture ont t dvelopp an dune part, de faciliter le dveloppement de fonctionnalit et dautre part, de rduire le temps de maintenance du code existant. Une des caractristiques fortes de ce PGI est son appartenance au monde des logiciels libres. En effet, les deux concepteurs ont appliqu une licence MIT Open Source License qui implique le libre accs aux sources mais galement le droit de les modier, de les utiliser et mme de les vendre. La seule contrainte de cette licence est de respecter le copyright des sources. Aujourdhui, le projet rassemble une quinzaine de dveloppeurs dans le monde. Ofbiz est fortement orient vers le e-commerce mais son architecture modulaire a permis dintgrer des composants ddis lensemble des fonctions que lon retrouve dans dirents types dentreprise (service, industrie, commerce...).

2.2.2

Architecture

Ofbiz est une application java client-serveur compatible avec la spcication J2EE dnissant une architecture logicielle standard. On retrouve ainsi les trois lments caractristiques dune architecture 3-tiers : les clients : ici des clients lgers, typiquement des machines peu puissantes disposant dun navigateur internet ; un serveur excutant les direntes applications Ofbiz ; une ou plusieurs bases de donnes stockant le systme dinformation de lentreprise.

OFBiz repose sur une architecture plusieurs niveaux o chaques niveaux sont spcialiss dans un domaine.

Rapport de stage - Dveloppement sur lERP OfbizNogia

12

Ils sont compos de plusieurs lments spcialiss dans la ralisation de tches bien prcises.

2.2.3

Framework

Ofbiz est en premier lieu un framework dapplication dentreprise dans lequel chaque composant reprsente une brique logicielle pouvant tre rutilise pour construire des applications diverses. Ce framework repose sur trois composants essentiels sans lesquels une application standard ne pourrait pas fonctionner : lEntity Engine, le Service Engine et le ControlServlet.

LEntity Engine LEntity Engine est un composant Ofbiz qui se charge de grer les transactions avec la base de donnes. Il est constitu dune collection dAPI qui implmente des objets java qui vont accder aux donnes de la table via des mthodes. Ainsi le dveloppeur naccde pas aux donnes directement mais via une couche abstraite qui se charge daccder aux donnes et de scuriser les transactions. Le code est ainsi indpendant du SGBD et le dveloppeur na pas connatre le langage SQL. Ses principales caractristiques sont : accs aux donnes via une interface unique, le GenericDelegator. supporte laccs transparent plusieurs base de donnes. les entits sont dnies dans de simples chiers XML. tous les types java de base ont un quivalent en base de donnes. supporte les transactions distribues. suppporte un mcanisme de trigger appel EECA (Entity Event-Condition-Action) mme si le SGBD sous-jacent nimplmente pas cette fonctionnalit.

Le Service Engine Le Service Engine est lquivalent de lEntity Engine pour tous les traitements des composants Ofbiz. Les traitements sont appels Services et peuvent tre excuts localement ou distance. Le principal intrt de ce composant est quil permet de lancer des services sans avoir besoin de connatre leur localisation et leur implmentation. Cest le ServiceDispatcher qui se charge alors de trouver limplmentation du service et de son excution. Un autre intrt est la possibilit de rendre disponible tout service Ofbiz vers lextrieur. Ainsi un composant peut appeler un service dun autre composant. Ils sont cods soit en XML Mini-Language qui est un outil dofbiz soit cods directement en java, ils peuvent alors appeler dautres mthodes java ou soit cods dans un autre langage (comme python, perl, etc ...). Les services sont dnis par des chiers xml. Lutilisation des services permets de garantir une uniformit dans la manipulation des donnes et dengendrer des contrles tel que le login ou la gestion des erreurs.

Le ControlServlet Le ControlServlet est llment cl de la communication entre les utilisateurs et les applications web dOfbiz. Implment selon le modle MVC (Modle-Vue-Controleur), il gre la boucle dvnements de linterface graphique et les dirents moteurs de rendu de lapplication. Les rponses aux intractions de lutilisateur seectuent par lintermdiaire dvnements qui peuvent tre implments sous la forme de services, de mthodes java, de scripts Beanshell ou Minilang. Un moteur de rendu se charge de renvoyer lutilisateur une vue dun document gnr partir des vnements prcdents et/ou de donnes. Les moteurs de rendu dont dispose Ofbiz : JSP : Les Java Server Pages permettent de gnrer des pages HTML dynamiquement. JPublish + FreeMarker : JPublish permet de construire une page HTML partir de plusieurs chiers traits par FreeMarker et dappeler pour chacun dentre-eux des scripts BeanShell dirents moments de la construction. FreeMarker est un moteur de template qui permet

Rapport de stage - Dveloppement sur lERP OfbizNogia

13

de gnrer des documents dynamiquement. FOP + FreeMarker : FOP est un processeur XSL qui transforme un document XML trait avec FreeMarker en un document HTML ou PDF. JasperReport : JasperReport permet de raliser trs facilement des rapports partir de multiples sources de donnes. Voici lensemble des oprations eectues suite une intraction aveclutilisateur pour lui acher une page laide de JPusblish et FreeMarker : 1. Lutilisateur clique sur un lien hypertexte ou valide un formulaire. Le navigateur envoie alors une requte HTTP au serveur Ofbiz qui est intercepte par Tomcat et transmise au ControlServlet de lapplication web correspondante.ex :https : //127.0.0.1 : 8443/ordermgr/control/orderview?orderi d = W S10000 2. Le ControlServlet vrie si lURI demande est dnie par lapplication. Le cas chant, il appelle le ou les vnements associs cette URI. Dans le cas contraire, il renvoie une erreur au navigateur web de lutilisateur (Erreur HTTP 404 : page non trouve). 3. Si lvnement gnr doit appeler un service, il vrie que les paramtres de la requte correspondent aux attributs du service. 4. Si lvnement gnr doit appeler un service, il convertit les paramtres de la requte sous forme textuelle en objets Java correspondant. 5. Lvnement appelle un service ou un gestionnaire dvnements (mthode java statique). 6. Le service ou le gestionnaire dvnements peuvent eectuer des actions sur le modle de donnes. 7. LEntityEngine convertit ces actions en requtes SQL pour le serveur de base de donnes. 8. Le service ou le gestionnaire dvnement renvoie le rsultat de leur action. 9. Lvnement transmet ce rsultat au ControlServlet. 10. partir du rsultat de lvnement, le ControlServlet slectionne la vue acher et appelle le moteur de rendu adquat. 11. partir de la dnition dune vue, le moteur de rendu construit les dirents sous-lments de cette dernire. 12. Pour chaque sous-lment, il peut appeler des scripts BeanShell qui rcuprent et mettent en forme les donnes acher. 13. Pour chaque sous-lment, il appelle le moteur de template qui se charge de gnrer le code HTML correspondant. 14. Le moteur de rendu assemble les dirents sous-lments pour former une page web complte. 15. Le controlServlet transmet la page gnre au navigateur web de lutilisateur.

Rapport de stage - Dveloppement sur lERP OfbizNogia

14

2.2.4

La couche mtier

La couche mtier dOFBiz est compos de modules. Chaques modules correspondent une application mtier. Organisation dun module Un module est un programme fonctionnel sappuyant sur les couches techniques du PGI. Le module contient toutes les informations ncessaires son bon fonctionnement : description des entits, source java, description des services, chier de dnition dcran, etc ... Toutes ces informations sont organises dans une arborescence propre au module. Cette arborescence la mme structure quelque soit le module et sera dtaille au chapitre suivant. Les modules peuvent inter-agir entre eux via des mcanismes simples (service), permettant de bien spcialiser les fonctionnalits de chacun.

Rapport de stage - Dveloppement sur lERP OfbizNogia

15

Architecture dun module Les modules sont tous structurs de la mme faon. Ci-dessous suit une prsentation de larchitecture dun module dOFBiz : module | +- cong | +- data | +- entitydef | +- lib | +- servicedef | +- src | +- webapp || | -module || | +-error || | +-sous-module || | +-templates || | +-WEB-INF ||| | | +-actions ||| | | +-pagedefs ||| | | |-controller.xml ||| | | |-jpublish.xml ||| | | -web.xml || | -login.ftl | - OFBiz-components.xml

Rapport de stage - Dveloppement sur lERP OfbizNogia

16

Description des chiers et rpertoires module : cong : ce rpertoire contient les chiers dinternationalisation et les chiers properties de conguration. data : ce rpertoire contient des chiers xml de donnes utilisateurs relatif au module. Ces donnes sont dordre dobligation ou de dmonstration entitydef : ce rpertoire contient deux chiers qui dcrivent les entits quutilisent ce module. Ces chiers sont directement utiliss pour la description et la construction des tables de la base de donnes. servidef : ce rpertoire contient un chier, services.xml qui associe des fonctions java, ou dautres langages, prsentes dans les sources du module un nom de service. src : ce rpertoire contient les sources des chiers java relatif au module. Cest dans ces chiers que sont dnies les fonctions appeles via le chier services.xml. webapp : ce rpertoire contient une arborescence de chiers qui sont utiliss pour la gnration des crans utilisateurs. OFBiz-components.xml : ce chier dcrit le module pour son intgration dans OFBiz. module/webapp/module : error : ce rpertoire contient les messages acher suivant lerreur gnre par le serveur dapplications. sous-module : un module est organis en sous-parties, suivant lapplication faite dans le module avec un objectif de description. Ce rpertoire contient les chiers de structure des forms et les chiers de structure dcrans utilisateurs (chiers ftl). templates : ce rpertoire contient les chiers de structure de base comme lcran daccueil du module ou encore les crans de recherche. WEB-INF : ce rpertoire contient une arborescence contenant les chiers eectuant les traitements ncessaires sur les informations avant leur achage. l ogin.ftl : ce chier dcrit la structure de lcran de connexion au module. module/webapp/module/WEB-INF : actions : ce rpertoire contient des chiers source java interprts : des chiers beanShell. Ces derniers servent remplir le contexte dinformations, ncessaire lachage des informations dans les crans utilisateurs. Ces informations peuvent provenir dun appel la base de donnes ou dun traitement quelconque sur des informations dj prsentes dans le contexte. pagedefs : ce rpertoire contient la dnition dun cran utilisateur. Ceci comprend les informations initiales et/ou rajouter au contexte pour lutilisation de cette page ainsi que diverses dnitions des chiers de structure et des chiers BeanShell appeler pour la gnration de lcran. controller.xml : ce chier met en relation les urls envoyes par le client et la page renvoyer. Cette page est le rsultat dun enchanement doprations qui sont indiques dans ce chier. jpublish.xml : chier de conguration pour la fusion du contexte avec les chiers de strucutre ftl. web.xml : conguration du serveur web. Deux chiers sont extrmement importants dans un module : le chier controller.xml et le chier services.xml. Le premier : controller.xml sert OFBiz pour savoir quel service et action puis quelle vue doit tre appels suivant une requte eectue. Le second : services.xml sert OFBiz pour mettre en relation lappel un service et la fonction associe se trouvant dans les sources du module

Rapport de stage - Dveloppement sur lERP OfbizNogia

17

2.2.5
Content

Les modules

Le module Content permet dassurer la gestion de contenu (CMS). Ses entits sont utilises pour enregistrer et manipuler les contenus gnraux et les bases de connaissance. Ces entits incluent de nombreux concepts tels que : la sparation de linformation et de lorganisation des donnes qui peut tre utilis dans beaucoup de structures de donnes comme des arbres, listes ou des Maps dobjets. Une fois ces structures cres, des outils volus de recherche dinformation sont utiliss pour automatiser la cration de nouvelles structures et permettre lentreprise de grer les documents. Accounting Les entits de Comptabilit sont organises sur des principes gnralement admis comme la comptabilit double entre, un registre gnral avec des comptes hirarchiss... Elles sont structures pour que lon puisse grer la comptabilit de plusieurs organisations. Party Le module Party permet dassurer la gestion de la relation client (CRM). Un Party peut reprsenter soit une personne physique soit un groupe (un groupe pouvant tre une entreprise, un fournisseur ou un ensemble de personnes). La notion de groupe permet de modliser des hirarchies, des groupes de scurit. Cette application est gnralement utilise pour grer les informations sur le personnel de lentreprise, sur les relations avec ses clients et ses fournisseurs, etc. chaque contact, on peut associer de nombreuses informations telles que des adresses, des numros de tlphones, des rles, et par un mcanisme dextensions, des donnes supplmentaires. Product Les entits de Product contiennent les informations gnrales sur les produits vendables, achetables dune entreprise. Les produits peuvent tre des articles (matires premires, produits nis ...), des services, ... Les produits peuvent tre organiss en catgories et en catalogue (notion de promotions, canaux de ventes...). Ils peuvent tre associs une multitude de prix selon la devise, le fournisseur, les dates, la quantit achete, etc. Facility Un Facility est un btiment ou un emplacement physique tel que les stocks, les magasins, les docks, les bureaux,... En gnral un Facility aura un contact associ : une adresse, un numro de tlphone, ... Les btiments peuvent tre regroups en groupe de btiments, eux-mmes pouvant faire partie de groupes de btiments. Ces groupes sont, par exemple, des chanes de magasins, rgions, dpartements. Des personnes ou groupes de personnes peuvent aussi tre associs des btiments pour dnir o une personne travaille, qui gre le btiment, etc. Ce module permet de grer les stocks dune entreprise, il connat ainsi pour un produit ses lieux de stockages, les quantits stockes et les indices de gestion de stock : seuils dalerte, quantit conomique... Order Le module Order permet de grer tous les processus autour dune commande dachat ou de vente. Un ordre se compose dune en-tte de commande et de lignes de commandes qui dcrivent les dtails de lordre et des ajustements tarifaires. Ces ajustements correspondent aux promotions, aux taxes et aux frais de ports appliqus lordre. Toutes les tapes dune commande sont gres du devis, la facturation en passant par la rception de la commande, la gestion du retour de marchandise, ... Shipment Shipment gre lensemble des changes de produits avec lextrieur, autrement dit les rceptions et les expditions ainsi que les entres et sorties de stock. On peut ainsi connatre pour un produit et un Shipment la quantit du produit expdie ou reue. Shipment fait aussi le lien avec les services des transporteurs pour le suivi des colis et des livraisons.

Rapport de stage - Dveloppement sur lERP OfbizNogia

18

2.2.6

Domaine dapplication

Le framework dOfbiz fournit par dfaut pratiquement toutes les applications ncessaires quasiment tous les domaines de lentreprise. Cel constitue lun de ses principaux avantages par rapport dautres framework du mme type. Ces applications sont fournies de tel sorte quelles sont prtes lemploi, il ne reste lutilisateur qu saisir les donnes spciques lentreprise. Il existe galement un autre type dapplications dan Ofbiz, les applications mtiers. Elles sont spciques un domaine dactivit.

Rapport de stage - Dveloppement sur lERP OfbizNogia

19

2.3
2.3.1

OfbizNogia
Naissance du projet

Bien quOFBiz soit totalement crit en Java, la modlisation utilise est un modle entit-relation. Ainsi, les entits de base de donnes ne sont pas traduites en objet, on accde donc directement aux tples de la base de donne. La puissance dun langage objet est alors totalement sous-utilis, la plupart des mthodes est statique, on perd de plus le haut niveau dabstraction oert par le langage objet. Le modle entit-relation qui sattache la modlisation des donnes savre peu adapt la ralisation des composants mtiers o la modlisation des traitement est privilgier. Nride a donc initi en mai 2004, le projet Nogia publi sous licence GPL. Cette licence GPL moins permissive que la la licence MIT assure que le code ne sera jamais commercialis. Ce projet a pour but de fournir des outils permettant de crer des composants OFBiz grce une modlisation UML. Les dveloppements venir sur OFBiz ne concernent que le dernier niveau du PGI : la cration de la couche mtier. Or, les faiblesses indiques au chapitre prcdent ne nous poussent gure lancer un dveloppement massif pour combler les manques fonctionnels du PGI. Cest pour ces raisons que commena un nouveau projet nomm Neogia.

Que doit apporter Neogia an de faciliter le dveloppement de la couche mtier : une sur-couche objet pour appliquer un dveloppement objet et ignorer la structure de la base de donnes. remplir automatiquement le plus de chiers de conguration possibles dont les informations sont rptitives, pour les crans standard.

Rapport de stage - Dveloppement sur lERP OfbizNogia

20

2.3.2

Arborescence des chiers

Neogia possde une arborescence de chiers totalement spare de celle dOFBiz : neogia | +- components || | +- module1 || | +- module2 ||| | | +-dist ||| | | +-target ||| | | +-src ||| | | +-build.xml ||| | | +-project.xml ||| | | +-project.properties ||| | | - maven.xml | +- doc | +- generators || | +-src || | +-target || | +- neogiaproject.xml || | +- project.xml || | +- project.properties || | - maven.xml | +- neogiaproject.xml | +- project.xml | +- neogiaOFBiz.patch | +- maven.xml | - build.xml

Rapport de stage - Dveloppement sur lERP OfbizNogia

21

Description des chiers et rpertoires Neogia : rpertoire racine du projet components : ce rpertoire contient tous les modules en dveloppement qui seront intgrs OFBiz module dist : ce rpertoire contient le module dvelopp de Neogia qui est oprationnel dans OFBiz (chiers gnrs + dveloppements spciques) src : ce rpertoire contient le diagramme UML dcrivant le module ainsi que quelques informations non gnrables comme des labels pour linternationalisation du module target : ce rpertoire contient les chiers gnrs partir du diagramme UML, une fois la gnration nie. project.xml et project.properties : ce sont deux chiers de conguration utiliss par LutinGenerator pour la gnration maven.xml : chier de conguration pour le lancement de la gnration via maven build.xml : chier dinstruction pour ant an de dplacer les chiers voulus dans larborescence dOFBiz, utilis seulement par les dveloppeurs du module generators src : rpertoire contenant les sources des gnrateurs target : rpertoire contenant les gnrateurs compils neogiaproject.xml, project.xml et project.properties : ce sont trois chiers de conguration utiliss par LutinGenerator pour prparer les gnrateurs maven.xml : chier de conguration utilis par maven pour compiler les gnrateurs build.xml : ce chier dinstruction ant dplace le contenu des rpertoires components/*/dist vers larborescence OFBiz pour intgrer les modules Neogia dans le PGI. neogiaOFBiz.patch : patch appliquer la racine dOFBiz pour prparer le PGI lintgration des modules dvelopps via Neogia project.xml et project.properties : ce sont deux chiers de conguration utiliss par LutinGenerator pour la description du projet maven.xml : chier de conguration pour la conguration du projet via maven.

2.3.3

Changement dans le mode dveloppement

Neogia utilise un projet nomm LutinGenerator, dvelopp par lentreprise Code Lutin, qui est un prparateur la gnration. LutinGenerator fonctionne en deux temps : 1er temps : LutinGenerator lit des chiers scripts, typs sur java, et construit une librairie avec les informations contenues dans ces chiers. 2me temps : LutinGenerator lit un diagramme de classe UML et formate le ux rcupr. Ensuite le formatage est appliqu la librairie qui gnre une structure de chiers sources dnie. Quels sont les intrts de LutinGenerator : La gnration se fait partir dun diagramme de classe UML, ce qui apporte une conception du logiciel de haut niveau. La gnration nest pas ge un langage de programmation comme beaucoup de logiciels de cration de schma UML. Les gnrateurs sont crits suivant ce que lon dsire gnrer, avant la premire gnration du diagramme.

Rapport de stage - Dveloppement sur lERP OfbizNogia

22

Exemple de diagramme de classe utilis :

La gnration de code partir de diagrammes UML permet de crer : chiers chiers chiers chiers chiers chiers de dnition des services ; de dnition des entits ; Java permettant labstraction Objet<->Entit ; dinterfaces graphiques par dfaut pour les objets modliss ; de formulaires de recherche ; dinternationalisation.

On peut aussi remarquer que la gnration, de par son caractre systmatique, permet damener une certaine homognisation des procdures de codage, homognisation malheureusement absente sur OFBiz. De plus, lutilisation pralable dune modlisation UML au codage direct ore la possibilit de xer clairement le fonctionnement du module et permet aux nouveaux dveloppeurs davoir un point de dpart clair et prcis pour mieux comprendre limplmentation adopte.

Rapport de stage - Dveloppement sur lERP OfbizNogia

23

2.3.4

Les apports de Nogia

Neogia est une sur-couche dOFBiz dont le dveloppement seectue en parallle du dveloppement de ce dernier. Il a pour objectif de combler les faiblesses dOFBiz pour le dveloppement de la couche fonctionnelle du PGI et den acclrer son volution. Neogia est un ensemble de composants complmentaires la plate-forme dapplication dentreprise OFBiz. Ces composants sont de 3 types : Des composants fonctionnels soient en tant que composant nouveau, soient remplacant un composant OFBiz existant. manufacturing : remplace le composant OFBiz existant, cest une refactorisation de celui-ci, avec la dnition dun modle UML propre et une r-criture complte du code. facility : remplace le composant OFBiz existant pour toute la gestion des stocks, il ninclut pas la gestion des expditions qui reste ralise par OFBiz. Il fournit une gestion des inventaires physiques complte. Ce composant est apparu suite une refactorisation complte du modle de donnes ralis avec UML permettant de grer les stocks actuels et planis. accounting : remplace le sous-composant OFBiz existant, pour la gestion comptable et analytique. La modlisation UML est entirement nouvelle. La gestion des paiements reste ralise par OFBiz servicemgnt : nouveau composant permettant de grer des activits de service ou de projet. Le composant tant nouveau, son modle UML est galement nouveau. Des composants permettant de se connecter aux composants OFBiz existants. Les diagrammes UML reprennent les lments de OFBiz. common : utilis pour les liaisons avec les entity enum et status content : utilis pour unier certaines rgles de dveloppement et pour la gestion des champs en multi-langue. order : utilis pour accder aux objets commandes et ligne de commandes party : utilis pour accder aux objets acteurs, rle, acteur-rle et adresse, et aux objets communications product : utilis pour accder lobjet article et pour la liaison entre OFBiz et le composant facility de Neogia Un composant technique, permettant de gnrer la majeure partie du code OFBiz partir des diagrammes de classe UML. Cela permet davoir des composants dvelopps partir dune modlisation objet. La gnration permet de gnraliser les bonnes pratiques OFBiz et mets disposition des dveloppeurs les lments ncessaires au dveloppement objet. Les dveloppements complmentaires sont raliss dans des sur-charges objets et pas sur les lments gnrs garantissant ainsi la possibilit de rgnrer certains lments lors de lapparition de nouvelle bonne pratique.

2.3.5

En conclusion

Le dveloppement via Neogia des modules fonctionnels dOFBiz permet : une une une une conception de haut niveau de chaque module. gnration de 70% 80% des chiers sources ncessaires au fonctionnement du module. criture des chiers sources propre, structure et directement en relation avec la conception. sur-couche objet pour faciliter le reste du dveloppement.

Chapitre 3

Travail eectu

Rapport de stage - Dveloppement sur lERP OfbizNogia

25

3.1
3.1.1

Prsentation des outils utiliss


Eclipse

Eclipse est un environnement de dveloppement intgr (le terme Eclipse dsigne galement le projet correspondant, lanc par IBM) extensible, universel et polyvalent, permettant potentiellement de crer des projets de dveloppement mettant en oeuvre nimporte quel langage de programmation. Lapplication est crite en Java ( laide de la bibliothque graphique SWT, dIBM), et ce langage, grce des bibliothques spciques, est galement utilis pour crire des extensions. Sa spcicit vient du fait de son architecture totalement dveloppe autour de la notion de plug-in : toutes les fonctionnalits de cet atelier logiciel sont dveloppes en tant que plug-in.

3.1.2

CVS

CVS, acronyme de Concurrent Versions System, est un logiciel libre (licence GPL) de gestion de versions. Puisquil aide les sources converger vers la mme destination, on dira que CVS fait la gestion concourante de versions ou de la gestion de versions concurrentes. Il est trs utilis dans le domaine du logiciel libre et dans les projets Ofbiz et OfbizNogia. Il peut aussi bien fonctionner en mode ligne de commande, qu travers une interface graphique. Il se compose de modules clients et dun ou plusieurs modules serveur pour les zones dchanges. Classiquement, un logiciel de gestion de versions va agir sur une arborescence de chiers an de conserver toutes les versions des chiers, ainsi que les dirences entre les chiers. Ce systme permet par exemple de mutualiser un dveloppement. Un groupe de dveloppeurs autour dun mme dveloppement se servira de loutil pour stocker toute volution du code source. Le systme gre les mises jour des sources par chaque dveloppeur, conserve une trace de chaque changement. Ceux-ci sont, en bonne utilisation, chaque fois accompagns dun commentaire. Le systme travaille par fusion de copies locale et distante, et non par crasement de la version distante par la version locale. Ainsi, deux dveloppeurs travaillant de concert sur un mme source, les changements du premier soumettre son travail ne seront pas perdus lorsque le second, qui a donc travaill sur une version non encore modie par le premier, renvoie ses modications. Gnralement, chaque version est incrmente de 1 par rapport la prcdente. On lappelle rvision. Dans le cadre de mon travail cet outil a t utilis au travers du logiciel de dveloppement Eclipse.

Rapport de stage - Dveloppement sur lERP OfbizNogia

26

3.1.3

Modlisation UML : Posidon

Parmi les nombreux outils de modlisation UML existant sur le march, il en est un dont lon parle de plus en plus, tant par ses fonctionalits que par sa gratuit : Poseidon for UML. Ce nest pas un logiciel libre, mais la version commerciale du logiciel libre ArgoUML. Une version communautaire existe. La socit allemande Gentleware propose ce modlisateur depuis 2000, et a continu de faire voluer le logiciel en fonction des direntes normes UML successives et spcications de technologies annexes (XMI) devenues des standards.

3.1.4

Les constructeurs : Ant et Maven

En plus dEclipse et de Posidon, on utilise le constructeur ant, qui est un projet open source de la fondation Apache crit en Java qui vise le dveloppement dun logiciel dautomatisation des oprations rptitives tout au long du cycle de dveloppement logiciel, linstar des logiciels Make. Ant est principalement utilis pour automatiser la construction de projets en langage Java, mais il peut tre utilis pour tout autre type dautomatisation dans nimporte quel langage. Les concepteurs dAnt ont indiqu vouloir faire un systme ne sourant pas des limitations de Make. Les scripts de compilation (appels build.xml) sont crits en XML. Il est possible dtendre Ant an de crer ses propres tches laide de module Java. Parmi les tches les plus courantes, citons : la compilation, la gnration de pages HTML de document (Javadoc), la gnration de rapports, lexcutions doutils annexes (checkstyle, ndbugs etc), larchivage sous forme distribuable (JAR etc.) Quant Maven il est semblable loutil Ant, mais fournit des moyens de conguration plus simples, bass sur le format XML. Maven est gr par lorganisation Apache Software Foundation. Prcdemment Maven tait une branche de lorganisation Jakarta Project. Un lment cl et relativement spcique de Maven est son aptitude fonctionner en rseau. Une des motivations historique de cet outil est de fournir un moyen de synchroniser des projets indpendants : publication standardise dinformation, distribution automatique de modules jar. Ainsi en version de base, Maven peut dynamiquement tlcharger du matriel sur des entrepts logiciels connus. Il propose ansi la synchronisation transparente de modules ncessaires. Cet outil est utilis pour compiler le gnrateur de code.

3.2

Rgles de dveloppement

Le systme de contrle de versions utilis sous Nogia est CVS. Le processus de dveloppement avec OFBiz-Nogia est simple. Plusieurs branches sont utilises, dont principalement la branche HEAD et la branche STABLE. Les programmeurs travaillent avec la branche HEAD et valident directement leurs travaux sur cette dernire. Lorsque les fonctionnalits sont susamment mres et solides, elles sont incorpores dans la branche STABLE. Cest cette branche STABLE qui est propose aux clients. Lorsque les programmeurs dOFBiz-Nogia travaillent sur des composants propres OFBiz, ce qui est relativement peu courant, nous envoyons nos modications suivant la procdure dOFBiz. An doptimiser la communication entre les dirent collaborateurs et ainsi la productivit, nous utilisons un repositoire Web. Les direntes tches accomplir y sont dposes et classes par type (bug, patch OFBiz, nouvelle foncionnalit) et module. Une priorit peut tre associe chaque tche. Les status diune tche sont les suivants ToBeTested : la tche a t ralis on fait appel un collaborateur dirent du ralisateur an de valider le fonctionnement ToStable : la tche a t valid et est prte passer dans la branche STABLE ToJIRA : le dveloppement ralis doit tre envoy sous forme de patch OFBiz

Rapport de stage - Dveloppement sur lERP OfbizNogia

27

3.3
3.3.1

Le module Lola
Prsentation

Au cours de mon stage jai travaill sur diverses tches et modules. Le travail des premires semaines surtout servi utiliser, apprendre maitriser les dirents outils et se familiariser aux rgles de dveloppement aux travers de petites tches (de la conception UML la cration dcrans et de processus en passant par la gnration de code). La plus grosse partie de mon travail sest fate sur un module spcique un client, le module Lola. Ce client souhaitait utiliser OfbizNgia derrire un portail web tout en faisant des requtes vers des moteurs de recherche (VOL, HOTEL, SEJOUR, etc ...). Ce besoin particulier, ncessitant des dveloppements en grande partie spciques, un cvs t mis en place. Le shma ci-dessous va nous aider mieux comprendre le fonctionnement et le rle de chaque acteur :

Rapport de stage - Dveloppement sur lERP OfbizNogia

28

Le portail se charge de toute la partie graphique et uniquement de cette partie. OfbizNgia reoit les requtes du portail, les traite et lui renvoit sa rponse sous forme dun ux xml. OfbizNogia possde un service de recherche de haut niveau en java qui permet dinterroger les dirents moteurs de recherche ncessaires. Les requtes aux moteurs se font par lintermdaire de Tibco. Il sagit dune entreprise qui gre et fournit les services pour interroger les moteurs. Cependant lors du dvellopement laccs Tibco ntant pas encore disponible, il a t ncessaire de dvelopper une application simulant son rle. TibcoSim a t dveloppe par Peter Goron dans ce but. La communication entre Tibco/TibcoSim et OfbizNgia est ralise par lintermdaire dun Middleware, JMS. Linterface de programmation Java Message Service (JMS) permet denvoyer et de recevoir des messages de manire asynchrone entre applications ou composants Java. JMS permet lchange de messages entre deux systmes ou plus. Ce service supporte le modle publish and subscribe et le modle point point. Dans le modle publish and subscribe, des entits sinscrivent pour recevoir des messages sur un certain sujet. Et celui qui publie les messages et ceux qui les reoivent ne se connaissent pas. Pour le modle point point, le producteur publie les messages dans une le et le client lit les messages de la le. Dans ce cas le producteur connat la destination des messages et poste les messages directement dans la le du client. Pour simuler le rle de Tibco, une implmentation libre de JMS, OpenJms a t mis en place pour permettre la communication avec OfbizNogia.

Rapport de stage - Dveloppement sur lERP OfbizNogia

29

3.3.2

Modlisation UML

A partir de la documentation fonctionnel fournie par le client, une premire modlisation a t effectue. Il sagit a cet tape de raliser le mapping entre les entits de Nogia et celle ncessaires aux besoins du client. Certaines entits comme les acteurs (module Party) sont facilement intgrables Nogia car dj prsentes. Par contre il y a bien entendu des besoins spciques qui impliquent la cration de nouvelles entits. Les diagrammes de classe suivants ont t conus dans ce but en respectant les rgles de modlisation impratives une gnration de code propre :

Partners

TODO: Replace by OFBiz entities

PartnersProduct #jsessionid :String #combinationId :String #passengerType :String #serviceId :String #seats:int * * Flight #flightId :String Booking #bookingId :String

Payment #cardtype :String #number :String #owner :String #cvc:String #validToMonth :String #validToYear :String #paymentName :String #paymentCode :String

TODO: termsAndConditionsURLS

Fare #fareId :String #fareSource :String #classOfReservation :String #restriction :String #fareCodeBase :String

FareDetail * #termsAndConditionsHTML :String #termsAndConditionsText :String

<< entity , extern >> Party (from org ::neogia ::party ::party ::entities ) operatingAirline airline

* Segment #departure :Date #arrival :Date

* Tax #passengerType :String #price :double #currency :String #originalPrice :double #changeFactor :double

* * Rate #passengerType :String #price :double #originalPrice :double #changeFactor :double Fee #selected :boolean #assignment :String #reference :String #type :String #fareSource :String #description :String #price :double #originalPrice :double TODO: Link to ProductPrice << entity >> FlightTravelSearchCriteria (from org ::neogia ::lola ::flight ::entities ) #idName :String #departure :String #destination :String #departureDate :Date #returnDate :Date #adult :int #child :int #infant :int #airline :String #oneway :boolean #requestDefaultCorporation :boolean #fareSelector :String #directFlight :boolean

arrivalAirport

departureAirport

<< entity , extern >> Geo (from org ::neogia ::common ::geo ::entities )

TODO: Link to OFBiz tax entities << entity , extern >> Product (from org ::neogia ::product ::product ::entities )

FlightType id:String + searchCriteria productTypeId FaresType id:String CombinationType id:String direction :String seats:int 0..1 0..1 FlightTravelMetaData inbound #jsessionid :String 1 + flightTravelMetaData + combinationType 1 outbound

1..* + flightTravel << entity >> FlightTravel (from org ::neogia ::lola ::flight ::entities )

CostType

FlightTravel is link to FlightTravelMetaData FlightTravel > FlightTravelMetaData

Ce diagramme permet de "mapper" la rponse de Tibco une requte au moteur VOL (Partners). Certaines entits comme lentit "Party" ont en plus du strotype "entity", le strotype "extern" qui signie que ce sont des entits dj dnies dans une autre modlisation. Dans le cas de "Party", lentit est dj dnie dans le module du mme nom. Le gnrateur se charge lui mme de faire le lien entre les direntes modlisations. Lentit "FlightTravelSearchCriteria" par enxemple, quant elle est spcique au module Lola. Plus prcisement, ce diagramme permet dinterprter la BasicAPI vue dans le shma de description prcdent. Ce document xml dcrit les entits cre dans le diagramme de classe partners.

Rapport de stage - Dveloppement sur lERP OfbizNogia

30

De mme que pour le moteur VOL (Partners) un diagramme de classe ralise le mapping entre la rponse une rqute sur ce moteur et ofbizNeogia :

Hobbes

<< entity , enumeration >> BoardType

<< entity , enumeration >> AccomLocation

<< entity , extern >> Uom (from org ::neogia ::common ::uom ::entities ) cityRangeUomId << entity , enumeration >> Area # area

# # boardType # location

<< entity >> RoomSearchCriteria #sequenceId :int #paxNumber :int #adultNumber :int #childNumber :int #childAge :int #infantNumber :int * * * * # city geoTypeId << entity , extern >> Geo (from org ::neogia ::common ::geo::entities )

<< entity >> * HotelSearchCriteria #idName :String #hotelName :String #fromDate :Date #thruDate :Date #cityRange :double #hotels :String #budgetMin :double #budgetMax :double #starNumber :int #bookPrefs :String #facilities :String #cities :String

+ roomSearchCriteria RoomSearchCriteria > RoomType

* 1 + roomType

<< entity >> RoomType #roomTypeId :String #description :String #maxPaxNumber :int #maxAdultNumber :int #maxChildNumber :int

Associate Cities to Geo bookPrefs to AccBookPref facilities ti AccomFacility Generator dont support relation * > *

<< entity , enumeration >> AccomBookPreferences

<< entity , enumeration >> AccomFacility

Rapport de stage - Dveloppement sur lERP OfbizNogia

31

Un diagramme commun tous les modles UML des modules, est le diagramme "Package" qui dcrit les liens entre les packages mais surtout qui permet de garder une trace de toutes les modications appliques au modle du module avec les numros de version.

Package

Copyright (c) 2004, 2005 Neogia www.neogia.org


This UML schema must be considered as a program. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. All the program generated from this schema are so under the terms of the GNU General Public License.

party (from org ::neogia )

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place Suite 330, Boston, MA 021111307, USA.

product (from org ::neogia )

facility (from org ::neogia )

manufacturing (from org ::neogia )

ofbizNeogia version number, it must be equal to cvs version number, for control purpose 1.1 OHE diagram initialisation from Neogia Product Diagram 1.2 YTH Modelize Partners informations 1.3 YTH Link Partners entities to Neogia entities 1.4 SBA Algorythme implementation of PfeSelection choice. 1.5 MHA add entity FlightTravelSearchCriteria in lola product 1.6 MHA correct the tag value of attribute idName : nextseqId > nextSeqId 1.7 MHA add entity FlightTravel 1.8 MHA add tag ofbizEntityType idne to attribute idName of FlightTravelSearchCriteria add visualisation of class FlightTravelMetaData and his assocations 1.9 MHA put role between PfeSelection and ProductFamilyDet and ProductFamily 1.10 MHA add attribute noStopOver (boolean) to entity FlightTravelSearchCriteria 1.11 MHA rename noStopOver into direct create package flight/entities change namespace of entity flightTravel and FlightTravelSearchCriteria in flight / entities modify association between flightTravel and FlighTravelSearchCriteria it is now a composition 1.12 MHA rename direct into directFlight , direct is a reserved word 1.13 SBA Add relationTitle on association between PfeSelection and ProductFamilyDet in order to make a difference with the other association between PfeSelection and ProductFamily 1.14 SBA Add Class diagram Lola2shipment 1.15 PGO remove class_1 1.16 NMA Add Class diagram Hobbes 1.17 CBO Add AdditionalProductType Entity and AdditionalProduct association 1.18 NMA Add HotelSearch Entitie 1.19 NMA Add shortName on Accom enumeration and change AccomBookRemark by AccomBookPreferences 1.20 NMA update HotelSearchCriteria attributes 1.21 CBO update additionalProduct attributes 1.22 NMA remove relation *>* between HotelSearchCriteria and AccomFacility Geo and AccomBookPref Add getNextSeqId on primaryKey of Hotel and Room SearchCriteria Add relation Uom and HotelSearchCriteria and add many attribute on HotelSearchCriteria 1.23 CBO change deliveryTime type in AddProductCriteria

Rapport de stage - Dveloppement sur lERP OfbizNogia

32

Une fois les diagrammes crs, on passe dans le rpertoire du module, puis on lance la commande ant. Lexcution lit le chier UML puis lance la gnration des chiers. Une fois lexcution de cette dernire nie, on obtient une premire liste de chiers pour le module. Les chiers gnrs ne sont pas tous utilisables. Il y a, en gros, trois types de chier : les chiers utilisables directement aprs la gnration : tous les chiers ftl, de form, bsh, sources, de description des entits . les chiers valider soi mme : les chiers de dnition de page et les chiers sources contenant des objets hrits les chiers qui ncessitent un transfert du contenu manuellement : service.xml et controller.xml An de distinguer les chiers gnrs des chiers dvelopps, dans chaque rpertoire du module pouvant avoir ces deux types de chiers se trouvent deux rpertoires : "developed" et "generated" qui servent organiser le dveloppement.

3.3.3

Cration de larborescence du module

La premire tche, une fois les chiers gnrs, consiste savoir de quels chiers on a besoin. Les chiers contenus dans les rpertoires "generated" et les rpertoires cres sont automatiquement copis par le gnrateur dans le module correspondant. Les chiers des rpertoires "developed" et certains autres chiers comme ceux dnissant les entits (dans le rpertoire "modeldef") ne sont copis quune fois, la premire gnration. Pour les gnrations suivantes il faudra copier soit mme les chiers dont ont a besoin. Larborescence de Lola se prsente comme ceci : lola | +- build | +- cong | +- data | +- doc | +- entitydef | +- lib | +- modeldef | +- script | +- servicedef | +- src | +- webapp | +- webcommon | +- widget | +- xsd Une fois larborescence faite, vient le dveloppement spcique.

Rapport de stage - Dveloppement sur lERP OfbizNogia

33

3.3.4

Dvellopement des crans

Pour chaque cran du portail, un ux xml correspondant doit tre retourn. Le portail fait donc une requte html OfbizNogia. Pour illustrer ce dveloppement nous allons suivre un exemple que jai dvelopp. Il sagit de suite dcrans de recherche de vols. Voyons tout dabord le cheminement dune requte au serveur OfbizNogia :

Rapport de stage - Dveloppement sur lERP OfbizNogia

34

Lenchainement des requtes et des crans (ux xml) est fait comme ceci :

Rapport de stage - Dveloppement sur lERP OfbizNogia

35

3.3.5

Le chier "controller.xml"

La premire tche est de remplir le chier "controller.xml". A la rception de la requte, le serveur lit ce chier du module concern pour savoir ce qui doit tre excut. Il faut donc dnir les requtes dlivrant les ux xml correspondant la page de recherche des vols.

La "RequestMap" "FlightHome" dnit la page daccueil de la recherche des vols, "FlightHomeHtml" sert quant elle tester la rponse du serveur en html an de vrier et de valider le dveloppement. La rponse eectuer y est dcrite : <response name="success" type="view" value="FlightHome"/> Dans ce mme chier, sont dnies les "view-map" correspondantes aux rponses :

On y indique le ux xml gnrer via le chier xml indiqu :

Loption "type" indique quil sagit dun ux xml et "page" donne le chemin vers sa dnition. Les ux xml sont gnrs via un handler.

Rapport de stage - Dveloppement sur lERP OfbizNogia

36

Tous les "handler" ncessaires sont dnis en tte du chier "controller.xml" :

Rapport de stage - Dveloppement sur lERP OfbizNogia

37

3.3.6

Le chier "FlightScreens.xml"

Voyons maintenant le chier "FlightScreens.xml" et plus prcisment la dntion de lcran "FlightHome" :

Ce chier contient la dnition de tous les crans de recherche des vols. Chaque "screen" est dcompos en "section" qui elles mme sont composes dune partie "actions" et dune partie "widgets". La premire permet de raliser des actions sur lcran comme par exemple lappel dun service java ou dun chier beanshell (java interprt) an daecter des valeurs aux dirents champs de lcran. La partie "widgets" contient des balises "decorator-screen" et "decorator-section" qui dnissent la dcoration gnrale de lcran. Dans le cas du module Lola, les dcorateurs ont t algs pour ne pas surcharger les ux xml de rponse. Enn chaque "screen" inclut une ou plusieurs "form". Cest le rle de la balise "include-form" :

Rapport de stage - Dveloppement sur lERP OfbizNogia

38

3.3.7

Le chier "FlightForms.xml"

De mme que pour le chier "FlightScreens.xml", le chier "FlightForms" contient toutes les "form" ncessaire la recherche des vols. Les "form" dnissent les champs des crans et dans notre cas des ux xml. Voici une partie de la "form" qui dcrit la page daccueil de la recherche des vols :

Dans le module lola il est possible dutiliser les "form" de type "single" et "list" car le handler xml sait les traiter. Chaque "eld" correspond un champ de lcran et il est possible dy acher toutes sortes de donnes, dune simple valeur texte une liste de valeurs contenues dans des entits de la base de donnes du serveur OfbizNogia. Il est aussi possible de rcuprer des variables stockes dans le contexte. Maintenant que nous avons vu un exemple simple, voyons un autre exemple des tches que jai eu raliser qui ncessite lutilisation des services et vnements java.

Rapport de stage - Dveloppement sur lERP OfbizNogia

39

3.3.8

Dvellopement des processus

Lexemple prcdent dune "request-map" nutilisait pas ni dvnement ni de services java. Les exemples suivants illustrent leur utilisation :

Les services Pour la "resquest-map" "ReneFlightDestination" dont le but est daner la destination souhaite pour le vol recherch, il peut y avoir trois rponses direntes suite lexcution du service java <event type="service" invoke="reneFlightDestination"/> Dans le cas o la destination na pas de correspondance, le service retourne le message "noResult" et le ux xml correspondant lcran daccueil "FlightHome" est renvoy. Si la destination a une seule correspondance, le message est "noReneNecessary" et le ux "ListFlight" qui liste les rsultats de la recherche est renvoy. Enn si il existe plusieurs choix possibles pour la destination, le message "reneNecessary" est retourn par le service et un ux correspondant un cran de choix "ReneFlightDestination" est envoy au portail. Avant de dvelopper proprement parler le service, il faut dj le dnir dans le chier "/servicedef/developed/services.xml" :

Parmis dautres dnitions de services, le service "reneFlightDestination" est dni avec des paramtres en entre et en sortie. Loption "default-entity-name" permet de lier les paramtres dentre avec les attributs dune entit. Ainsi le champ "auto-attributes" signie que tous les attributs de lentit "FlightTravelSearchCriteria" font partie des paramtres dentre et de sortie "mode="INOUT"" et quil ne sont pas obligatoire "optional="true"". Une liste de rsultats est envoy en paramtre de sortie et par dfaut un message associ la rponse peut tre renvoy.

Rapport de stage - Dveloppement sur lERP OfbizNogia

40

Algorithme dachage de la destination Entre = destination :String Sortie = message :String + listDestination :List List listDestination < listeVide Si(destination == null)Alors | retourner "noResult" FinSi Si(isAnAirport(destination))Alors | listDestination < destination Sinon | Si(isACity(destination))Alors | | listDestination < ListeAirportCity(destination) ; | Sinon | | Si(isACountry(destination))Alors | | | List listCity < ListeCityCountry(destination) ; | | | TantQue( !Fin(listCity))Alors | | | | listDestination < ListeAirportCity(listCity.extract()) ; | | | FinTantQue | | FinSi | FinSi FinSi Entier taille < listDestination.size() Si(taille == 0)Alors | retourner "noResult" FinSi Si(taille == 1)Alors | retourner "noReneNecessary" FinSi Si(taille > 1)Alors | Si(taille > 10)Alors | | listDestination < TrierRduireTaille(listdestination) | FinSi | retourner ("reneNecessary" + listDestination) FinSi

Rapport de stage - Dveloppement sur lERP OfbizNogia

41

Voici un extrait du service java "reneFlightDestination" qui valide la destination du vol, propose une liste de choix possibles ou renvoit la page daccueil si aucune correpondances avec des destinations connues dans la base nont t trouves. ... public class FlightServices { private static final String module = FlightServices.class.getName(); public static Map refineFlightDestination(DispatchContext ctx, Map context) { //4 cas possibles destination=un a c roport, destination=une ville, //destination=pays/r c gion, destination ne corespond aucun geo GenericDelegator delegator = ctx.getDelegator(); Locale locale = (Locale) context.get("locale"); Map result = new FastMap(); if(context.get("destination") == null){ result.put(ModelService.RESPONSE_MESSAGE, "noResult"); result.put(ModelService.ERROR_MESSAGE, "no corresponding destination"); return result; } String destination = ((String)context.get("destination")).toUpperCase(locale); List flightListDestinationResult = new FastList(); //1er cas, destination est un a c roport Map tmp = isAnAirport(destination, delegator); String response = (String)tmp.get("response"); if(response.equals("true")){ Geo airport = (Geo)tmp.get("airport"); FlightGeo flightGeo = new FlightGeo(airport.getGeoId(),airport.getGeoName() ,airport.getGeoCode(),(String)airport.get("geoTypeId"),0); flightListDestinationResult.add(flightGeo); }else { //2eme cas, destination est une ville ... if(flightListDestinationResult.isEmpty()){ result.put(ModelService.RESPONSE_MESSAGE, "noResult"); result.put(ModelService.ERROR_MESSAGE, "no corresponding destination"); } if(flightListDestinationSize == 1){ result.put("destination",(String)((FlightGeo)flightListDestinationResult. listIterator().next()).getGeoId()); result.put(ModelService.RESPONSE_MESSAGE, "noRefineNecessary"); result.put(ModelService.ERROR_MESSAGE, "one corresponding destination"); } if(flightListDestinationSize > 1){ //trie de la liste pour sortir les dix meilleurs r c sultats if(flightListDestinationSize > 10){ flightListDestinationResult = sortListResult(flightListDestinationResult); } result.put(ModelService.RESPONSE_MESSAGE, "refineNecessary"); result.put(ModelService.ERROR_MESSAGE, "severals corresponding destinations"); result.put("flightListDestinationResult",flightListDestinationResult); } return result; }

Rapport de stage - Dveloppement sur lERP OfbizNogia

42

Les vnements Contrairement aux services java qui sont enregistrs sur le serveur, les vnements sont surtout utiliss pour appeler des services comme dans lexemple suivant, la ligne en gras est un appel au service "getFlightAvailabilities" avec en entre une "Map" contenant les paramtres. public class FlightEvents { private static final String module = FlightEvents.class.getName(); public static final String FLIGH_SEARCH_KEY = "flighLastSearchKey"; public static final String FLIGH_AVAILABILITIES_KEY = "flighLastSearchResult"; public static String getFlightTravel(HttpServletRequest request, HttpServletResponse response) { LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); GenericValue userLogin = (GenericValue) request.getAttribute("userLogin"); Locale locale = UtilHttp.getLocale(request); HttpSession session = request.getSession(); ...

Map result = null; try { Map serviceContext = UtilMisc.toMap("flightTravelSearchCriteria", flightTravelSearchCrite result = dispatcher.runSync("getFlightAvailabilities", serviceContext); } catch (GenericServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); return "error"; } if (!(ServiceUtil.isError(result) || ServiceUtil.isFailure(result))) { List flightTravelList = (List) result.get("flightTravelList"); session.setAttribute(FlightEvents.FLIGH_SEARCH_KEY, searchKey); session.setAttribute(FlightEvents.FLIGH_AVAILABILITIES_KEY, flightTravelList); } // set the messages in the request; this will be picked up by messages.ftl and displayed request.setAttribute("_ERROR_MESSAGE_LIST_", result.get(ModelService.ERROR_MESSAGE_LIST)); request.setAttribute("_ERROR_MESSAGE_MAP_", result.get(ModelService.ERROR_MESSAGE_MAP)); request.setAttribute("_ERROR_MESSAGE_", result.get(ModelService.ERROR_MESSAGE)); request.setAttribute("_EVENT_MESSAGE_LIST_", result.get(ModelService.SUCCESS_MESSAGE_LIST)); request.setAttribute("_EVENT_MESSAGE_", result.get(ModelService.SUCCESS_MESSAGE)); return (String) result.get(ModelService.RESPONSE_MESSAGE); } ...

Rapport de stage - Dveloppement sur lERP OfbizNogia

43

Les chiers "beanshell" Dans la partie "action" de la dnition des "screen", du code "beanshell" peut tre excut. Il sagit de code java interprt. Durant lexcution des chiers bsh, diverses informations sont inscrites dans le contexte. Ces dernires peuvent provenir des rsultats dune recherche dans la base de donnes, dun appel de fonction ou encore de lutilisation dalgorithme. Lexemple qui suit montre le "screen" qui propose une liste de destinations possibles et qui fait appel un script ".bsh"

Le script ".bsh" correspondant : import java.util.Map; import java.util.List; import java.util.ListIterator; import import import import import import javolution.util.FastMap; javolution.util.FastList; org.ofbiz.entity.GenericValue; org.ofbiz.base.util.UtilMisc; org.ofbiz.lola.flight.ComparatorCityAirport; org.ofbiz.lola.flight.FlightGeo;

List flighListDestinationResultBefore = (List)parameters.get("flightListDestinationResult"); List flighListDestinationResultAfter = new FastList(); int count = 0; if(flighListDestinationResultBefore != null){ ListIterator listIt = flighListDestinationResultBefore.listIterator(); while(listIt.hasNext()){ count = count+1; Map maMap = new FastMap(); FlightGeo flightGeo = (FlightGeo)listIt.next(); maMap.put("geoId",flightGeo.getGeoId()); if(flightGeo.getGeoTypeId().equals("LOLA_CITY_CODE")) maMap.put("geoName",flightGeo.getGeoName()+" tous les aeroports "); else maMap.put("geoName",flightGeo.getGeoName()); maMap.put("geoCode","("+flightGeo.getGeoCode()+")"); flighListDestinationResultAfter.add(maMap); } } context.put("flightListDestinationResult",flighListDestinationResultAfter);

Rapport de stage - Dveloppement sur lERP OfbizNogia

44

3.3.9

Exemple de ux xml

Le rsultat de la recherche des vols se prsente sous la forme dun ux xml alg.

<?xml version="1.0" encoding="UTF-8"?> <screen:screen xmlns:form="http://www.neogia.org/xsd/xml-widget-form" xmlns:screen="http://www.neogia xsd/xml-widget-screen" name="ShowFlightSelected"> <form:single-form name="showFlightSelected" title="OPTIONS ET MODE DE LIVRAISON" target="/lola/cont StoreFlightTravel;jsessionid=330D446424E8553B5D7D01861CF3BAD5.jvm1"> <form:field-group> <form:field name="flight"> <form:display> <form:value>Vol PARIS - LONDON</form:value> </form:display> </form:field> <form:field name="nbPassengers"> <form:display> <form:value>2 adulte(s) A</form:value> </form:display> </form:field> </form:field-group> <form:field-group> <form:field name="dateHourDepartureGo"> <form:display> <form:value>22 janv. 2007 &amp;agrave; 12:10:00</form:value> </form:display> </form:field> <form:field name="dateHourDepartureBack"> <form:display> <form:value>22 janv. 2007 &amp;agrave; 12:20:00</form:value> </form:display> </form:field> <form:field name="company"> <form:display> <form:value>easyJet</form:value> </form:display> </form:field> <form:field name="basePrice"> <form:display> <form:value>149.6748&amp;euro; / adulte </form:value> </form:display> </form:field> </form:field-group> <form:field-group> <form:field name="passengerPrice"> <form:display> <form:value>299.3496 &amp;euro; TTC</form:value> </form:display> </form:field> <form:field name="serviceCost"> <form:display> <form:value>+35.00 &amp;euro; TTC</form:value> </form:display> </form:field> </form:field-group> <form:field name="info1"> <form:display> <form:value/> </form:display>

Rapport de stage - Dveloppement sur lERP OfbizNogia

45

</form:field> <form:field name="info2"> <form:display> <form:value/> </form:display> </form:field> </form:single-form> ...

Chapitre 4

Bilan

Rapport de stage - Dveloppement sur lERP OfbizNogia

47

4.1

Bilan professionnel

Le premier point positif de ce stage a t pour moi de travailler sur des logiciels libres. Jai pu avoir un bon aperu des mthodes de travail en entreprise. Le travail sur un ERP ma permis de daborder et dapprofondir un grande nombre de thmes relis au monde de lentreprise, tant dans le domaine technique que fonctionnel. Outre ce ct l, les dveloppements dans un environnement J2EE mont permis dacquerir une certaine exprience dans le domaine des architectures logicielles. jai galement pu me familiariser avec un large panel de technologies de haut niveau comme la gnration de code et de prendre conscience de limportance du travail en quipe.

4.2

Bilan personnel

Sur le plan personnel jai pu approcher les dveloppements dapplications libres, leur fonctionnement et surtout la communaut qui entoure ces projets. Le fait de travailler dans une socit de service spcialise dans le logiciel libre a t pour moi un moyen de daborder le monde du libre et den conforter mon intrt et mes connaissances. Jai aussi pu proter de la convivialit de lquipe Nride pour mintresser leur exprience et leur parcours respectif.

Conclusion
OfbizNogia est un ERP trs complex et qui ncessite une comprhension globale an de dvelopper correctement les tches. En eet il arrive frquement quil faille adopter une vision gnrique ce qui entraine gnralement de retoucher des modules autres que celui sur lequel on travaille. Pour cel le dbut du stage na pas t toujours vident aux vues du nombre de nouveaux outils et de technologies quil a t ncessaire dapprendre utiliser et comprendre. Cependant les tches qui mont t assignes ont t accomplies dans lenssemble. Ce stage ma permis de me familiariser avec les rgles techniques exigentes dans des dveloppements complexes comme ceux qui sont eectus sur OfbizNogia et qui ncessitent de bonnes connaissances avant de pouvoir eectuer un travail cace. Enn, mis part lapport technique, ce stage ma ouvert la dynamique du logiciel libre.

Rsum : Durant ce stage jai ralis des dveloppements sur lERP libre OfbizNeogia. Jai appris utiliser et jai utilis des technologies diverses et complexes telles que lenvironnement J2EE, le java interprt (beanshell), freemarker, ou encore la gnration de code. Mots cl : Ofbiz, Neogia, ERP, Gnration de code, java, J2EE, beanshell, xml, freemarker.

Abstract : During this training course I carried out developments on the free ERP OfbizNeogia. I learned how to use and I used various and complex technologies such as interpreted environment J2EE, the java (beanshell), freemarker, or the code generation. Keywords : Ofbiz, Neogia, PGI, Code generation, java, J2EE, beanshell, xml, freemarker.

Encadrants : Olivier HEINTZ

Etudiants : Simon BAUDRY 2eme Anne - 2005-2006