220 likes | 356 Views
XForms: The Perfect Front-End to Your Composite Application. Doug Tidwell, IBM dtidwell@us.ibm.com. The problem. We need interfaces to create, edit and update XML documents. XML documents are at the heart of tens of thousands of Web services applications.
E N D
XForms: The Perfect Front-End to Your Composite Application Doug Tidwell, IBM dtidwell@us.ibm.com
The problem • We need interfaces to create, edit and update XML documents. • XML documents are at the heart of tens of thousands of Web services applications. • XML documents are at the heart of every human interaction with a business process (BPEL). • It’s easier to create XML than it is to create some other document format and then convert it to XML. • We need some way to create interfaces for XML documents.
Some approaches to this problem • We could edit the XML by hand in emacs, vi, Notepad, or some equally unfriendly tool. • Very error-prone, particularly for complicated XML document types • Acceptable to geeks only • We could write a graphical application that used various kinds of controls to edit the XML behind the scenes. • Very high cost of development • We still have to write the code to map values selected in each control to something in the XML document • Difficult to maintain as the XML document structure changes
Some approaches to this problem • We could write an HTML page with our favorite AJAX library. • Faster than building a graphical application, but… • We still have to write the code to map values selected in each control to something in the XML document • Difficult to maintain as the XML document structure changes • We could use XForms. • Similar development time compared to AJAX • XForms has a built-in data model (unlike everything else we’ve mentioned) • Interface controls are tied directly to the XML • Much easier to maintain as the XML structure changes.
The paradigm When you need to create a user interface for XML data, use XForms.
Bracketology • Our XML document represents a sixteen-team, single-elimination tournament. • We’ll choose between competitors until only one is left. • We’ll use XForms to display the competitors, update the XML data and generate the matchups for the later rounds of the tournament.
The XML document structure <bracket> <title>The Santa Clara Smackdown</title> <contestants> <contestant> <!-- 16 contestants --> </contestants> . . . <results> <result> <!-- 15 results --> </results> </bracket>
A contestant <contestant seed="1" image="images/sca-sdo.jpg"> SCA-SDO </contestant> • The seed determines the matchups in the first round. • The image attribute is used as a URL. • The text of the element is what appears in the bracket.
A result <result round="1" firstSeed="1" secondSeed="16" winnerSeed="1"/> • The round attribute indicates in which of the four rounds this result occurred. • The firstSeed and secondSeed attributes indicate which contestants faced each other. • The winnerSeed attribute indicates who won. They move on to the next round.
Complications • The seedings of the contestants determine the matchups for the first round. • We don’t know who’s involved in the second round until the first round is completed. • It’s confusing. For example: • The winner of the first matchup in the first round is the first contestant in the first matchup of the second round. • The winner of the second matchup in the first round is the second contestant in the first matchup of the second round.
Assembly with SCA <result round="1" firstSeed="1" secondSeed="16" winnerSeed="1"/> <result round="1" firstSeed="8" secondSeed="9" winnerSeed="9"/> . . . <result round="2" firstSeed="1"secondSeed="9" winnerSeed=""/> • We can define these relationships in XForms. When we move from one round to the next, we’ll use <xf:setvalue> to update the results correctly.
Demo time Let the games begin!
Summary • We’ve used an XForms document to display and manipulate a complicated XML document format. • All of the data manipulation is done in XForms, yet we get nice AJAX-like effects as we move between rounds, panels, etc. • The result is a sophisticated interface that is built around our XML document type, generates valid XML data and is easily maintained.
Bracketology articles at developerWorks • Using XSLT to generate the bracket from the XML: • Uses new features from XSLT 2.0/XPath 2.0: The to operator, sequences and <xsl:function> • ibm.com/developerworks/xml/library/ x-xslt20xpath20/ • Use an XForms document as a custom XML editor: • Covers the entire XForms document we’ve demonstrated here • Uses XSLT 2.0 to refactor the XForms code, leaving a 70% smaller document to maintain • ibm.com/developerworks/library/x-xformsxslt/ Host your own tournament!
One more time When you need to create a user interface for XML data, use XForms.
Thanks! Doug Tidwell, IBM dtidwell@us.ibm.com