SlideShare a Scribd company logo
ArchGenXML / UML
    and Plone
   Plone Regional Symposium
       New Orleans, LA
          July 22, 2005

          Nate Aune
      Jazkarta Consulting
       www.jazkarta.com
Who am I?

• Developer and owner, Jazkarta Consulting
  (www.jazkarta.com)

• Musician - saxophonist and composer
  (www.nateaune.com/music/)

• Founder of Plone4Artists project
  (www.plone4artists.org)
Overview
• What is Archetypes?
• What is UML?
• What is ArchGenXML?
• Build a model using UML
• Transform the model into a Plone
• Questions?
What is Archetypes?

• Framework for developing Plone products
  • Automatically creates view and edit pages
  • Maintains unique object IDs
  • Creates references between objects
Archetypes framework

• Field validation
• Standard security setup
• Alternate storage options
• Data transformation capabilities
Archetypes
        architecture
• Schema
  • Field
   • Widget
  • Field
   • Widget
  • ...
Example Archetype:
      Artist
schema= Schema((
     StringField('title'),
     ImageField('photo'),
     LinesField('instrument'),
))

class Artist(BaseContent)
     schema = BaseSchema + schema

registerType(Artist,PROJECTNAME)
Widgets
schema= Schema((
     StringField('title',
         widget=StringWidget(
                  label=’Artist name’,
                  size=20),
     ),
     ImageField('photo',
         widget=ImageWidget(
                  label=’Headshot’),
     ),
     LinesField('instrument',
         widget=MultiSelectionWidget(
                  label=’Instruments’),
         multiValue=1,
     ),
))
What is UML?

• UML = Uniform Modeling Language
• Standard widely-adopted graphical language
• Describes the artifacts of software systems
• Focus on conceptual representations
Artist:
Described in UML
Poseidon UML tool
What is ArchGenXML?

• Command line utility
• Auto-generates code from a UML model
• No round-trip support yet
• Custom code is preserved upon
  regeneration
Why use ArchGenXML?
      (part 1)
• You want to save time
• You are a lazy programmer
• You don’t like to reinvent the wheel
• You don’t like copying and pasting code
• You make heavy use of references and
  interfaces
Why use ArchGenXML?
      (part 2)
• You have big projects with many different
  content types

• You want or need a well-documented
  interface to your product

• You like structured model- and pattern-
  driven software development

• You want to maintain your project in the
  future without getting a headache
UML to Archetypes
using ArchGenXML
            schema= Schema((
                     StringField('title',
                         widget=StringWidget(
                                   label=’Artist name’
                              size=20),
                 ),
                     ImageField('photo',
                     widget=ImageWidget(
                              label=’Headshot’),
                 ),
                     LinesField('instrument',
                     widget=MultiSelectionWidget(
                              label=’Instruments’),
                     multiValue=1,
                 ),
            ))
UML speak to AT speak
                 • product
• package

                 • content type
• class

                 • method
• operation

                 • field
• attribute

                 • property
• tagged value
In practice

• 1) Save your model to the Products dir
• 2) Run the ArchGenXML script
• 3) Restart Zope
• 4) Install the newly generated product
svn co svn://svn.plone4artists.org/trunk/ArtistSite
Running the script
$ cd /var/local/zope/instance1/Products
$ ArchGenXML/ArchGenXML.py -o ArtistSite ArtistSite.zuml
ArchGenXML 1.4 devel 4
(c) 2003 BlueDynamics GmbH, under GNU General Public License
2.0 or later

set outfilename [string] to ArtistSite
Parsing...
===============
opening zargo
XMI version: 1.2
using xmi 1.2+ parser
outfile: ArtistSite
Generating...
==============
method bodies will be preserved
>>> Starting new Product: ArtistSite
    Generating class: Artist
$
ArtistSite product dir
$ ls ArtistSite
Artist.py       __init__.py   i18n          skins
Extensions      config.py     refresh.txt   version.txt
$



                     Restart Zope
         Install product using QuickInstaller
Artist.py
• Inserts documentation
• Placeholders for custom code
• i18n message ids
• Using ArtistSite/model/generate_source.sh
  • Inserts author information
  • Creates i18n msg catalog .pot file
  • strips HTML from doc strings
Add new artist
Edit artist form
View artist
Static vocabulary




• Define a static vocabulary of instruments
Dynamic vocabulary




Use ATVocabularyManager to manage list of instruments
Dynamic vocab cont...
Containment




    Use the solid rhomb to make a strict containment
‘Artist’ instances can only be added to an ‘Artists’ instance
Artist container
Override base class




The artists folder will get large, so make it a BTreeFolder
References


           Create a
       direct association

           results in:

        Reference field
       group to artist(s)
Group
edit form




   Group is
  associated
  with artists
Reference Browser Widget
        as default
Configure browser widget

             Select the end point




                 Make multivalued
                Specify relationship
                   Define query
Adding references
Back references
Back
references




   Groups that
 artist belongs to
Stereotypes




 Add the ‘member’ stereotype to tell
ArchGenXML to subclass CMFMember
Registration
   form

• SiteMember is installed
• Replaces default member
• Easy way to create new
  member types
PloneMall

• Example of a sophisticated e-commerce
     framework built using UML

• See the UML model here:
•   http://www.plonemall.com/uml/UML-beta2.png/image_view_fullscreen
What I didn’t cover
• Methods
• Stereotypes
  • actions, portal_tool, abstract, stub,
     ordered

• Generalization (Interfaces)
• Workflow
• Unit testing
Acknowledgements
• Philipp Auersperg (Blue Dynamics)
• Jens Klein (jensens)
• Martin Aspeli (optilude)
• Fabiano Weimar dos Santos (xiru)
• Bernie Snizek (DrZoltron)
• Alan Runyan and Enfold Systems
• Plone community
Links
•   ArchGenXML presentation - http://www.jazkarta.com/presentations/archgenxml-presentation

•   ArchGenXML product page - http://plone.org/products/archgenxml

•   ArchGenXML getting started tutorial by Jens Klein

     •   http://plone.org/documentation/tutorial/archgenxml-getting-started

•   ArchGenXML manual (with screenshots)

     •   http://plone.org/documentation/archetypes/archgenxml-manual

•   Intro to Archetypes by Sidnei da Silva, published on ZopeMag.com

     •   http://www.zopemag.com/Issue006/Section_Articles/article_IntroToArchteypes.html

•   Archetypes: Customizing Plone in 60 seconds (PDF) by Andy McKay

     •   http://www.enfoldsystems.com/About/Talks/archetypes.pdf

•   Archetypes Fields Quick Reference by Maik Röder

     •   http://plone.org/documentation/archetypes/arch_field_quickref_1_3_1


•   Archetypes Widgets Quick Reference by Maik Röder

     •   http://plone.org/documentation/archetypes/arch_widget_quickref_1_3_1

More Related Content

Viewers also liked

Oral presentation advice
Oral presentation adviceOral presentation advice
Oral presentation advice
Neha Bansal
 
Juego de sexualidad
Juego de sexualidadJuego de sexualidad
Juego de sexualidad
maría paula ochoa contreras
 
Presentacion pp brecha digital
Presentacion pp   brecha digitalPresentacion pp   brecha digital
Presentacion pp brecha digitalZulema Vasquez
 
Btt en especial la magia de viajar
Btt en especial la magia de viajarBtt en especial la magia de viajar
Btt en especial la magia de viajar
comarcamaestrazgo
 
CV
CVCV
Luckley House School - A perfect location for Boarders
Luckley House School - A perfect location for BoardersLuckley House School - A perfect location for Boarders
Luckley House School - A perfect location for BoardersMo Fahey (MCIM)
 
Dispositivos De Salida by pepe caro
Dispositivos De Salida by pepe caro Dispositivos De Salida by pepe caro
Dispositivos De Salida by pepe caro
lolopepelolo
 
How to use sniply copy
How to use sniply   copyHow to use sniply   copy
How to use sniply copy
enojales
 
Presentacion SoftMedia
Presentacion SoftMediaPresentacion SoftMedia
Presentacion SoftMediasoftmedia
 
Talento
TalentoTalento
Talento
Pablo Mariano
 
Shielding the light of justice sample chp 4
Shielding the light of justice sample chp 4Shielding the light of justice sample chp 4
Shielding the light of justice sample chp 4
Eliezer Nadel
 
Cartao natal
Cartao natalCartao natal
Cartao natalPelo Siro
 
Aarbog 14 1984_andersen_victorianisme_smaaborgerlighed_og_arbejderkultur
Aarbog 14 1984_andersen_victorianisme_smaaborgerlighed_og_arbejderkulturAarbog 14 1984_andersen_victorianisme_smaaborgerlighed_og_arbejderkultur
Aarbog 14 1984_andersen_victorianisme_smaaborgerlighed_og_arbejderkultur
SFAH
 
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
nine
 
Facebook edurne maria
Facebook edurne mariaFacebook edurne maria
Facebook edurne mariameryedurne
 

Viewers also liked (20)

Oral presentation advice
Oral presentation adviceOral presentation advice
Oral presentation advice
 
Juego de sexualidad
Juego de sexualidadJuego de sexualidad
Juego de sexualidad
 
Presentacion pp brecha digital
Presentacion pp   brecha digitalPresentacion pp   brecha digital
Presentacion pp brecha digital
 
Btt en especial la magia de viajar
Btt en especial la magia de viajarBtt en especial la magia de viajar
Btt en especial la magia de viajar
 
Portafolio digital
Portafolio digitalPortafolio digital
Portafolio digital
 
CV
CVCV
CV
 
Luckley House School - A perfect location for Boarders
Luckley House School - A perfect location for BoardersLuckley House School - A perfect location for Boarders
Luckley House School - A perfect location for Boarders
 
Dispositivos De Salida by pepe caro
Dispositivos De Salida by pepe caro Dispositivos De Salida by pepe caro
Dispositivos De Salida by pepe caro
 
Allied Academies Conference
Allied Academies ConferenceAllied Academies Conference
Allied Academies Conference
 
How to use sniply copy
How to use sniply   copyHow to use sniply   copy
How to use sniply copy
 
Presentacion SoftMedia
Presentacion SoftMediaPresentacion SoftMedia
Presentacion SoftMedia
 
Talento
TalentoTalento
Talento
 
Shielding the light of justice sample chp 4
Shielding the light of justice sample chp 4Shielding the light of justice sample chp 4
Shielding the light of justice sample chp 4
 
Cartao natal
Cartao natalCartao natal
Cartao natal
 
Aarbog 14 1984_andersen_victorianisme_smaaborgerlighed_og_arbejderkultur
Aarbog 14 1984_andersen_victorianisme_smaaborgerlighed_og_arbejderkulturAarbog 14 1984_andersen_victorianisme_smaaborgerlighed_og_arbejderkultur
Aarbog 14 1984_andersen_victorianisme_smaaborgerlighed_og_arbejderkultur
 
Anboto 486
Anboto 486Anboto 486
Anboto 486
 
Schoolloop leal
Schoolloop lealSchoolloop leal
Schoolloop leal
 
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
 
Clea 2
Clea 2Clea 2
Clea 2
 
Facebook edurne maria
Facebook edurne mariaFacebook edurne maria
Facebook edurne maria
 

Similar to ArchGenXML / UML and Plone

Developing for Plone using ArchGenXML / ArgoUML
Developing for Plone using ArchGenXML / ArgoUMLDeveloping for Plone using ArchGenXML / ArgoUML
Developing for Plone using ArchGenXML / ArgoUML
Jazkarta, Inc.
 
Building an artist community website with ArchGenXML / Poseidon
Building an artist community website with ArchGenXML / PoseidonBuilding an artist community website with ArchGenXML / Poseidon
Building an artist community website with ArchGenXML / Poseidon
Jazkarta, Inc.
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Library
jeresig
 
George Thiruvathukal, User Experiences with Plone Content Management
George Thiruvathukal, User Experiences with Plone Content Management George Thiruvathukal, User Experiences with Plone Content Management
George Thiruvathukal, User Experiences with Plone Content Management webcontent2007
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)Fabien Potencier
 
Python_for_Visual_Effects_and_Animation_Pipelines
Python_for_Visual_Effects_and_Animation_PipelinesPython_for_Visual_Effects_and_Animation_Pipelines
Python_for_Visual_Effects_and_Animation_PipelinesRussell Darling
 
Moving from AS3 to Flex - advantages, hazards, traps
Moving from AS3 to Flex - advantages, hazards, trapsMoving from AS3 to Flex - advantages, hazards, traps
Moving from AS3 to Flex - advantages, hazards, traps
Florian Weil
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
Simon Willison
 
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
Atlassian
 
Eclipse Modeling Framework
Eclipse Modeling FrameworkEclipse Modeling Framework
Eclipse Modeling FrameworkAjay K
 
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWarePragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
Michael Vorburger
 
Angular 2 for Java Developers
Angular 2 for Java DevelopersAngular 2 for Java Developers
Angular 2 for Java Developers
Yakov Fain
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
YoungSu Son
 
Extracting Plugins And Gems From Rails Apps
Extracting Plugins And Gems From Rails AppsExtracting Plugins And Gems From Rails Apps
Extracting Plugins And Gems From Rails Apps
Josh Nichols
 
Silverlight 2 For Developers
Silverlight 2 For DevelopersSilverlight 2 For Developers
Silverlight 2 For Developers
Mithun T. Dhar
 
P Training Presentation
P Training PresentationP Training Presentation
P Training PresentationGaurav Tyagi
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureSimon Willison
 
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketAPIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
Scott Abel
 
MDE in Practice
MDE in PracticeMDE in Practice
MDE in Practice
Abdalmassih Yakeen
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!
melbats
 

Similar to ArchGenXML / UML and Plone (20)

Developing for Plone using ArchGenXML / ArgoUML
Developing for Plone using ArchGenXML / ArgoUMLDeveloping for Plone using ArchGenXML / ArgoUML
Developing for Plone using ArchGenXML / ArgoUML
 
Building an artist community website with ArchGenXML / Poseidon
Building an artist community website with ArchGenXML / PoseidonBuilding an artist community website with ArchGenXML / Poseidon
Building an artist community website with ArchGenXML / Poseidon
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Library
 
George Thiruvathukal, User Experiences with Plone Content Management
George Thiruvathukal, User Experiences with Plone Content Management George Thiruvathukal, User Experiences with Plone Content Management
George Thiruvathukal, User Experiences with Plone Content Management
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 
Python_for_Visual_Effects_and_Animation_Pipelines
Python_for_Visual_Effects_and_Animation_PipelinesPython_for_Visual_Effects_and_Animation_Pipelines
Python_for_Visual_Effects_and_Animation_Pipelines
 
Moving from AS3 to Flex - advantages, hazards, traps
Moving from AS3 to Flex - advantages, hazards, trapsMoving from AS3 to Flex - advantages, hazards, traps
Moving from AS3 to Flex - advantages, hazards, traps
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
 
Eclipse Modeling Framework
Eclipse Modeling FrameworkEclipse Modeling Framework
Eclipse Modeling Framework
 
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWarePragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
 
Angular 2 for Java Developers
Angular 2 for Java DevelopersAngular 2 for Java Developers
Angular 2 for Java Developers
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
 
Extracting Plugins And Gems From Rails Apps
Extracting Plugins And Gems From Rails AppsExtracting Plugins And Gems From Rails Apps
Extracting Plugins And Gems From Rails Apps
 
Silverlight 2 For Developers
Silverlight 2 For DevelopersSilverlight 2 For Developers
Silverlight 2 For Developers
 
P Training Presentation
P Training PresentationP Training Presentation
P Training Presentation
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
 
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketAPIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
 
MDE in Practice
MDE in PracticeMDE in Practice
MDE in Practice
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!
 

More from Jazkarta, Inc.

Traveling through time and place with Plone
Traveling through time and place with PloneTraveling through time and place with Plone
Traveling through time and place with Plone
Jazkarta, Inc.
 
Questions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS FrontendQuestions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS Frontend
Jazkarta, Inc.
 
The User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and BeyondThe User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and Beyond
Jazkarta, Inc.
 
WTA and Plone After 13 Years
WTA and Plone After 13 YearsWTA and Plone After 13 Years
WTA and Plone After 13 Years
Jazkarta, Inc.
 
Collaborating With Orchid Data
Collaborating With Orchid DataCollaborating With Orchid Data
Collaborating With Orchid Data
Jazkarta, Inc.
 
Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!
Jazkarta, Inc.
 
Plone 5 Upgrades In Real Life
Plone 5 Upgrades In Real LifePlone 5 Upgrades In Real Life
Plone 5 Upgrades In Real Life
Jazkarta, Inc.
 
Accessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the UglyAccessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the Ugly
Jazkarta, Inc.
 
Getting Paid Without GetPaid
Getting Paid Without GetPaidGetting Paid Without GetPaid
Getting Paid Without GetPaid
Jazkarta, Inc.
 
An Open Source Platform for Social Science Research
An Open Source Platform for Social Science ResearchAn Open Source Platform for Social Science Research
An Open Source Platform for Social Science Research
Jazkarta, Inc.
 
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
Jazkarta, Inc.
 
Anatomy of a Large Website Project
Anatomy of a Large Website ProjectAnatomy of a Large Website Project
Anatomy of a Large Website Project
Jazkarta, Inc.
 
Anatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter NotesAnatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter Notes
Jazkarta, Inc.
 
The Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with PloneThe Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with Plone
Jazkarta, Inc.
 
Plone Hosting: A Panel Discussion
Plone Hosting: A Panel DiscussionPlone Hosting: A Panel Discussion
Plone Hosting: A Panel Discussion
Jazkarta, Inc.
 
Plone+Salesforce
Plone+SalesforcePlone+Salesforce
Plone+Salesforce
Jazkarta, Inc.
 
Academic Websites in Plone
Academic Websites in PloneAcademic Websites in Plone
Academic Websites in PloneJazkarta, Inc.
 
Plone
PlonePlone
Online Exhibits in Plone
Online Exhibits in PloneOnline Exhibits in Plone
Online Exhibits in Plone
Jazkarta, Inc.
 
Online exhibits in Plone
Online exhibits in PloneOnline exhibits in Plone
Online exhibits in Plone
Jazkarta, Inc.
 

More from Jazkarta, Inc. (20)

Traveling through time and place with Plone
Traveling through time and place with PloneTraveling through time and place with Plone
Traveling through time and place with Plone
 
Questions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS FrontendQuestions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS Frontend
 
The User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and BeyondThe User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and Beyond
 
WTA and Plone After 13 Years
WTA and Plone After 13 YearsWTA and Plone After 13 Years
WTA and Plone After 13 Years
 
Collaborating With Orchid Data
Collaborating With Orchid DataCollaborating With Orchid Data
Collaborating With Orchid Data
 
Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!
 
Plone 5 Upgrades In Real Life
Plone 5 Upgrades In Real LifePlone 5 Upgrades In Real Life
Plone 5 Upgrades In Real Life
 
Accessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the UglyAccessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the Ugly
 
Getting Paid Without GetPaid
Getting Paid Without GetPaidGetting Paid Without GetPaid
Getting Paid Without GetPaid
 
An Open Source Platform for Social Science Research
An Open Source Platform for Social Science ResearchAn Open Source Platform for Social Science Research
An Open Source Platform for Social Science Research
 
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
 
Anatomy of a Large Website Project
Anatomy of a Large Website ProjectAnatomy of a Large Website Project
Anatomy of a Large Website Project
 
Anatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter NotesAnatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter Notes
 
The Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with PloneThe Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with Plone
 
Plone Hosting: A Panel Discussion
Plone Hosting: A Panel DiscussionPlone Hosting: A Panel Discussion
Plone Hosting: A Panel Discussion
 
Plone+Salesforce
Plone+SalesforcePlone+Salesforce
Plone+Salesforce
 
Academic Websites in Plone
Academic Websites in PloneAcademic Websites in Plone
Academic Websites in Plone
 
Plone
PlonePlone
Plone
 
Online Exhibits in Plone
Online Exhibits in PloneOnline Exhibits in Plone
Online Exhibits in Plone
 
Online exhibits in Plone
Online exhibits in PloneOnline exhibits in Plone
Online exhibits in Plone
 

Recently uploaded

Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 

Recently uploaded (20)

Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 

ArchGenXML / UML and Plone

  • 1. ArchGenXML / UML and Plone Plone Regional Symposium New Orleans, LA July 22, 2005 Nate Aune Jazkarta Consulting www.jazkarta.com
  • 2. Who am I? • Developer and owner, Jazkarta Consulting (www.jazkarta.com) • Musician - saxophonist and composer (www.nateaune.com/music/) • Founder of Plone4Artists project (www.plone4artists.org)
  • 3. Overview • What is Archetypes? • What is UML? • What is ArchGenXML? • Build a model using UML • Transform the model into a Plone • Questions?
  • 4. What is Archetypes? • Framework for developing Plone products • Automatically creates view and edit pages • Maintains unique object IDs • Creates references between objects
  • 5. Archetypes framework • Field validation • Standard security setup • Alternate storage options • Data transformation capabilities
  • 6. Archetypes architecture • Schema • Field • Widget • Field • Widget • ...
  • 7. Example Archetype: Artist schema= Schema(( StringField('title'), ImageField('photo'), LinesField('instrument'), )) class Artist(BaseContent) schema = BaseSchema + schema registerType(Artist,PROJECTNAME)
  • 8. Widgets schema= Schema(( StringField('title', widget=StringWidget( label=’Artist name’, size=20), ), ImageField('photo', widget=ImageWidget( label=’Headshot’), ), LinesField('instrument', widget=MultiSelectionWidget( label=’Instruments’), multiValue=1, ), ))
  • 9. What is UML? • UML = Uniform Modeling Language • Standard widely-adopted graphical language • Describes the artifacts of software systems • Focus on conceptual representations
  • 12. What is ArchGenXML? • Command line utility • Auto-generates code from a UML model • No round-trip support yet • Custom code is preserved upon regeneration
  • 13. Why use ArchGenXML? (part 1) • You want to save time • You are a lazy programmer • You don’t like to reinvent the wheel • You don’t like copying and pasting code • You make heavy use of references and interfaces
  • 14. Why use ArchGenXML? (part 2) • You have big projects with many different content types • You want or need a well-documented interface to your product • You like structured model- and pattern- driven software development • You want to maintain your project in the future without getting a headache
  • 15. UML to Archetypes using ArchGenXML schema= Schema(( StringField('title', widget=StringWidget( label=’Artist name’ size=20), ), ImageField('photo', widget=ImageWidget( label=’Headshot’), ), LinesField('instrument', widget=MultiSelectionWidget( label=’Instruments’), multiValue=1, ), ))
  • 16. UML speak to AT speak • product • package • content type • class • method • operation • field • attribute • property • tagged value
  • 17. In practice • 1) Save your model to the Products dir • 2) Run the ArchGenXML script • 3) Restart Zope • 4) Install the newly generated product svn co svn://svn.plone4artists.org/trunk/ArtistSite
  • 18. Running the script $ cd /var/local/zope/instance1/Products $ ArchGenXML/ArchGenXML.py -o ArtistSite ArtistSite.zuml ArchGenXML 1.4 devel 4 (c) 2003 BlueDynamics GmbH, under GNU General Public License 2.0 or later set outfilename [string] to ArtistSite Parsing... =============== opening zargo XMI version: 1.2 using xmi 1.2+ parser outfile: ArtistSite Generating... ============== method bodies will be preserved >>> Starting new Product: ArtistSite Generating class: Artist $
  • 19. ArtistSite product dir $ ls ArtistSite Artist.py __init__.py i18n skins Extensions config.py refresh.txt version.txt $ Restart Zope Install product using QuickInstaller
  • 20. Artist.py • Inserts documentation • Placeholders for custom code • i18n message ids • Using ArtistSite/model/generate_source.sh • Inserts author information • Creates i18n msg catalog .pot file • strips HTML from doc strings
  • 24. Static vocabulary • Define a static vocabulary of instruments
  • 25. Dynamic vocabulary Use ATVocabularyManager to manage list of instruments
  • 27. Containment Use the solid rhomb to make a strict containment ‘Artist’ instances can only be added to an ‘Artists’ instance
  • 29. Override base class The artists folder will get large, so make it a BTreeFolder
  • 30. References Create a direct association results in: Reference field group to artist(s)
  • 31. Group edit form Group is associated with artists
  • 33. Configure browser widget Select the end point Make multivalued Specify relationship Define query
  • 36. Back references Groups that artist belongs to
  • 37. Stereotypes Add the ‘member’ stereotype to tell ArchGenXML to subclass CMFMember
  • 38. Registration form • SiteMember is installed • Replaces default member • Easy way to create new member types
  • 39.
  • 40. PloneMall • Example of a sophisticated e-commerce framework built using UML • See the UML model here: • http://www.plonemall.com/uml/UML-beta2.png/image_view_fullscreen
  • 41. What I didn’t cover • Methods • Stereotypes • actions, portal_tool, abstract, stub, ordered • Generalization (Interfaces) • Workflow • Unit testing
  • 42. Acknowledgements • Philipp Auersperg (Blue Dynamics) • Jens Klein (jensens) • Martin Aspeli (optilude) • Fabiano Weimar dos Santos (xiru) • Bernie Snizek (DrZoltron) • Alan Runyan and Enfold Systems • Plone community
  • 43. Links • ArchGenXML presentation - http://www.jazkarta.com/presentations/archgenxml-presentation • ArchGenXML product page - http://plone.org/products/archgenxml • ArchGenXML getting started tutorial by Jens Klein • http://plone.org/documentation/tutorial/archgenxml-getting-started • ArchGenXML manual (with screenshots) • http://plone.org/documentation/archetypes/archgenxml-manual • Intro to Archetypes by Sidnei da Silva, published on ZopeMag.com • http://www.zopemag.com/Issue006/Section_Articles/article_IntroToArchteypes.html • Archetypes: Customizing Plone in 60 seconds (PDF) by Andy McKay • http://www.enfoldsystems.com/About/Talks/archetypes.pdf • Archetypes Fields Quick Reference by Maik Röder • http://plone.org/documentation/archetypes/arch_field_quickref_1_3_1 • Archetypes Widgets Quick Reference by Maik Röder • http://plone.org/documentation/archetypes/arch_widget_quickref_1_3_1