ZCase Framework

ZCase is a custom framework for creating Zope products with files in the filesystem. The other way to create Zope products is through the web. In comparison to through the web products, filesystem products are more powerful and flexible, but more difficult to build. ZCase elevates product development from programming to computer added modelling, thus removing the prohibiting overhead.

The framework consists of a domain specific formalism ZProduct to create detailed product models and a suit of related transformations to generate complete code.

Current release 0.4 can be downloaded here.

Requirements

AToM3

Version must be 0.2.2. You can download a distribution for your platform at the AToM3 site.

Note: distribution version 2.2 is version 0.2.2 (or the other way around)

Python

ZCase was tested with python 2.1.1 and 2.4.1. Versions in between should work too.

Using

Familiarity with AToM3 and knowledge of Zope and Zope products is required.

Modelling

Just start modelling and constraints and validation rules should guide you towards a valid Zope product.

Screenshot : A model of a container product

For a quick start, load model Poll_ZProduct_mdl.py from the <AToM3 home>\samples folder. This is a ZProduct model of the demo product whose development is step by step described in The Zope Developer's Guide (2.4 Edition, Chapter 3, page 33).

Further more, the same folder has models of a generic item and folder products, which can be used as basis for new products.

For more details, refer to the README in the <AToM3 home>\mdl_ZProduct directory. Finally, every modelling construct has Help, which can be accessed so:

  1. Place a construct instance on the canvas.
  2. Click on the "Edit entity" button and then on the construct instance.
  3. A window will appear displaying the construct properties.
  4. Click on "Edit" next to label "Help".

Validation

Clicking the similarly named button will validate a ZProduct model. A validated model means that the specified product fulfills Zope requirements towards products.

Screenshot : A validated model: valid and warning tokens can be seen

Note: this transformation does not verify if your product actually solves the business problem.

Updating Product Code

Clicking the similarly named button will start a transformation that generates/updates two File objects with ids: <your product class name> and __init__.

Screenshot : The model is updated with files (the left top conner); generated code displayed

Note: This transformation is computation intensive: on a 3GHz Pentium4 computer, it takes about 20 seconds to update the sample container product (see directory <AToM3 home>\samples).

Generating Products

Clicking the "Generate Product Package" button will create a product file structure in the code generation directory (default ZCase location: <AToM3 home>\TEMP). A report will be saved on canvas and shown to the user.

Screenshot : A report of a product generation

The product directory can be placed in the Product folder of a Zope instance.

Troubles

I worked hard to ensure that you never meet one. However, if one or another way you end up with entities that look like ones from UML class diagrams, DO NOT save such a model over your previous version.

If you did, try to recover the previous version from a backup file that AToM3 creates (and overwrites) before each save. The file name would be the original filename with attached extension .back.

Please submit a bug report.

Inconsistencies

I had to make some shortcuts. For example:

Delimitations

Limitations

Contact

ZCase is created by Andriy Levytskyy.

Please submit bug reports, feature requests and your questions via the SourceForge project page or email the project admin.