On July 13, 2011 we released in production the latest stable version of the Livebase platform, delivering a number of improvements to generated applications.

Improved concurrency control on bidirectional associations.

Livebase allows very easily to create applications with many-to-many associations that can be edited on both sides. For instance, you can have an Employee class, a Project class, and a many-to-many association between these classes: if the association is bidirectional, users can concurrently add/remove Projects from any given Employee and also add/remove Employees from any given Project. This means, for instance, that an Employee can be concurrently modified directly (by editing it) and indirectly (by removing it from any of the Projects he’s associated with).

Livebase also allows to define min and max cardinality constraints on both sides of each association (e.g. an Employee can work on no more than three Projects, and a Project must involve at least one and at most ten Employees). Enforcing cardinality constraints efficiently on bidirectional associations, under heavy concurrency conditions, requires a very sophisticated logic.

Upon user’s suggestion, some parts of the application-level locking system (originally designed with a pessimistic approach) have been refactored with an optimistic approach, which should deliver an higher degree of concurrency with a small risk of transactions rejection.

Improved objects-counting query generation

When a user wants to list all the objects of a given class (e.g. all the Orders), Livebase applications count first the number of objects visible to that user according to the database-partitioning rules defined on the specific application (e.g. show only Orders approved in the same month) and also according to the grants associated to the user’s role (e.g. show only Orders issued to the department the user belongs to). The preliminary query used to retrieve this preliminary count from the database is now optimized whenever possible (less joins) in order to be faster.

XML data representation added to the REST APIs

Every application generated by Livebase comes with a complete REST API to access data programmatically (only GET methods are currently supplied, PUT, POST and DELETE methods will be supported by the end of September). Up to now only the JSON format was available with the REST API to represent objects. With this release, XML is also available. The documentation on the web site will be updated as soon as possible with all the technical details on how to use the new XML representation.

New skin for the user interface of generated applications

In the process of creating a skinning framework for the applications generated by Livebase (allowing end-users to select their preferred skin at run-time) we have just released the first skin, which we believe is much nicer than the standard one provided by the GWT framework. Hope you like it!.