Database Patterns realized with AribaWeb
Saturday, 21 February 2009
Take a look at aribaweb.org (viaTheServerSide).
AribaWeb is a 4GL RAD for web applications running on a Java stack.
It uses an approach described in data dictionaries as a database pattern to generate metadata-driven UI.
The Ariba toolset seems reasonably mature from the screencasts, although one has to be wary because a lot of the AJAX work appears to be relatively new.
I’m watching the MetaUI screencast now, and the bubble style error messages on fields is quite cool. However, cooler still is the use of CSS-like language to mark up how fields are presented. This reduces impedance mismatch between binding data to controls, instead turns data into its representation.
Custom validation rules is specfied using a groovy string. I’m not sure if this is translated into Javascript on the client-side. The Meta UI specification decoupled from HTML (layout is in named zones), and there is no reason why this couldn’t be rendered in a RIA.
Actions in UI on a POJO is declared via an annotation (similar to Naked Objects). However, the actions seem to be more restrictive in the sense that the methods must not take any arguments.
e.g.
@Action(message="Account Suspended")
@Visible("! $object.isSuspended")
void suspendAccount() {
...
}
Overall, AribaWeb looks very polished. I haven’t had a look at the underlying libraries used1, but I look forward to delve into it further.
Footnotes
1There was a mention of JPA and Hibernate. (Is the display layer JSF?)
You should follow me on twitter here
No. 1 — February 22nd, 2009 at 9:22 am
Thanks for checking out AribaWeb! In answer to your footnote, the display layer is *AribaWeb*. I.e. MetaUI is build on top of the AribaWeb Core (plus the Widgets library). AribaWeb Core is a component-oriented UI framework (its what handles all the AutoAJAX) and may be used independently of MetaUI. MetaUI is completely unaware of the client (AJAX / JavaScript) — it gets this support for free from AribaWeb Core.
Also, re: Actions: you can declare arbitrary (multi-argument) actions in .oss files. e.g.
@action=DoIt { actionResults:${object.doSomething(10, 20, “foo”); null} }
No. 2 — February 23rd, 2009 at 11:21 am
Wow that was quick! Thanks Craig.
No. 3 — February 24th, 2009 at 2:50 am
My pleasure! :-) Feel free to post questions to our newsgroup at http://groups.google.com/group/aribaweb (We’re sure to see your question if it shows up there). Thanks again for your interest in AribaWeb!