|
|||||
|
|
|||||
|
|
Chapter 3. formVista(tm) Design GoalsformVista(tm) has been designed with the unique way that web applications are developed in mind. As has been mentioned above, web application development is different than other software development because of it's content focus. In many ways, formVista(tm) reduces software to self-contained pieces of programmatic content which can be placed on pages as easily as any other content element. 3.1. Make Advanced Server Side Features Behave as ContentThe key innovation in formVista(tm) is the formVista Markup Language (FVML), an XML language that much like HTML describes what a component looks like but unlike HTML also describes:
Components describe a complete self-contained piece of end user functionality. The framework takes care of hooking up all features on the page. FVML looks much like XHTML. Each tag in FVML is implemented as a separate PHP class. Adding new tags to the language is as simple as subclassing the fv_baseWidget class and overridding a few members. Components handle everything related to a a piece of functionality even if that happens to span multiple pages and requests. For instance, a form component doesn't only display the form, it also processes it when the form is submitted which may involve applying any validation rules and automatically redisplaying that form with embedded validation errors. It also handles all the interaction with the database and any feedback to the user. This is the key to formVista components reuse. Through the command routing features of the framework, formVista components post and link to other components, not pages. In this way one can have a form component post to another page with dozens of components on it and the commands will be routed to the correct component. In general, components post back to themselves which then hand the command off to other components through “feedback”. For instance, a search form may post back to itself to a “onDoSearch” comand handler which passes the request off to a columnlist component which executes the search and displays the results. From the point of view of designer, all this is automatically taken care of automatically. In our MOBIE system, using this feature we've been able to implement a complete forum system with registration, invitation, article posting, reading, email notifications and preferences that can be loaded on a page by a webdesigner with literally two “simpleVista” function calls. Actually, the forums on formvista.com are an example of this component. Through the event propagation and command routing system, formVista(tm) components operate “inside the page” much like a Java Applet or Flash Movie. Using a few simple PHP function calls no more complicated than a typical <object> tag, a web designer places formVista components in the page without needing to know anything about the internal workings of a component. Because of formVista's concept of components posting back to themselves and using feedback to invoke other components, entire systems can be placed on webpages by nontechnical designers using only a few calls. Programmatic features become content placed as easily a graphic or applet. |
|