SlideShare a Scribd company logo
1 of 26
   
Plomino
How to easily build Plone custom applications
through the web
with small development knowledge
Eric BREHAULT – Plone Conference 2010
   
Plone is so powerful
With no Zope/Plone development knowledge and good
Plone usage knowledge, you can build a powerful
intranet:
● you can structure the site easily,
● you can manage users access rights and workflows in a very
granular way,
● you can extend Plone standard features with a lot of excellent
products.
   
But you might need a custom app
Your intranet is just perfect, but at some point, you need a
purchase management application.
Of course, you want this application to be integrated
into your intranet.
What can you do ?
   
Create a content type ?
Plone is a CMS, a purchase request might be considered as a
content-type.
Let's go:
1 schema (made with ArchgenXML or Dexterity)
+ few collections
+ 1 workflow (made with uworth.northstar)
= approximately what you need
   
Not that easy
Even if you do not necessarily need to be a developer to use
the mentionned tools, it will still imply you have a good
knowledge of:
● What a schema is.
● How Plone workflows work.
● How to deploy custom products.
   
Will it fit the needs ?
Theoretiocally, the “Purchase request is just a content-type”
approach should work.
Practically, you will have to deal with hundreds of small
and funny extra-requirements:
● the request form has 2 specific fields when you order furnitures,
● the approval workflow is not the same if you belong to the HR
department, unless the manager is in vacation,
● the price list is provided in a monthly updated CSV file stored on a LAN
shared disk,
● Etc.
   
Will it fit the needs ?
So, practically, you will have to heavily tune the basic
content-type behaviour.
And if you are not a Plone expert, you are lost.
   
One could oppose that what has been described here is not a
simple application but a quite complex one.
If complex applications cannot be easily produced by non
Plone experts, that is fair enough.
My opinion:
● It is not a complex case, it is just the difference between
a theorical case and a real case.
● Most part of time, real applications are not content-
types.
● Non Plone experts must be able to produce real
business applications.
"Let no man ignorant of Plone enter here."
Plato
   
● Plomino allows to develop, deploy and maintain custom
applications entirely from the Plone web interface.
● There is no schema, no data model, the application
designer does not have to worry about the persistence,
he/she will design forms, data will be saved accordingly.
● Everything can be scripted in order to adapt the
behaviour to fit the actual needs.
Plomino principles
   
1.Add a new Plomino “database” as any Plone content-type,
➔ The database is the root element which support the entire
application.
2.Design some “forms” in TinyMCE,
➔ A form offers a layout and a set of fields.
3.Forms allow to create “documents”, or provide useful
screens (menu, search, reports, etc.),
➔ Documents are just a set of items. The items may match
the form fields, or not.
4.Create some “views” to list / filter / sort the documents in
different ways.
Create a Plomino application
   
Forms are created using TinyMCE.
A form is just a freely editable rich text content where the
user can insert:
● Fields,
● Actions,
● Hide-when formulas,
● Sub-forms.
Create Plomino forms
DEMO
   
A field can be:
● Editable: the user enters its value and it is stored in the
document,
● Computed: a formula computes its value and it is stored in
the document,
● Computed for display: a formula computes its value but is
not stored,
● Computed on creation: a formula computes its value at
creation time.
Field modes
DEMO
   
Plomino provides a set of basic fields:
Text, Rich text, Number, Date/time, File attachement,
Selection list.
And also advanced fields:
● Names: to select Plone members.
● Doclinks: to create links between documents.
● Datagrids: to manage editable dynamic tables.
● Google chart and Google visualization: to create rich
charts or maps.
Different field types
DEMO
   
Formulas are used to script the regular Plomino behaviour:
● Compute field values,
● Implement some custom actions,
● Hide some part of a form contextually,
● Process documents,
● Handle events,
● Handle redirections,
● Etc.
Formulas are written in Python, and are compiled as
Python scripts.
Formulas everywhere
DEMO
   
2 applications:
● Flood alert SMS subscription
mechanism
Map display, connection to an
external realtional database,
export to CSV.
● Hydro-sensors maintenance
system
Visit planing, visit sheet
import/export.
Business cases
DEMO
Adour river flood forecasting agency
   
Contacts database
Connexion with Plone
members.
Complex queries.
Large amount of contacts (>
8000)
Business cases
DEMO
International Council for Science
   
Project monitoring
application
● Advanced reporting,
● Complex forms,
● Workflow.
Business cases
DEMO
United Nations Environment Programs
   
Business cases
● Extremely various Plomino applications, built by extremely
various people:
– Archeologists,
– Lawyers,
– Real estate managers,
– Librarians,
– And even Plone experts.
● Any example in the room ?
   
Is it serious ?
● Alexander Limi said yesterday: “Recruit people”.
● A TTW application builder like that is good for non-
experts.
● But can it meet development standard expectations ?
Let's see how Plomino handles:
● Deployment,
● Maintenance,
● Debugging,
● Testing,
● Content synchronization.
   
Deployment and maintenance
● Plomino provides an import/export mechanism.
● The design (the application structure) can deployed over
HTTP from a server to another (even from between a Plone
3 and a Plone 4 instance).
● It can be exported as XML (and then imported back
somewhere else).
● The resulting XML can be managed in a SVN (or other)
repository.
● It allows partial import/export.
DEMO
   
Debugging
● Plomino debug mode
● Debugging as usual:
– Zope debug mode
– Clouseau
– ZDB
– plone_log
   
Testing
Testing as usual:
● Selenium
● Doctests
With doctests, the principle is to create a blank Plomino db,
then import your current XML design version, then run your
scenarios.
It can be then automated on Hudson.
   
Testing
Import basic-example db
>>> f = open(os.path.join(dir, "samples", "basic-example.xml"))
>>> id = folder.invokeFactory('PlominoDatabase', id='basic-example')
>>> db = getattr(folder, 'basic-example')
>>> db.at_post_create_script()
>>> wf_tool = self.portal.portal_workflow
>>> wf_tool.doActionFor(db, 'publish')
>>> xmlstring=f.read()
>>> db.importDesignFromXML(xmlstring)
>>> db.refreshDB()
>>> f.close()
   
Testing
Scenario
>>> browser.open(base_url+'/basic-example')
>>> 'Birthday' in browser.contents
True
>>> browser.getLink('Birthday').click()
>>> browser.getControl(name='personName').value = 'Eric'
>>> browser.getControl(name='birthDate').value = '1974-10-20 00:00'
>>> browser.getControl(name='personCategory').value = ['Friend']
>>> browser.getControl(name='plomino_save').click()
>>> '20-10-1974' in browser.contents
True
>>> browser.open(browser.url+"/EditDocument")
>>> browser.getControl(name='personCategory').value = ['Relative']
>>> browser.getControl(name='plomino_save').click()
>>> browser.open(base_url+'/basic-example')
>>> browser.getLink('All birthdays').click()
>>> 'October 20' in browser.contents
True
   
Thank you
● Questions ?
● Anybody interested in sprinting on Plomino ?
   
Makina Corpus
For all questions related to Plomino,
please contact Éric Bréhault
eric.brehault@makina-corpus.com
Tel : +33 950 463 703
www.makina-corpus.com

More Related Content

Viewers also liked

Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
Abdoulaye Dieng
 

Viewers also liked (9)

comprendre angularJS en 10 minutes
comprendre angularJS en 10 minutescomprendre angularJS en 10 minutes
comprendre angularJS en 10 minutes
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)
 
AngularJS
AngularJSAngularJS
AngularJS
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JS
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
AngularJS Basics with Example
AngularJS Basics with ExampleAngularJS Basics with Example
AngularJS Basics with Example
 

Similar to Plomino plone conf2010

0506-django-web-framework-for-python.pdf
0506-django-web-framework-for-python.pdf0506-django-web-framework-for-python.pdf
0506-django-web-framework-for-python.pdf
radhianiedjan1
 
Django Article V0
Django Article V0Django Article V0
Django Article V0
Udi Bauman
 
Writing Effective Self-Help Guides for World Domination
Writing Effective Self-Help Guides for World DominationWriting Effective Self-Help Guides for World Domination
Writing Effective Self-Help Guides for World Domination
Emma Jane Hogbin Westby
 

Similar to Plomino plone conf2010 (20)

By the power of Plone - Case Carousel at University of Jyväskylä
By the power of Plone - Case Carousel at University of JyväskyläBy the power of Plone - Case Carousel at University of Jyväskylä
By the power of Plone - Case Carousel at University of Jyväskylä
 
DDD with Behat
DDD with BehatDDD with Behat
DDD with Behat
 
Plomino
Plomino Plomino
Plomino
 
Odoo Experience 2018 - Odoo Studio: A Functional Approach
Odoo Experience 2018 - Odoo Studio: A Functional ApproachOdoo Experience 2018 - Odoo Studio: A Functional Approach
Odoo Experience 2018 - Odoo Studio: A Functional Approach
 
Polymer 101
Polymer 101Polymer 101
Polymer 101
 
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
 
Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworks
 
The working architecture of NodeJS applications, Виктор Турский
The working architecture of NodeJS applications, Виктор ТурскийThe working architecture of NodeJS applications, Виктор Турский
The working architecture of NodeJS applications, Виктор Турский
 
The working architecture of node js applications open tech week javascript ...
The working architecture of node js applications   open tech week javascript ...The working architecture of node js applications   open tech week javascript ...
The working architecture of node js applications open tech week javascript ...
 
0506-django-web-framework-for-python.pdf
0506-django-web-framework-for-python.pdf0506-django-web-framework-for-python.pdf
0506-django-web-framework-for-python.pdf
 
Django Article V0
Django Article V0Django Article V0
Django Article V0
 
Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing Company
 
Writing Effective Self-Help Guides for World Domination
Writing Effective Self-Help Guides for World DominationWriting Effective Self-Help Guides for World Domination
Writing Effective Self-Help Guides for World Domination
 
Lug
LugLug
Lug
 
GUI toolkits comparison for python
GUI toolkits comparison for pythonGUI toolkits comparison for python
GUI toolkits comparison for python
 
Techjoomla Infrastructure Extensions - Adding an Enterprise Layer to Joomla!
Techjoomla Infrastructure Extensions - Adding an Enterprise Layer to Joomla!Techjoomla Infrastructure Extensions - Adding an Enterprise Layer to Joomla!
Techjoomla Infrastructure Extensions - Adding an Enterprise Layer to Joomla!
 
Fighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless phpFighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless php
 
From prototype to production - The journey of re-designing SmartUp.io
From prototype to production - The journey of re-designing SmartUp.ioFrom prototype to production - The journey of re-designing SmartUp.io
From prototype to production - The journey of re-designing SmartUp.io
 
Company Visitor Management System Report.docx
Company Visitor Management System Report.docxCompany Visitor Management System Report.docx
Company Visitor Management System Report.docx
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

Plomino plone conf2010

  • 1.     Plomino How to easily build Plone custom applications through the web with small development knowledge Eric BREHAULT – Plone Conference 2010
  • 2.     Plone is so powerful With no Zope/Plone development knowledge and good Plone usage knowledge, you can build a powerful intranet: ● you can structure the site easily, ● you can manage users access rights and workflows in a very granular way, ● you can extend Plone standard features with a lot of excellent products.
  • 3.     But you might need a custom app Your intranet is just perfect, but at some point, you need a purchase management application. Of course, you want this application to be integrated into your intranet. What can you do ?
  • 4.     Create a content type ? Plone is a CMS, a purchase request might be considered as a content-type. Let's go: 1 schema (made with ArchgenXML or Dexterity) + few collections + 1 workflow (made with uworth.northstar) = approximately what you need
  • 5.     Not that easy Even if you do not necessarily need to be a developer to use the mentionned tools, it will still imply you have a good knowledge of: ● What a schema is. ● How Plone workflows work. ● How to deploy custom products.
  • 6.     Will it fit the needs ? Theoretiocally, the “Purchase request is just a content-type” approach should work. Practically, you will have to deal with hundreds of small and funny extra-requirements: ● the request form has 2 specific fields when you order furnitures, ● the approval workflow is not the same if you belong to the HR department, unless the manager is in vacation, ● the price list is provided in a monthly updated CSV file stored on a LAN shared disk, ● Etc.
  • 7.     Will it fit the needs ? So, practically, you will have to heavily tune the basic content-type behaviour. And if you are not a Plone expert, you are lost.
  • 8.     One could oppose that what has been described here is not a simple application but a quite complex one. If complex applications cannot be easily produced by non Plone experts, that is fair enough. My opinion: ● It is not a complex case, it is just the difference between a theorical case and a real case. ● Most part of time, real applications are not content- types. ● Non Plone experts must be able to produce real business applications. "Let no man ignorant of Plone enter here." Plato
  • 9.     ● Plomino allows to develop, deploy and maintain custom applications entirely from the Plone web interface. ● There is no schema, no data model, the application designer does not have to worry about the persistence, he/she will design forms, data will be saved accordingly. ● Everything can be scripted in order to adapt the behaviour to fit the actual needs. Plomino principles
  • 10.     1.Add a new Plomino “database” as any Plone content-type, ➔ The database is the root element which support the entire application. 2.Design some “forms” in TinyMCE, ➔ A form offers a layout and a set of fields. 3.Forms allow to create “documents”, or provide useful screens (menu, search, reports, etc.), ➔ Documents are just a set of items. The items may match the form fields, or not. 4.Create some “views” to list / filter / sort the documents in different ways. Create a Plomino application
  • 11.     Forms are created using TinyMCE. A form is just a freely editable rich text content where the user can insert: ● Fields, ● Actions, ● Hide-when formulas, ● Sub-forms. Create Plomino forms DEMO
  • 12.     A field can be: ● Editable: the user enters its value and it is stored in the document, ● Computed: a formula computes its value and it is stored in the document, ● Computed for display: a formula computes its value but is not stored, ● Computed on creation: a formula computes its value at creation time. Field modes DEMO
  • 13.     Plomino provides a set of basic fields: Text, Rich text, Number, Date/time, File attachement, Selection list. And also advanced fields: ● Names: to select Plone members. ● Doclinks: to create links between documents. ● Datagrids: to manage editable dynamic tables. ● Google chart and Google visualization: to create rich charts or maps. Different field types DEMO
  • 14.     Formulas are used to script the regular Plomino behaviour: ● Compute field values, ● Implement some custom actions, ● Hide some part of a form contextually, ● Process documents, ● Handle events, ● Handle redirections, ● Etc. Formulas are written in Python, and are compiled as Python scripts. Formulas everywhere DEMO
  • 15.     2 applications: ● Flood alert SMS subscription mechanism Map display, connection to an external realtional database, export to CSV. ● Hydro-sensors maintenance system Visit planing, visit sheet import/export. Business cases DEMO Adour river flood forecasting agency
  • 16.     Contacts database Connexion with Plone members. Complex queries. Large amount of contacts (> 8000) Business cases DEMO International Council for Science
  • 17.     Project monitoring application ● Advanced reporting, ● Complex forms, ● Workflow. Business cases DEMO United Nations Environment Programs
  • 18.     Business cases ● Extremely various Plomino applications, built by extremely various people: – Archeologists, – Lawyers, – Real estate managers, – Librarians, – And even Plone experts. ● Any example in the room ?
  • 19.     Is it serious ? ● Alexander Limi said yesterday: “Recruit people”. ● A TTW application builder like that is good for non- experts. ● But can it meet development standard expectations ? Let's see how Plomino handles: ● Deployment, ● Maintenance, ● Debugging, ● Testing, ● Content synchronization.
  • 20.     Deployment and maintenance ● Plomino provides an import/export mechanism. ● The design (the application structure) can deployed over HTTP from a server to another (even from between a Plone 3 and a Plone 4 instance). ● It can be exported as XML (and then imported back somewhere else). ● The resulting XML can be managed in a SVN (or other) repository. ● It allows partial import/export. DEMO
  • 21.     Debugging ● Plomino debug mode ● Debugging as usual: – Zope debug mode – Clouseau – ZDB – plone_log
  • 22.     Testing Testing as usual: ● Selenium ● Doctests With doctests, the principle is to create a blank Plomino db, then import your current XML design version, then run your scenarios. It can be then automated on Hudson.
  • 23.     Testing Import basic-example db >>> f = open(os.path.join(dir, "samples", "basic-example.xml")) >>> id = folder.invokeFactory('PlominoDatabase', id='basic-example') >>> db = getattr(folder, 'basic-example') >>> db.at_post_create_script() >>> wf_tool = self.portal.portal_workflow >>> wf_tool.doActionFor(db, 'publish') >>> xmlstring=f.read() >>> db.importDesignFromXML(xmlstring) >>> db.refreshDB() >>> f.close()
  • 24.     Testing Scenario >>> browser.open(base_url+'/basic-example') >>> 'Birthday' in browser.contents True >>> browser.getLink('Birthday').click() >>> browser.getControl(name='personName').value = 'Eric' >>> browser.getControl(name='birthDate').value = '1974-10-20 00:00' >>> browser.getControl(name='personCategory').value = ['Friend'] >>> browser.getControl(name='plomino_save').click() >>> '20-10-1974' in browser.contents True >>> browser.open(browser.url+"/EditDocument") >>> browser.getControl(name='personCategory').value = ['Relative'] >>> browser.getControl(name='plomino_save').click() >>> browser.open(base_url+'/basic-example') >>> browser.getLink('All birthdays').click() >>> 'October 20' in browser.contents True
  • 25.     Thank you ● Questions ? ● Anybody interested in sprinting on Plomino ?
  • 26.     Makina Corpus For all questions related to Plomino, please contact Éric Bréhault eric.brehault@makina-corpus.com Tel : +33 950 463 703 www.makina-corpus.com

Editor's Notes

  1. Il manque : - une liste de produits/services fin 2007 - une price list pour fin 2007 - le taux de pénétration prévisionnel espéré par cibles pour fin 2008, - la rentabilité attendue d'ici fin fin 2008 - la définition, l'organisaiton et l'animation de la force de vente -