Rapport de Stage : Développement sur l'erp libre OFBiz-Néogia



Documents pareils
Rapport de stage Développements sur l ERP libre Ofbiz

Rapport de Stage : Développement sur l'erp libre OFBiz Néogia

Business & High Technology

SAGE: Introduction. 1 Connections WEB. 2 Généralités. 1.1 Sur le web insset. 2.1 Conception modulaire. Sage. 100-Introduction

informatisé de l'entreprise

Business & High Technology

Développement d un composant de «gestion de stocks» pour l ERP libre Ofbiz

Chapitre 1 : Introduction aux bases de données

DOCUMENTS DE DECOUVERTE CHAPITRE 1 L ORGANISATION DE LA COMPTABILITE DANS L ENTREPRISE

Communiqué de Lancement

HR CRM VENTES PROJETS ACHATS PRODUCTION COMPTABILITE GESTION DES STOCKS

Le terme «ERP» provient du nom de la méthode MRP (Manufacturing Ressource Planning) utilisée dans les années 70 pour la gestion et la planification

DOSSIER DE PRESSE. Contact presse. ALPHIX sas 1, rue de la Presse SAINT ETIENNE Tél Fax

Documentation de produit SAP Cloud for Customer (novembre 2013) Nouveautés de SAP Cloud for Customer pour les administrateurs

MALIN Nicolas DESS SIRAD. Rapport de Stage. Septembre /61

Etude comparative : ERP open source. Table de matières

ERP open source une solution pour les entreprises. 17/02/2010 Page: 1

Formation à l'administration de votre site E-commerce Page 1 sur 15

Business Intelligence avec SQL Server 2012

Sage CRM. 7.2 Guide de Portail Client

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

ERP5. Gestion des Services Techniques des Collectivités Locales

Contexte : «l e-business» TECHNIQUES DE MARKETING EN LIGNE. Contexte : «l e-business» Création de valeur 02/02/12

Introduction MOSS 2007

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Architecture d'entreprise : Guide Pratique de l'architecture Logique

Communiqué de Lancement. Sage Intégrale V4.50

Rapport de projet de fin d étude Développement d un MRP à capacité finie pour l ERP libre OfbizNéogia

Les Réunions Info Tonic. Utiliser les logiciels libres dans mon entreprise Mardi 21 janvier 2014

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

TAGREROUT Seyf Allah TMRIM

Découvrir Open ERP par l'exemple

Prise en main du BusinessObjects XI R2 Service Pack 2/ Productivity Pack

CAP BOX Note utilisateurs

Le module Supply Chain pour un fonctionnement en réseau

OpenERP, un progiciel de gestion intégré pour entreprise, distribué sous licence libre (GPL), qui répond de manière efficace à la complexité et aux

STAGE2 STAGIAIRE / NIKOLAOS TSOLAKIS. 16/02/2015 : choix des outils nécessités pour l application : Didier Kolb, le maitre de stage

Manuel d utilisation du site web de l ONRN

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

En un coup d œil le descriptif de la solution OpenERP

Livre Blanc WebSphere Transcoding Publisher

Alfresco Guide Utilisateur

Utiliser Access ou Excel pour gérer vos données

CONNECTEUR PRESTASHOP VTIGER CRM

PROST PROST. L'ERP qui intègre la gestion commerciale Sage

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Didier MOUNIEN Samantha MOINEAUX

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Du paradigme Suivi/ordonnancement/GPAO au paradigme ERP/APS/MES : révolution ou évolution?

Simplifier la gestion de l'entreprise

Guide de configuration de SQL Server pour BusinessObjects Planning

Séminaires Système D Information. Formation Conduite du Changement. Préambule

VTigerCRM. CRM : Logiciel de gestion des activités commerciales d'une (petite) entreprise

CINEMATIQUE DE FICHIERS

2 Programme de formations ERP... 7

Les ERP. Enterprise Resource Planning

Présentation de l'architecture QlikView. Livre blanc sur la technologie QlikView. Date de publication : octobre

l E R P s a n s l i m i t e

Le stockage local de données en HTML5

Alfresco et TYPO3 Présenté par Yannick Pavard dans le cadre des rencontres WebEducation Février 2008

Serveur de travail collaboratif Michaël Hoste -

SAP Solution Sales and Billing Documentation supplémentaire

Accélérateur de votre RÉUSSITE

MS PROJECT Prise en main. Date: Mars Anère MSI. 12, rue Chabanais PARIS E mail : jcrussier@anere.com Site :

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

OpenERP, un progiciel de gestion intégré pour entreprise, distribué sous licence libre (GPL), qui répond de manière efficace à la complexité et aux

GESTION LOGISTIQUE GESTION COMMERCIALE GESTION DE PRODUCTION

RAPPORT DE CONCEPTION UML :

LICENCE PROFESSIONNELLE SYSTEMES INFORMATIQUES & LOGICIELS

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques

ORACLE TUNING PACK 11G

Reporting Services - Administration

Offre de services. PHPCreation Inc. - Date : Présenté à : À l'attention de : Représentant :

Projet : PcAnywhere et Le contrôle à distance.

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

Refonte front-office / back-office - Architecture & Conception -

Compte-rendu de projet de Système de gestion de base de données

Wildix Web API. Guide Rapide

Génie logiciel pour le commerce électronique Hiver 2003 Prof.: Julie Vachon

Manuel utilisateur Portail SAP

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Analyse comparative entre différents outils de BI (Business Intelligence) :

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

TeamViewer 9 Manuel Management Console

Mise en œuvre du PGI dans les enseignements tertiaires

ANNEXES. Evaluation de la formation à Polytech Lille Département GIS. Enseignements les plus utiles. Enseignements à renforcer

InfoColl : mise en œuvre du PGI Open ERP

1 Introduction. Business Intelligence avec SharePoint Server 2010

Conduite de projets informatiques Développement, analyse et pilotage (2ième édition)

Les Architectures Orientées Services (SOA)

ÉCOLE POLYTECHNIQUE FÉDÉRALE DE LAUSANNE. Manuel de formation. Achats

Sql Server 2005 Reporting Services

Table des matières. Chapitre 1 - Outils Espace de stockage Rafraichir Déposer un document Créer un dossier 5

Module ebay pour PrestaShop Guide du vendeur

PHP 5.4 Développez un site web dynamique et interactif

Transcription:

Polytech Tours Département Informatique 64, avenue Jean Portalis 37200 - Tours : Développement sur l'erp libre OFBiz-Néogia Responsable de Stage : Étudiant : Olivier HEINTZ Néréide 3 bis, les Isles - 37270 Véretz

Remerciements Mes remerciements vont tout d'abord à mon responsable de stage Monsieur Olivier Heintz, pour sa disponibilité, ses explications, sa patience et sa bonne humeur. Je souhaite également remercier Messieurs Jean-Luc Malet et Pierre Gaudin, avec qui j'ai collaboré sur le modules Order et Facility, pour les multiples éclaircissements rapidement dispensés, ainsi que Madame Sophie Benaroch pour sa parfaite connaissance de l'anglais. Je n'oublie pas mes collègues stagiaires, Monsieur Majid El Idrissi et Monsieur Peter Goron ; le premier pour son esprit «droit» mais néanmoins enjoué, le second pour son aide claire et précise ainsi que son inexpugnable sérieux. Je souhaite enfin remercier tous les collaborateurs de Néréide pour l'ambiance agréable et conviviale qu'ils ont su faire régner dans leur société, ainsi que tous les membres de la famille Heintz de nous accueillir chez eux à l'heure du déjeuner et spécialement Madame Catherine Heintz pour ses desserts inégalés. 2

Sommaire Table des matières Remerciements... 2 Sommaire...3 Introduction... 4 Présentation de l'entreprise... 5 1.Néréide...6 2.Le réseau Libre-entreprise...7 3.Les sociétés partenaires de Néréide... 8 Présentation de l'erp OFBiz-Néogia... 9 1 Généralités sur les ERP...10 2 Présentation d'ofbiz... 12 3 OFBiz-Néogia... 22 Mes réalisations... 26 1 Procédure de réalisation d'un ordre d'achat...27 4 Diagramme UML simplifié d'order...38 5 Diagramme UML des relations entre Facility et Order...40 6 Réalisations sur le module Order...41 7 Réalisations sur le module Facility... 51 Conclusion... 53 3

Introduction Mon stage de 3ème année de l Ecole Polytechnique Universitaire de Tours, s'est déroulé au sein de la société Néréide, SSLL (Solutions et Services en Logiciels Libres), spécialisée dans le domaine de l'intégration de PGI Open Source à destination des PME. En effet, le logiciel libre, Open-Source et Linux compris, n'est plus aujourd'hui un no-mans'land. Près d'une grande entreprise sur deux, déclare avoir déjà déployé des solutions logicielles non propriétaires. L'un des principaux ressorts du "Libre" c'est la réduction des coûts tout en circonscrivant les risques. Mais ce n'est pas tout, utiliser des logiciels libres représente aussi la garantie de travailler sur des standards ouverts et donc interopérablese et de bébféficier. En outre, le logiciel libre mobilise souvent des communautés, qui le font évoluer au gré des nouveaux besoins, et qui peuvent répondre rapidement à des demandes précises. Mon travail au cours de ce stage s'est tout d'abord axé autour de la compréhension du PGI OFBizNéogia : son implémentation, son fonctionnement et l'interconnexion entre les différents modules. Je me suis ensuite attaché à implémenter diverses fonctionnalités sur les modules Order et Facility. Ce rapport se divise en trois parties : la première partie s'attache à présenter la société Néréide ; la seconde tente de présenter les ERP OFBiz et OFBiz-Néogia ; les développements que j'ai effectués sont traités dans la dernière partie de ce document. 4

Présentation de l'entreprise 5

1. Néréide «La collaboration et les bonnes pratiques en action.» Néréide est une jeune SSLL, fondée en 2004 et spécialisée dans l'intégration de l'erp Open Source Ofbiz-Néogia auprès des PME. Il s'agit d'une SARL à capital variable. Son siège social se situe à une dizaine de kilomètres de Tours : Société Néréide 3 bis, Les Isles 37270 VERETZ En complémentarité avec l'intégration d'ofbiz-néogia, cette société propose une gamme complète de services : développement d'applications spécifiques : réaliser ou accompagner le développement de fonctions complémentaires à OFBiz-Néogia et spécifiques au client ; administration de systèmes : mettre en place un élément système, un réseau, intégrer et migrer des composants systèmes, administration de système existant... ; maintenance et support applicatif (TMA : Tierce Maintenance Applicative) : prestations de support et de maintenance corrective et / ou évolutive pour toutes les applications développées à partir de l'architecture OFBiz-Néogia ; gestion du système d'information (infogérance) : gestion globale du système d'information du client, prestation effectuée en trois phases : inventaire détaillé, transition et transformation. De part sa participation au réseau Libre-Entreprise son offre de service peut être étendue à toutes les compétences des membres de ce réseau. L'équipe de Néréide est actuellement composée de 7 personnes. L'équipe technique est constituée de personnes expertes dans la mise en œuvre de PGI Progiciel de Gestion Intégré, (essentiellement Baan, SAP, Oracle) issues de grands cabinets de conseils internationaux. 6

2. Le réseau Libre-entreprise Le réseau Libre-entreprise est un rassemblement d'entreprise toutes fortement impliquées dans le domaine du logiciel libre. Les membres du réseau ont en commun des valeurs et un mode de fonctionnement basé sur : le partage des connaissances ; la capitalisation des expériences clients et des réalisations ; le respect de tous les acteurs d'un projet ; la qualité des prestations. L'appartenance d'une entreprise au réseau fait l'objet d'une évaluation par les autres membres sur le respect de ces valeurs qui forment la base du réseau. Un compte rendu mensuel permet d'avoir une idée de la situation précise de chaque entreprise, il porte sur leurs activités, leurs finances... De nombreux documents sont partagés afin d'aider les membres du réseau dans leur démarches : documents sur la création de l'entreprise ; documents techniques ; modèles de documents ; Un ensemble d outils de travail collaboratif est mis à la disposition des membres du réseau pour simplifier la communication et le partage des connaissances : calendrier ; listes de diffusion partagées ; serveur de messagerie instantanée (Jabber) ; le laboratoire Libre-entreprise : une plate-forme d hébergement de projets informatiques tel que le célèbre SourceForge. Elle offre les mêmes services, à savoir, site web, espace ftp, accès cvs, mailing-lists, etc. ; Planet Libre-Entreprise : c est un aggrégateur de contenu qui permet de suivre l activité des membres du réseau. 7

3. Les sociétés partenaires de Néréide Néréide a développé des rapports étroits de collaboration auprès de différentes sociétés afin de faire bénéficier de leurs compétences le développement d'ofbiz-néogia. Les 7 Arts La SSLL, les 7 Arts s'est spécialisée dans l'environnement libre depuis de nombreuses années, aussi bien à l'attention des PME que des particuliers dans la région de Montpellier. Son créateur, Jacques Le Roux, apporte sa contribution active au développement de l'erp OFBiz-Néogia, notamment sur le module Point de vente. TAU Le développement du module Gestion de Production d'ofbiz a été l'occasion de travailler en partenariat avec la SSII TAU, société située en Italie. Depuis septembre 2003, elle participe concrètement à l'élaboration du module Gestion de Production en partenariat avec l'équipe de Néréide. Son expérience dans la reprise des bases de données AS400 vers OFBiz est un atout majeur. Code Lutin Créée en 2002 par Cédric Pineau et Benjamin Poussin, Code Lutin est une jeune Société de Services nantaise spécialisée dans l'environnement libre. Leurs expertises métiers dans la modélisation objet en UML et la génération de code, les ont naturellement amenés à travailler avec Néréide pour arriver à une parfaite maîtrise des outils de génération de code, à travers l'utilisation de LutinGenerator (outil de génération de code créé par la société Code Lutin) utilisé dans le processus de développement de Néogia. 8

Présentation de l'erp OFBiz-Néogia 9

1 Généralités sur les ERP 1.1 Définition Un PGI progiciel de gestion intégré (en anglais Enterprise Resource Planning ou ERP) est un «logiciel qui permet de gérer l'ensemble des processus d'une entreprise en intégrant l'ensemble des fonctions de cette dernière comme la gestion des ressources humaines, la gestion comptable et financière, l'aide à la décision, mais aussi la vente, la distribution, l'approvisionnement, le commerce électronique»(définition du grand dictionnaire terminologique de l'office québécois de la langue française (OLF)) Le principe fondateur d'un ERP est de construire une application (paie, comptabilité, gestion de stocks ) de manière modulaire tout en partageant une base de données unifiée. Cela crée une différence importante avec la situation pré-existante car les différentes fonctions de l'entreprise étaient gérées par une multitude d'applications dédiées souvent hétérogènes. Ainsi, les Achats, la Comptabilité, la Gestion des Stocks, les Ressources Humaines, la Gestion Commerciale,... sont maintenant totalement interconnectés. Avec l'arrivée de l'erp, les données sont désormais standardisées et partagées entre les différents modules, ce qui élimine les saisies multiples et évite l'ambiguïté des données multiples de même nature (ex : «Clermont-Fd», «Clermont Ferrand», «Clermont-Ferrand»,...). Ceci permet un accroissement considérable de la fiabilité des informations puisque la source des données est unique, d'où une réduction des délais et des coûts de traitements. L'autre principe qui caractérise un ERP est l'usage systématique de ce qu'on appelle un moteur de workflow, et qui permet, lorsqu'une donnée est entrée dans le système d'information, de la propager dans tous les modules du système qui en ont besoin, selon une programmation prédéfinie. Ainsi, on peut parler d'erp lorsqu'on est en présence d'un système d'information composé de plusieurs applications partageant une seule et même base de données, par le biais d'un système automatisé prédéfini éventuellement paramétrable (un moteur de workflow). 1.2 Avantages Comparés à des applications sur mesure, les ERP / PGI présentent plusieurs avantages : optimisation des processus de gestion (flux économiques et financiers) ; cohérence et homogénéité des informations ; intégrité et unicité du système d'information ; partage du même système d information facilitant la communication interne et externe ; globalisation de la formation (même logique, même ergonomie) ; maîtrise des coûts et des délais de mise en œuvre et de déploiement. Il est important de remarquer que la mise en place d'un ERP dans une entreprise est souvent le déclencheur d'une réorganisation et rationalisation de l'ensemble des tâches et processus de l'entreprise. 10

1.3 Inconvénients Les ERP / PGI ne sont cependant pas exempts d'inconvénients : 1.4 coût élevé ; périmètre fonctionnel souvent plus large que les besoins de l'organisation ou de l'entreprise (le progiciel est parfois sous-utilisé) ; lourdeur et rigidité de mise en œuvre ; difficultés d'appropriation par le personnel de l'entreprise ; nécessité d'une bonne connaissance des processus de l'entreprise (par exemple, une commande d'achat et une commande de vente nécessitent deux processus différents : il est important de savoir pourquoi, de savoir décrire les points communs et les différences entre ces deux processus de façon à bien les paramétrer) ; nécessité d'adapter parfois certains processus de l'organisation ou de l'entreprise au progiciel ; nécessité d'une maintenance continue. Les ERP libres Le secteur des ERP a depuis quelques années déjà subi un petit bouleversement : l'arrivée de logiciels libres (OFBiz Tiny ERP, ERP5, Compiere,...) sur des terres où règnent en maîtres les logiciels propriétaires : SAP, BAAN, Oracle,... Le premier avantage des ERP Libre sur leurs alter-ego propriétaires est bien sûr l'absence de coût de licence ; coût qui peut souvent apparaître comme prohibitif pour les PME. Un autre atout important est la possibilité d'adapter et de faire évoluer soi-même le progiciel sans dépendre du bon vouloir de la société éditrice. En outre, le logiciel libre mobilise souvent des communautés, qui le font évoluer au gré des nouveaux besoins, et qui peuvent répondre rapidement à des demandes précises. De plus comme tout logiciel libre, les ERP libre donne la garantie de travailler sur des standards ouverts et donc inter-opérables, avantages stratégiques pour beaucoup d'entreprises. En parallèle avec l'augmentation de l'utilisation des ERP en France :48 % des PME françaises sont équipées, et en janvier 2005, 9 % des PME françaises envisageaient d'acquérir et de mettre en place un nouvel ERP dans l'année (Atelier groupe BNP Paribas), l'intérêt porté par les entreprises sur le logiciel libre progresse. Ainsi, 58 % des entreprises envisageraient de passer de leur ERP propriétaire actuel à un ERP libre en 2004 (ERP2004 INFOWORLD). La présence du logiciel libre sur le marché des ERP n'est donc plus marginal et les ERP Open Source prennent leurs places dans ce secteur. 11

2 Présentation d'ofbiz OFBiz (pour «Open For Business») est un projet d'erp Open source initié en mai 2001 par deux américains : Andy Zeneski et David E. Jones. Il est actuellement publié sous licence MIT, licence libre et permissive, c'est-à-dire qu elle ne fixe aucune obligation et / ou interdiction quant à l utilisation, la modification, l extension et la commercialisation du logiciel. Afin de vivre de leur progiciel, les deux initiateurs du projet - Andy Zeneski et David E. Jones - ont créé la société Undersun Consulting (par analogie Andersen Consulting, un des «Big Five» du monde du Conseil en 1996-97) avec qui ils proposent tout l'éventail de service possible autour d'ofbiz : installation et intégration d'ofbiz, développements spécifiques, formation des utilisateurs... OFBiz offre déjà un grand choix de fonctionnalités incluant : e-commerce avancé ; gestion de catalogue ; gestion des promotions et des prix ; gestion des ventes et achats ; gestion des clients ; gestion de stock ; mouvement de stocks, sélection par lots ; comptabilité ; gestion de fabrication ; gestion de projets (événements, tâches, demandes, etc.) ; gestion de contenu. Ce projet compte rassembler à terme tous les modules permettant de gérer les principaux processus d'une entreprise : SCM (Supply Chain Management), ou en français GCL, (Gestion de la Chaîne Logistique) CRM (Customer Relationship Management), ou GRC (Gestion de la Relation Client) MRP (Manufacturing Resource Planning), ou GPP (Gestion et Planification de la Production) CMS (Content Management System), ou SGC (Système de Gestion de Contenu) CMMS (Computerized Maintenance Management System), ou GMAO (Gestion de la Maintenance Assistée par Prdinateur ) Le progiciel est entièrement écrit en JAVA sous une architecture J2EE, il respecte de nombreux standards notamment J2EE et XML afin de garantir son évolutivité. Son énorme avantage réside dans sa parfaite compatibilité avec tous les serveurs d'applications J2EE et toutes les bases de données du marché. 12

2.1 Architecture d'ofbiz OFBiz obéit au standard J2EE qui offre un première couche d'abstraction : Image 1 : J2EE et OFBiz 13

Comme tout ERP qui se respecte, OFBiz est décomposé en niveaux, chacun offrant des services particuliers. Image 2 Architecture d'ofbiz 14

De plus, les niveaux applicatifs sont décomposés en module permettant un développement modulaire tout en facilitant la réutilisabilité du code. Les interactions entre modules ainsi fixées, on peut aisément changer l'implémentation d'un module sans bouleverser complètement le système. Image 3 Architecture détaillée d'ofbiz 2.2 Le FrameWork Le framework d'ofbiz est un de ses points forts. S'il a été développé en premier lieu pour OFBiz, il est parfaitement utilisable pour d'autre application. Son fonctionnement repose sur trois composants majeurs que nous allons décrire : l'entityengine, le ServiceEngine, le ControlServlet. Entity Engine L'Entity Engine d'ofbiz offre un ensemble d'outils et de mécanismes permettant la modélisation et la gestion des données. Une entité est un élément de donnée défini par des champs et un ensemble de relations avec les autres entités. La modélisation est basée sur le modèle entité-relation. Son but premier est de gérer automatiquement la persistance des données dans une application transactionnelle. L'Entity Engine permet de s'abstraire de la base de données sous-jacente utilisée. Ainsi les entités sont définies dans des fichiers au format XML (composant/entitydef/entitymodel.xml) qui permettront de faire le lien avec la source de données. Voici un exemple de définition d'une entité : <entity entity-name="ordertype" package-name="org.ofbiz.order.order" title="order Type Entity"> <field name="ordertypeid" type="id-ne" /> 15

<field name="parenttypeid" type="id-ne" /> <field name="hastable" type="indicator" /> <field name="description" type="description" /> <prim-key field="ordertypeid" /> <relation type="one" fk-name="order_type_parent" title="parent" rel-entity-name="ordertype"> <key-map field-name="parenttypeid" rel-field-name="ordertypeid" /> /relation> </entity> Sont donc définis : les propriétés de l'entité : nom, paquet, titre ; les propriétés des champs : nom, type (qui est automatiquement traduit en type SQL avec un correspondant Java) le nom des clés primaires (qui peuvent être composées) ; les relations : le nom de l'entité avec qui se fait la relation, la cardinalité de la relation (1 ou 0..1 ou 0..*) Pour permettre de minimiser au maximum le code spécifique a une entité, les objets générés sont génériques et on accède aux champs par une Map, la clef étant le nom du champ. Les classes du package org.ofbiz.entity définissent l'api pour interagir avec l'entity Engine. Les classes utiles pour l'utilisateur sont : GenericValue : l'objet générique représentant l'entité ; GenericDelegator qui permet de manipuler les GenericValue, c'est-à-dire les créer, les trouver, les stocker. Service Engine Alors que l'entity Engine s'attache à gérer les données, le Service Engine permet la manipulation des traitements. Il est capable de lancer un traitement quel que soit son langage ou sa localisation. La description des traitements (composant/servicedef/services.xml) : est contenu dans un fichier XML <service name="updateorderitems" engine="java" auth="true" location="org.ofbiz.order.order.orderservices" invoke="updateapprovedorderitems"> <description>update the quantities/prices for an existing order</description> <attribute name="orderid" type="string" mode="inout" optional="false"/> <attribute name="itemqtymap" type="map" mode="in" string-mapprefix="iqm_" optional="false"/> <attribute name="itempricemap" type="map" mode="in" string-mapprefix="ipm_" optional="false"/> <attribute name="overridepricemap" type="map" mode="in" string-mapprefix="opm_" optional="false"/> <attribute name="shoppingcart" type="org.ofbiz.order.shoppingcart.shoppingcart" mode="out" optional="false"/> </service> 16

Sont ainsi définis : le nom du service ; le langage utilisé ; la localisation ; le nom de la fonction à appeler les entrées et les sorties, leurs caractères obligatoires, si un préfixe est stipulé, toutes les données ayant ce préfixe sont automatiquement stockées dans une Map. La définition d'une méthode Java appelée en tant que service est la suivante : public static Map updateapprovedorderitems(dispatchcontext dctx, Map context) { Les données en entrées et sorties sont contenues dans le contexte, des tests sont automatiquement effectués afin de savoir si les données sont conformes à leur types. Dans un code java, la méthode courante pour appeler un service de manière synchrone est d'utiliser la méthodes «runsync()» de la classe LocalDispatcher : map_out = dispatcher.runsync("service_name", map_in); Un service peut aussi être lancé de manière asynchrone. ControlServlet Le ControlServlet est un ensemble de classe permettant la présentation d'une application web autour du framework d'ofbiz. Son but premier est d'apporter un mécanisme de séparation propre entre la présentation logique des données et l'affichage selon le principe modèle-vue-contrôleur. OFBiz propose une multitude de moteurs de rendu, les plus utilisés actuellement étant les Widgets. Je détaillerai ici les mécanismes utilisés lors du cheminement de la requête «deleteshipmentitemfromitems» dans le module Facility, jusqu'à l'affichage de la page Web correspondante : Etape 1 : Traitement à effectuer à la réception de la requête : La description des divers traitements à effectuer composant/webapp/composant/web-inf/controller.xml : se trouve dans le fichier <request-map uri="deleteshipmentitemfromitems"> <security https="true" auth="true"/> <event type="service" path="" invoke="removeordershipmentfromshipment"/> <response name="success" type="view" value="editshipmentitems"/> <response name="error" type="view" value="editshipmentitems"/> </request-map> <view-map name="editshipmentitems" type="screen" page="component://product/widget/facility/shipmentscreens.xml#editshipmentitems" /> Ce qui peut se traduire en algorithmique par : Si l'uri de la requête = "deleteshipmentitemfromitems" Si l'utilisateur est authentifié et la connexion sécurisée Alors invoquer le service removeordershipmentfromshipment (les paramètres en entrée de cette vue sont présents sur la page actuel et sont transformés en objet Java) 17

Si le service appelé rend faux Alors appeler la vue "EditShipmentItems" Sinon appeler la vue "EditShipmentItems" FinSi Finsi Finsi Si le nom de la vue = «EditShipmentItems» Alors appeler l'écran «EditShipmentItems» dans le fichier Finsi //product/widget/facility/shipmentscreens.xml Etape 2 Création de l'écran de réponse: <screen name="editshipmentitems"> <section> <actions> <set field="titleproperty" value="pagetitleeditshipmentitems"/> <set field="headeritem" value="shipment"/> <set field="tabbuttonitem" value="editshipmentitems"/> <script location="component://product/webapp/facility/webinf/actions/shipment/editshipmentitems.bsh"/> </actions> <widgets> <decorator-screen name="commonshipmentdecorator"> <decorator-section name="body"> <platform-specific> <html><html-template location="component://product/webapp/ facility/shipment/editshipmentitems.ftl"/> </html> </platform-specific> </decorator-section> </decorator-screen> </widgets> </section> </screen> Dans les actions sont stipulés les traitements à effectuer : positionnement de champs ; appel de fichiers beanshell (.bsh langage très proche proche du Java, la différence étant qu'il n'est pas pré-compilé mais directement interprété à l'exécution) qui permettront d'effectuer divers traitements côté serveur (interrogations de la base de données...) et de positionner dans le contexte différentes variables. Les widgets assurent la présentation des données. Des fichiers freemarker (moteur de template pour générer du texte) peuvent être appelés. 18

Exemple d'utilisation de beanshell et freemarker : fichier Benshell : context.put("name", new String(«monsieur le correcteur)); Fichier freemarker : <html>... Bonjour ${name}!!!!... </html> Fichier html généré : <html>... Bonjour monsieur le correcteur... </html> 2.3 Les différents modules Content Le module Content permet d'assurer la gestion de contenu (CMS). Ses entités sont utilisées pour enregistrer et manipuler les contenus généraux et les bases de connaissance. Ces entités incluent de nombreux concepts tels que : la séparation de l information et de l organisation des données qui peut être utilisé dans beaucoup de structures de données comme des arbres, listes ou des Maps d objets. Une fois ces structures créées, des outils évolués de recherche d information sont utilisés pour automatiser la création de nouvelles structures et permettre à l entreprise de gérer les documents. Accounting Les entités de Comptabilité sont organisées sur des principes généralement admis comme la comptabilité à double entrée, un registre général avec des comptes hiérarchisés... Elles sont structurées pour que l'on puisse gérer la comptabilité de plusieurs organisations. 19

Party Le module Party permet d'assurer la gestion de la relation client (CRM). Un Party peut représenter 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 modéliser des hiérarchies, des groupes de sécurité. Cette application est généralement utilisée pour gérer les informations sur le personnel de l entreprise, sur les relations avec ses clients et ses fournisseurs, etc. À chaque contact, on peut associer de nombreuses informations telles que des adresses, des numéros de téléphones, des rôles, et par un mécanisme d'extensions, des données supplémentaires. Product Les entités de Product contiennent les informations générales sur les produits vendables, achetables d'une entreprise. Les produits peuvent être des articles (matières premières, produits finis...), des services,... Les produits peuvent être organisés en catégories et en catalogue (notion de promotions, canaux de ventes...). Ils peuvent être associés à une multitude de prix selon la devise, le fournisseur, les dates, la quantité achetée, etc. Facility Un «Facility» est un bâtiment ou un emplacement physique tel que les stocks, les magasins, les docks, les bureaux,... En général un «Facility» aura un contact associé : une adresse, un numéro de téléphone,... Les bâtiments peuvent être regroupés en groupe de bâtiments, eux-mêmes pouvant faire partie de groupes de bâtiments. Ces groupes sont, par exemple, des chaînes de magasins, régions, départements. Des personnes ou groupes de personnes peuvent aussi être associés à des bâtiments pour définir où une personne travaille, qui gère le bâtiment, etc. Ce module permet de gérer les stocks d'une entreprise, il connaît ainsi pour un produit ses lieux de stockages, les quantités stockées et les indices de gestion de stock : seuils d'alerte, quantité économique... Order Le module «Order» permet de gérer tous les processus autour d'une commande d'achat ou de vente. Un ordre se compose d une en-tête de commande et de lignes de commandes qui décrivent les détails de l ordre et des ajustements tarifaires. Ces ajustements correspondent aux promotions, aux taxes et aux frais de ports appliqués à l ordre. Toutes les étapes d'une commande sont gérées du devis, à la facturation en passant par la réception de la commande, la gestion du retour de marchandise,... Shipment «Shipment» gère l ensemble des échanges de produits avec l extérieur, autrement dit les réceptions et les expéditions ainsi que les entrées et sorties de stock. On peut ainsi connaître pour un produit et un «Shipment» la quantité du produit expédiée ou reçue. Shipment fait aussi le lien avec les services des transporteurs pour le suivi des colis et des livraisons. 20

2.4 Processus de programmation Il est évident que tous les programmeurs d'ofbiz ne travaillent pas en même temps sur des sources partagées par tous. Nous utilisons donc un système de contrôle des versions appelé Subversion. Chaque programmeur travaille sur une copie locale des sources, cette copie pouvant être mise à jour avec la version la plus récente d'ofbiz grâce à la commande : svn update dans le répertoire d'ofbiz. La procédure de validation de nos développements est en revanche extrêmement fastidieuse. En effet, seules de rares personnes ont le droit de modifier les sources d'ofbiz. Les modifications apportées sont donc envoyées aux développeurs d'ofbiz sous forme de patch décrivant précisément les buts et raisons de ces modifications. L'incorporation de ces patchs (si ils sont un jour acceptés) peut prendre un certain temps(plusieurs semaines) et est source de nombreuses discussions, les patchs n'ayant pas une utilité flagrante et immédiate sont ainsi souvent rejetés. Les petites modifications sont beaucoup plus aisément admises et donc préférées. Or, un problème survient ici si vous voulez développer rapidement une nouvelle fonctionnalité. Vous envoyez vos premiers patchs qui n'ont aucune utilité directe et ne sont validés qu'après de longues discussions. S'ils sont un jour validés, ils sont souvent modifiés et donc à vous de modifier tous les traitements qui en découlent de votre côté. 21

3 3.1 OFBiz-Néogia Les origines d'ofbiz-néogia Bien qu'ofbiz soit totalement écrit en Java, la modélisation utilisée est un modèle entité-relation. Ainsi, les entités de base de données ne sont pas traduites en objet, on accède donc directement aux tûples de la base de donnée. La puissance d'un langage objet est alors totalement sous-utilisé, la plupart des méthodes est statique, on perd de plus le haut niveau d'abstraction offert par le langage objet. Le modèle entité-relation qui s'attache à la modélisation des données s'avère peu adapté à la réalisation des composants métiers où la modélisation des traitement est à privilégier. Néréide a donc initié en mai 2004, le projet Néogia 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 créer des composants OFBiz grâce à une modélisation UML. Néréide est en outre à l'origine de internationalisation d'ofbiz. 3.2 La génération de code Neogia utilise la technologie «Lutin-generator», développé par l'entreprise Code-Lutin, afin d'obtenir du code à partir de diagrammes UML. Les diagrammes sont créés grâce au logiciel Poseidon_for_UML Exemple de diagramme UML utilisé : 22

Image 4 exemple de modélisation UML Un système de tags permet de spécifier certaines caractéristiques aux entités : et aux attributs : 23

Cette génération de code, qui peut paraître de prime abord comme un «gadget», est dans les faits extrêmement utile. En effet, un nombre impressionnant de fichiers (environ 70 %) est généré faisant gagner un temps précieux en développement : fichiers de définition des services ; fichiers de définition des entités ; fichiers Java permettant l'abstraction Objet<->Entité ; fichiers d interfaces graphiques par défaut pour les objets modélisés ; fichiers de formulaires de recherche ; fichiers d'internationalisation. On peut aussi remarquer que la génération, de par son caractère systématique, permet d'amener une certaine homogénéisation des procédures de codage, homogénéisation malheureusement absente sur OFBiz. De plus, l'utilisation préalable d'une modélisation UML au codage «direct» offre la possibilité de fixer clairement le fonctionnement du module et permet aux nouveaux développeurs d'avoir un point de départ clair et précis pour mieux comprendre l'implémentation adoptée. 3.3 Modification de composants OFBiz De nombreux composants OFBiz ont été modifiés afin de pouvoir utiliser la modélisation objet de Néogia. Le principal but de ces modifications est de «traduire»les entités d'ofbiz en objet rendant la programmation beaucoup plus aisée : appel des méthodes de l'objet plutôt que l'appel direct aux tûples de la base de donnée. Les principales modifications (autres que la possibilité d'accéder directement à l'objet «traduit» de l'entité) apportées à ces composants sont : Common : permet de stocker les énumérations et les statuts utilisés dans Néogia dans les entités correspondantes d Ofbiz. Product : redirection d'une partie de la gestion des stocks sur le composant Néogia Facility 3.4 Ajout de composants De nombreux composants ont été rajoutés afin d'offrir un plus grand choix de fonctionnalités aux clients. Ces composants remplacent les composants OFBiz lorsqu'ils sont jugés trop insatisfaisants ou abordent des concepts absents dans OFBiz. Composants ajoutés : Manufacturing : remplace complètement le composant de même nom sous Ofbiz. Il remplit les mêmes fonctions mais a été entièrement repensé à partir d une modélisation UML. Facility : remplace le module de gestion des stocks dans Product d Ofbiz. Le modèle de données a été entièrement revu et il apporte en plus la gestion des inventaires physiques. Accounting : remplace le composant Accounting d Ofbiz et supporte la comptabilité analytique. 24