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

comprendre angularJS en 10 minutes
comprendre angularJS en 10 minutescomprendre angularJS en 10 minutes
comprendre angularJS en 10 minutesDavid Bo
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 
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 tempsAntoine Rey
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)Yacine Rezgui
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JSAntoine Rey
 
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 basesAntoine Rey
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 

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 Build Plone Apps Without Coding Using Plomino

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äRikupekka Oksanen
 
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 ApproachElínAnna Jónasdóttir
 
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...Daniel Jowett
 
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 houseParis Apostolopoulos
 
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 frameworksKaty Slemon
 
The working architecture of NodeJS applications, Виктор Турский
The working architecture of NodeJS applications, Виктор ТурскийThe working architecture of NodeJS applications, Виктор Турский
The working architecture of NodeJS applications, Виктор ТурскийSigma Software
 
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 ...Viktor Turskyi
 
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.pdfradhianiedjan1
 
Django Article V0
Django Article V0Django Article V0
Django Article V0Udi Bauman
 
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 CompanyMarcos Labad
 
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 DominationEmma Jane Hogbin Westby
 
GUI toolkits comparison for python
GUI toolkits comparison for pythonGUI toolkits comparison for python
GUI toolkits comparison for pythonDarren Su
 
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!Parth Lawate
 
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 phpFabio Pellegrini
 
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.ioMáté Lang
 
Company Visitor Management System Report.docx
Company Visitor Management System Report.docxCompany Visitor Management System Report.docx
Company Visitor Management System Report.docxfantabulous2024
 

Similar to Build Plone Apps Without Coding Using Plomino (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

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Recently uploaded (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

Build Plone Apps Without Coding Using Plomino

  • 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 -