Adaptive Forms

- A XML-Based Framework for Dynamic Data Entry
Master's Thesis project by Henrik Gammelmark, Department of Computer Science, University of Aarhus.

This website accompanies the Master's Thesis by providing demonstrations of the framework capabilities and access to the prototype implementation.

Thesis abstract

- What is AdapForms all about?
A framework for defining adaptive input forms in a UI- and device-independent manner is presented. Forms defined in the defined XML language can be pre-adapted based on the use context and adapt themselves at runtime by changing the value, visibility and validation status of each input field dynamically. Adaptation semantics and complex validation rules are expressed using XPath and embedded into the form definition. Turing-complete adaptations and validation is made possible through hook methods.

The host application can transparently inspect and manipulate the form via a type-safe API or XML DOM at runtime, either on-demand or event-initiated, while the end-user is interacting with the form. The decoupled architecture means that the host application need not know anything about how or where the end-user interacts with the form, and thus the form can be transmitted (possibly in a partially completed state) to another application using a different UI layer.

Forms will always be in a valid state when submitted, and data is transparently converted to and from simple Java types or even JavaBeans. No additional layer of validation is needed, as this is performed locally independent of the UI or client in use.

The full feature set has been implemented as a reference prototype in Java, released as open source. The prototype UI is a XHTML- and Ajax-based web GUI.

The entire thesis is available here

Examples

- See adapforms-web in action
Use the form below to run the available AdapForms examples or view their XML source. The selection form itself is also an example. You may also experiment with the framework by pasting a XML form yourself, and see what the outcome is.

Notice that none of the examples does anything sensible with the entered data, but is used for demonstration purposes only.
Your browser is not capable of displaying and processing this form correctly
Interacting with this form requires AJAX support, which is either not supported or is disabled in your web browser.

Example selection

Read-Only. You cannot change this value
You may select either an existing example (from list or by filename), or paste a XML form that will be parsed and rendered (useful for testing)
Read-Only. You cannot change this value
Selection type
Read-Only. You cannot change this value
Select an example
Read-Only. You cannot change this value
Form file (.xml)
Read-Only. You cannot change this value
XML form
Read-Only. You cannot change this value

Display mode

Read-Only. You cannot change this value
Select how you want the example to be displayed
Read-Only. You cannot change this value
Action
Read-Only. You cannot change this value
Open in new window
Read-Only. You cannot change this value
User role
Read-Only. You cannot change this value
Show debug info
Read-Only. You cannot change this value
Framework language
Read-Only. You cannot change this value

 

Files and resources

The prototype implementation is released under the BSD license, meaning that it can be used for most purposes for free, including commercial.

Item Description Resources
Master's Thesis My Master's Thesis, in which the framework was designed. Also contains a few brief tutorials. .pdf
adapforms-core Core framework .jar | .jar (with source)
adapforms-web J2EE web-specific GUI and interaction layer .jar | .jar (with source)
adapforms-bundle Both adapforms-core and adapforms-web bundled together in a single JAR .jar | .jar (with source)
adapforms-complete Entire project tree for adapforms, including Ant script and an example Eclipse project .zip
Documentation JavaDoc API documentation (HTML) Online version | .zip
XSD XML Schema Definition for the AdapForms XML language .xsd