ArchGenXML project is a code generator for Plone CMS.
It builds on architecture-centric, model-based and test-driven developement. Generates Python code from UML-Models (XMI-Format). It's optimized for the generation of code based on the Archetypes framework.
With ArchGenXML you can create working python code without writing one single line of python. It is is a commandline utility that generates fully functional Zope Products based on the Archetypes framework from UML models using XMI (.xmi, .zargo, .zuml) files. The most common use case is to generate a set of custom content types, possibly with a few tools, a CMFMember type and some workflows thrown in.
In practice, you draw your UML diagrams in a tool like Poseidon or ObjectDomain which has the ability to generate XMI files. Once you are ready to test your product, you run ArchGenXML on the XMI file, which will generate the product directory. After generation, you will be able to install your product in Plone and have your new content types, tools and workflows available.
At present, round-trip support is not implemented: Custom code can't be converted back into XMI (and thus diagams). However, you can re-generate your product over existing code. Method bodies and certain "protected" code sections will be preserved. This means that you can evolve your product's public interfaces, its methods and its attributes in the UML model, without fear of losing your hand-written code.
Here are some key features of "ArchGenXML":
- Why use ArchGenXML:
- You want to save time
- You are a lazy programmer
- You don't like to reinvent the wheel
- You dont like copying and pasting code and bugs
- You make heavy use of references and interfaces
- You have big projects with many different custom 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 future without getting a headache
- and many more good and odd other reasons.
- make z3 interfaces the default interface and dont accept any longer zope2 interfaces [jensens]
- Use portal_type tagged-value if available instead of class name when generating workflows.xml. [vincentfretin]
- remove unneccessary imports for remember/membrane, view permissions can now additionally be specified in the dependency association to the content class, name of the view template can now additionally be specified in the dependency relation between view class and content class, pass fixed size parameter to arrayfield (i.e. 4 generates size-4) , browser views: name on dpendency determines name of view, remove old generator i18n support. [zworkb]
- tgv for dynatree widget [hpeteragitator]
- Added worklist:guard_expressions tag definition. [vincentfretin]
- Fixed UnicodeEncodeError when writing the code of existing methods back to the files and the code is in the unicode format. [deo]