Heads up! These docs are for Portofino 3, which is a legacy product. Check out Portofino 4!

September 29th, 2009

We're introducing ManyDesigns Portofino 3.0 beta 1, in preparation of our upcoming major release 3.0.
What's new? In one short sentence: productivity and flexibility at the same time.

Many of you have chosen Portofino 2.0.x for the model-driven approach and for the productivity it provides. In a very short time, you've been able to create applications that look great and have rich functionality for information management, workflows, user management, charting and reporting.

Now that you've learned the framework, you're pushing its boundaries, and want more than the standard functionality. You're interested in custom operations, i.e., pages that provide additional functionality while staying integrated in the application model, navigation, and look & feel.

Also you're interested in customizations: adding your branding, changing the page layout, overriding the behavior of the standard functionality.

You want the flexibility of custom development, while maintaining the productivity of the model-driven approach. You want a Portofino that is more open architecturally and that exposes its building blocks (the visual and functional 'elements') so that you can reuse them in your own way and be productive.

In Portofino 3.0 we've addressed all these needs. With this beta we present the main changes and make the software available for download in binary and source form.

For more details about the productivity and flexibility at the same time" concept, make sure you read the section 'Simpler customization and extension' below.
For more details about the new great functionality we've put in this new versions, you can read the rest of the sections (from 'User management') below.

This beta version is still subject to change, so we do not recommend it for use in production. See the notes below in the text for areas that still need attention. We recommend this version for testing and welcome your feedback on the public forums.

Simpler customization and extension

Struts 2 MVC framework

Struts 2 is one of the most powerful and widespread Java MVC frameworks. It offers:

  • Simplicity: action and form beans in one convenient class.
  • Modularity of configuration: through multiple struts.xml configuration files or using annotations.
  • Extensibility: through interceptors, tag libraries, etc.

The main advantage for Portofino is the modularity of configuration. We provide a struts package called "portofino-default", which includes the configuration to run a plain-vanilla Portofino instance. Then, using a Struts 2 feature called "package inheritance", you can create a customized configuration that (a) overrides the default behavior or (b) adds new actions and functionality.

ManyDesigns Elements

We're introducing a new library, called ManyDesigns Elements, which includes the basic 'page elements' of Portofino. This is a high productivity library that includes basic fields, complex forms, navigation elements and much more. Elements is used by Portofino itself but can be very easily used in any custom application.

Currently, Elements includes a tag library for integration with Struts 2.

Portofino 2.0.x vs 3.0 summary

The following table summarizes the main changes related to customization and extension.

 Portofino 2.0.x  Portofino 3.0 (beta 1)
 Servlet based.  Apache Struts based. Full Model-View-Controller separation.
 Centralized web.xml configuration.  Modular struts.xml configuration or using annotations.
 Branding, page graphics and layout can be customized only through css stylesheets.  All the pages and major page fragments (header, footer), have their own jsp. Branding, customizations or major make-overs are easy.
 All classes have the same CRUD interface.  Each class, if needed, can have its own specialized CRUD interface.
 The 'components' that make up Portofino's pages are not visible to the application developer. Writing a custom page with the same look and feel as Portofino's standard pages is difficult.  ManyDesigns Elements are exposed to application developers.
 Use Portofino as a whole.  Use Portofino as a whole or any parts of it, depending on the needs at hand.

User management

  • Richer user data model, for better security and audit:
    • user creation date
    • last password change date
    • failed login attempts
    • "must change password" flag
    • previous passwords not to be reused
  • User self registration, with email verification and optionally admin approval.
  • Self-service password reset via email.
  • Cyphertext passwords (SHA1) stored in the database.
  • Extensive functionality for administrators.
  • User workflow: registered, email verified, active, suspended, banned, removed.
  • Automatic user suspension after a maximum number of failed login attempts.
  • Configurable minimum password length.
  • Configurable password expiry.

Notice for version 3.0 beta 1: the new data model and functionality may be subject to change. 

Email management

  • Email queue stored on the database.
  • Automatic resend on SMTP server error.
  • Email bouncing verification (through POP3 polling) and user flagging.

Notice for version 3.0 beta 1: more testing is required under different configurations and SMTP server types. Give us your feedback!

Decimal attributes

  • Any precision and scale.
  • Decimal format (decimal separator, thousands separator, currency symbol, percentage, etc.)

Cleaner URLs

The class' name, which previously was a parameter, has become a part of the URL. For example:

http://127.0.0.1/portofino/Read?class=myClass&id=20

becomes:

http://127.0.0.1/portofino/myClass/Read.action?id=20

The new URLs apply to all actions involving classes.

Automatic installation and upgrade

No more separate sql script files are required to install or upgrade between versions of Portofino.

To install, simply define your database connection in the portofino-custom.properties file, deploy the war and Portofino will populate the database automatically.

To upgrade, simply replace the old war with the new one and follow the on-line instructions. Portofino will detect the existing database version and upgrade it to the current one.

Notice for version 3.0 beta 1: more testing is required on the upgrade process. If you have a previous model developed with Portofino 2.0.x, try the upgrade process and give us your feedback. As with all migrations, make sure you back up your database before starting the process! 
The installation is available for PostgreSQL, MySQL, Oracle, MS SqlServer and Derby, while DB2 is not yet supported in version beta1
Upgrade process is available for PostgreSQL, MySQL, Oracle, 
MS SqlServer and Derby.

"Don't link" classes

Certain classes exist only so that their objects provide values for selection boxes. For example: a class 'Priority' with three objects 'high', 'medium' and 'low'.
A class marked as "don't link" enforces this semantics.

Immutable attributes

An immutable attribute allows its value to be set at object creation, but doesn't allow later updates.
Immutability was already present in Portofino 2.0.x, but applicable only to relationship attributes. Since version 3.0 (beta 1), immutability applies to any type of attribute.