SLIDES
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

SLIDES

on

  • 890 views

 

Statistics

Views

Total Views
890
Views on SlideShare
890
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

SLIDES Presentation Transcript

  • 1. XForms: The Perfect Front-End to Your Composite Application Doug Tidwell, IBM [email_address]
  • 2. 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.
  • 3. 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
  • 4. 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.
  • 5. The paradigm When you need to create a user interface for XML data, use XForms.
  • 6. Our Sample Application: Bracketology
  • 7. 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.
  • 8. The XML document structure
    • <bracket>
    • <title>The Santa Clara Smackdown</title>
    • <contestants>
    • <contestant> <!-- 16 contestants -->
    • </contestants>
    • . . .
    • <results>
    • <result> <!-- 15 results -->
    • </results>
    • </bracket>
  • 9. A contestant
    • <contestant
    • seed=&quot;1&quot;
    • image=&quot;images/sca-sdo.jpg&quot;>
    • 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.
  • 10. A result
    • <result
    • round=&quot;1&quot;
    • firstSeed=&quot;1&quot;
    • secondSeed=&quot;16&quot;
    • winnerSeed=&quot;1&quot;/>
    • 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.
  • 11. 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.
  • 12. Assembly with SCA
    • <result round=&quot;1&quot; firstSeed=&quot;1&quot; secondSeed=&quot;16&quot; winnerSeed=&quot;1&quot; />
    • <result round=&quot;1&quot; firstSeed=&quot;8&quot; secondSeed=&quot;9&quot; winnerSeed=&quot;9&quot; />
    • . . .
    • <result round=&quot;2&quot; firstSeed=&quot;1&quot; secondSeed=&quot;9&quot; winnerSeed=&quot;&quot;/>
    • 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.
  • 13. Choosing between contestants
  • 14. XHTML page layout
  • 15. The bracket display
  • 16. Demo time Let the games begin!
  • 17. Summary
  • 18. 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.
  • 19. Bracketology articles at developer Works
    • 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!
  • 20. One more time When you need to create a user interface for XML data, use XForms.
  • 21. oasis-opencsa.org/sca-roadshow/
  • 22. Thanks! Doug Tidwell, IBM [email_address]