XML ImportExport

Purpose

XML input/output options for loading the database and providing upgrade paths is a core feature need for uPortal 3. This page is currently a place to gather ideas about requirements, technologies and design for such a system in uP3. Eventually this page will outline the actual implementation and architecture details of XML import/export in uP3.

I love robots.

Requirements

  1. Database Interaction

    • The system should use the standard DAO interface and implementations for moving data in and out of the uP3 database. This ensures that changes to the database structure won't break the XML import/export feature.
  2. Object Re-use

    • If possible the system should use the existing transfer and domain objects with the goal of keeping XML import/export specific data objects to a minimum. This ensures minimal synchronization will be needed when changes to the domain/transfer objects occur.
  3. Migration Path

    • The system should allow for upgrades, ie: export data from uPortal 3.1.2 and import it into uPortal 3.2.0.
  4. Execution

    • The APIs should be runnable both from the command line without a running portal available and from the web UI.
  5. Document Scope

    • The ability to import/export a specific object, groups of objects or the entire database should be available.
  6. Formatting

    • The XML format should be easily human readable and writable.
  7. Validation / Editor Support

    • It would be preferable if DTDs or XSDs could be created (by the tool or by hand) to aid in the editing of these files by standard XML tools.
  8. Object Model Versioning

    • It would be preferable if an object model version number could be included to ensure the XML will be parsed correctly by the current version of the import tool.
  9. Object References

    • A way to reference other objects in the same XML file, other XML files or already in the system is needed.
  10. DAO Implementation Agnostic

    • Database specific keys should not be included in the XML output and should not be needed in the input XML.
  11. Affected Domains

    • The import/export functionality should work for all portal domain objects including; users, portlet domain objects (6 different objects), groups and layouts.

Technologies

Architecture

  • Options for Upgrade requirement (req 3)
    • Use XSL to migrate data from an XML format specific to version A to the XML format specific to version B. This could be done internally to the import/export code if version numbers are included in the XML document.
  • Add fName like (user defined unique key) to objects that need to be referenced so db specific identifiers are not used.
  • Import/Export specific objects will likely be needed to allow fName references to be used instead of direct or IObjectId based references.