NZZUG Meetup 8th September 2005
Where/When
Thursday 8th September
4 - 6 pm
Pete's home/office, Ponsonby, Auckland
Who Attended
Cameron Junge - Autonomous Web
Michael Dunstan - EYTL
Pete Simmons - BCMPweb
What'd we get up to?
A few less people than the last two meet ups but another new face (Cam) to add to us two stalwarts.
We started with some general discussion about shared experiences with Zope/Plone and other technologies and the annecdotes were very amusing. We also dicussed upcoming projects we each have on and how we might be able to help each other. This was a great oppurtunity to get different points of view from each of us and our varied backgrounds. Time flew during this part and before we knew it it was 5:15 and we had spent over an hour.
ArchGenXML Demo
I (Pete) then gave an informal demo of ArchGenXML which allows you to
design an application in UML diagrams and then generate code from those
diagrams.
I demonstrated using a model from a recent project which added
custom catalogue types to a PloneMall based website for a partner
company to BCMPweb, Addweb. Their site sells websites and the custom
mall types are the features that make up the packages that they sell.
The process is essentially, create interfaces, classes etc in your
diagram then save it. And use ArchGenXML to generate Archetypes code
from the model. The main benefits are that ArchGenXML will do all the
heavy lifting when it comes to creating the code and allow you to
concentrate on good design. ArchGenXML is also good for anyone with a
little (or a lot) experience with UML and design methodologies based
around them. In its basic use you have 1 product per diagram and
ArchGenXML creates all the "Zope Product skeleton" including things
like the __init__.py, Install module (for QuickInstaller/Plone Control
Panel install/uninstall) and schema code generation on your types. This
allows you to get a leg up and lessens the learning curve needed to get
your first Zope Filesystem product up and running.
While
there are ways that ArchGenXML works and things you need to do to fit
in with those, unlike many IDE type environments ArchGenXML allows you
to customise by code editing at every stage. I have found only 1 thing
that I wanted to do and would have when hand coding but couldn't do in
ArchGenXML. And having thought it through a little more I realised a
nicer way around it. With everything else there has always been a nice
clean way to add the required code. For example by default all method
bodies are preserved during generation so once you have added some code
to do the work you can be sure it will not be overwritten next time you
do a generation. This allows you to evolve your code and model as the
design evolves.
ArchGenXML has a generic way to add
properties to the fields which means as you learn more about Archetypes
the tools uses can grown with that knowledge. E.g. if you customise a
widget template to use a new special property you added you can add
that property to the model and it will get passed through to the code.
ArchGenXML
knows how to code a lot of UML features as well, if you add stub
classes/interfaces from another product for example code modules for
them get created. Then if you add dependices on them, inherit from
them, or realise an interface etc. your generated code will have the
required imports. See 'import_from' tag.
For more information visit the ArchGenXML Tutorial or contact Pete pete (at) bcmpweb dot com.
From
the demo and discussion Micheal decided he should definitly have a look
at this. Cam thought it would definitly be useful if he were doing more
filesystem work but as he is only working on skinning Plone mostly he
said it probably wouldn't add a lot of benefit.
Wrap Up
After
the demo we realised it was after 6pm and it was time for us to head
home. We all agreed it had been good to catchup and should do it again
soon. We will discuss another meet up on the mailing list in the next
few weeks.
Related Links
- ArchGenXML Tutorial
- www.gentleware.com - Poseidon the UML tool
- Addweb