Puakma: Under the hood

I'm Brendon Upson, jack-of-all-trades, master of one or two. I'm talking about life running a small ISV tackling business issues and leaping technology hurdles in a single bound.

webWise Network Consultants is based in Sydney, Australia and develops the groundbreaking Tornado Server technology.

Computed sub-pages in Tornado Server

Filed under: by Brendon Upson on 2005-07-11

One feature that never made the finals list in the original Puakma design was the ability to have a computed sub-page. We support including pages at design time through the <P@Page pageName @P> tag, but currently there is no way to dynamically hide or show the page. This is an often used feature in Lotus Notes/Domino but not one seen often in the usual web application platforms. In Puakma Tornado Server we have a workaround which is a <P@Computed @P> tag that we set the contents of in an openaction. While this works, it's a little cumbersome if you want to (for example) show a certain set of controls to a user based on their role in the application.

My pet peeve with J2EE is that JSP make developers embed business logic in the presentaion layer and Servlets make developers embed UI elements in the logic layer. With Tornado server we have a nice split: Actions hold all the logic code, while Pages do the presentation. Obviously you can still abuse the system by coding pesentation in the logic layer but I guess we'll never get to a pure stage. Why is this important? It allows graphic designers to change the layout and presentation without accidentally breaking the application.

I think down the track we'll implement a new p-tag to do the work of pulling in design elements at runtime. The actions will still be responsible for deciding which element to pull in, but that's a logic decision anyway.

On a brief aside, last week the need arose to have a p-tag type to stop any HTML appearing on the page. In this case, we needed to change a combo-box to a plain text field and remove another control completely. To do this we added a new type of ITEM_TYPE_VOID. Perfect! You can now programmatically set the item to void and it disappears completely from the page.