Tuesday, July 19, 2011

3 features I would dream to see in Openxava

Pull BI out of the ghetto
Currently 'all in one' framework such as grails, playframework, openxava, roo, rails behave all more or less the same for CRUD modal navigation
Start from a list (resulting from a search screen or default filtering), then goes on one entity to manipulate.
Personally, I think there is/should be a step before. I would like to see the big picture instead of scrolling down a list or ajusting search params.
Furthermore, this overview can be express in format of a graphical chart which has a greater expressing power than looking at records.

To give a concrete example:
I design a 'helpdesk app' and one entity is called 'issue'. Issue entity has a number of fields among those 'type', 'status', 'origin', 'date-creation', 'date-resolution'.
Would'nt it be nice to visualize:
  • on a piechart the ventilation by type/status or/and origin, and then click on one portion to get the result filtered accordingly;
  • on a trend chart the evolution of the issue by type/status or/and origin against 'date-creation', 'date-resolution' before drilling down into the entries.
Those information come from BI queries that should be added to ease navigation and clarify the business. I found more attractive to come from a dashboard representing an overview of the business than being stick to the detail in an early phase.
It would bridge the gap between the BI world an the 'attached-entity' centric paradigm.

For Openxava, we could easily imagine other annotation

@dashboard (representation="piechart", filtering="type,status,origin")
@dashboard (representation="trend", filtering="type,status,origin", start-period="date", period-sample='day/month/year', time-param="date-creation)

Content search

Framework search as compass or hibernate-search propose some content search solution based on annotations.
If we use compass we can imagine that entity tagged as @searchableRoot could have a free text search for the field marked as @searchable.

GWT - ideally Vaadin rendering

It speaks from itself.
Get the benefit of other community for front-end snippets.
Integration with GAE, google maps...

And minuteproject in all that
Well, all that is marked as annotation could be described as model enrichment when it is data centric.
So we could easily imagine to have a field enrichment stating that it belongs to a dashboard, or better have a global convention that applies to the model that states that all fields ending with type or status are part of a dashboard. In this case one line of configuration is needed to impact the entire navigation model.
The same is true for content search but here the enrichment is already available for minuteproject4Solr track.

Monday, July 11, 2011

JPA2 simple reverse-engineering via MP console

This article shows how quickly you can reverse-engineering for JPA2 via minuteproject console.

The console is just find to have a quick look at what you can expect.

The console has two catalogs:
  • One for the target DB (for the moment there are 4 of them Oracle, DB2, mysql, hsqldb)
  • One for the target technologies (there are couples such as JPA2, spring/hibernate/Jpa/DAO, grails, playframework, vaadin).
The DB catalog holds for each db parameters corresponding to its default configurations such as:
  • primary key (Oracle use sequence, Mysql autoincrement)
  • dialect (for hibernate or orm vendor specific)
  • jdbc driver class
  • maven driver artifacts
To add new DB just add some nodes in /catalog/database-catalog.xml and restart the console.
You can share your new configuration for DB with minuteproject to be included in the next release.

The technology catalog holds for each track the set of artifacts for the different level (field, entity, package, model, application) that is to be generated.

Here a little video illustrating how to use the console:

MinuteProject 4 JPA2: reverse-engineering via console from minuteproject on Vimeo.

If you want additional feature you have to use Minuteproject with a configuration file.