180 likes | 319 Views
XML Integrator. Google Wave Gadget. Purpose. Create mapping from one XML schema to another XML schema Support collaborative creation of that mapping Export that mapping as a XSLT transformation. What’s a mapping? I.
E N D
XML Integrator Google Wave Gadget
Purpose • Create mapping from one XML schema to another XML schema • Support collaborative creation of that mapping • Export that mapping as a XSLT transformation
What’s a mapping? I • Translation of one or many XML elements in the source XML to an element in the destination XML • More precisely, XML is a tree hierarchy of XML elements. This hierarchy structure can be defined using XSD or other ways, ex. DTD. But XSD is mostly used, therefore was chosen as the source of XML structure for this application.
What’s a mapping? II • Usually, it’s required to modify the source element, so it can be mapped to a destination element. • Therefore mapping must contain definition of this modification.
Mapping lifecycle • Choose source and destination XSD • Add mappings • Create XSLT • Apply to a XML
Mapping definition • Transformation type • Maximal number of inputs (optional) • XPath expression (optional) • Inputs map • Output list
Implementation – data structures • XML Mapping Model • Source schema • Destination schema • Elements mappings
Types of edits • Add mapping • Remove mapping • Change mapping’s transformation • Translate mapping inside editor • Add connection between mapping and other elements • Source element, destination element, another mapping • Remove connection
Google Wave Google Wave Wave Robot DB User User User State Server
Edit data structure • ID • Author • Type • Other attributes depending on the type of edit
Edit lifecycle • User creates an edit • Sends it to State server • Servers merges it into model • Receives edit ID • This ID is from increasing number sequence • Puts edit into Gadget state • Receives new Gadget state • Merges all newer edits into local model • Newer merges edit with ID higher than last edit processed by State server to the local instance of the mapping model
Gadget state overview User A Gadget State User B State Server and Wave Robot User C User A edits the mapping Sends edit to State Server State Server processes the edit (saves merged state to database) and returns edit ID Edit ID and Edit is submit to Gadget state Gadget state is send to each user and robot Database
Gadget state overview II • Size limit defined by Google is 100KiB for gadget state • Therefore mapping state is being held on State server • Inside gadget state are some state attributes and mainly set of edits made by users • When the state’s size would be greater than 100KiB, than Robot clear state and forces users to reload mapping state from the State server
Protocol – data structures • Model ID • Version • Last edit ID • List of edits • Edit ID • Edit content
Merging • Edits are sorted by their ID • Each is processed • If there would be any conflicts, the last wins, or will be ignored
Conflicts • User wants edit/remove already removed mapping • Edit/remove is being ignored • In other cases the last edit wins • These conflicts will be shown in the log