New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import/export forms with dependencies #779

Open
ebruchez opened this Issue Jan 27, 2013 · 10 comments

Comments

Projects
None yet
2 participants
@ebruchez
Collaborator

ebruchez commented Jan 27, 2013

Feature

The form definition, its dependencies (images, attachments), and/or form data and dependencies, are exported into a zip archive, which can be imported back into a Form Builder/Form Runner installation.

Use cases

  • Forms are developed on a instance of Form Builder distinct from the one used for staging and/or production and not reachable via direct internet connection.
  • Archival/backup of forms
  • Exchange of forms
  • Migrating from one persistence implementation to another (e.g. eXist to relational)
  • Exporting from eXist to Orbeon Forms resources
  • Import from resources to eXist

Location of functionality

  • Form Runner summary page
  • Form Runner Home page
  • P2: Form Builder Summary/Detail pages for non-published form definitions

Steps

  • Export
    • retrieve form definition, related dependencies, form data
    • use zip processor (or probably from Scala) to produce downloadable zip file
    • multiple forms can be selected for export when possible
    • specific data can be selected for export when possible (from Summary page only)
  • Import
    • use zip processor (or probably from Scala) to extract zip files.
    • if necessary: update references to dependencies in main form.xhtml file.
    • use persistence layer to import all files into the persistence layer
    • confirm import and resolve any conflicts if necessary
    • show progress indicator

Service

It might be good to implement most of the functionality as a service first. This would also enable a scripted mode which would not require the Orbeon Forms user interface.

NOTE: This however would still require a running Form Builder instance.

  • Export
    • This is implemented as a service that returns a zip archive or an error.
    • You can pass the service the id of a form, and/or search values as shown in the Form Builder Summary page. This selects 0 or more forms.
    • Each form selected is included in the archive.
    • If possible, calling the service from the command-line could be done with a simple wrapper around a tool like - wget/curl. If that is not possible or desirable, another solution can be found.
  • Import
    • This is implemented as a service taking a zip archive.
    • Since there is no user interaction, the service will implement a reasonable behavior for conditions such as already existing forms. If necessary, a couple of parameters can be added to control that behavior.
    • As in the case of export, calling the service from the command-line could be done with a simple wrapper around a tool like wget/curl. If that is not possible or desirable, another solution can be found.
    • It is unclear how we could have access to import progress information from the command-line. That might not be needed at first.
@ebruchez

This comment has been minimized.

Collaborator

ebruchez commented Jun 6, 2013

See also #1055.

@ebruchez

This comment has been minimized.

Collaborator

ebruchez commented Feb 18, 2015

Also importing/exporting data with dependencies should also be an option.

@ebruchez

This comment has been minimized.

Collaborator

ebruchez commented Feb 25, 2015

Also requested: ability to export selected subset of data only. See customer thread.

@ebruchez

This comment has been minimized.

Collaborator

ebruchez commented Oct 18, 2016

@ebruchez

This comment has been minimized.

Collaborator

ebruchez commented May 2, 2018

@ebruchez

This comment has been minimized.

Collaborator

ebruchez commented May 17, 2018

For this customer , handling form definition only is enough and there is no requirement to handle data as well. This might simply at little bit a first implementation.

@ebruchez

This comment has been minimized.

Collaborator

ebruchez commented May 18, 2018

Versioning should be handled as well:

  • upon exporting, the user must be able to select the version(s) to export
  • version numbers must be included in the zip archive
  • import must provide options to select
    • which items to import
    • how to map versions
    • whether to make form definitions available or not

See also #1451 and #3448 about relevant improvements to versioning on the Home page.

@ebruchez

This comment has been minimized.

Collaborator

ebruchez commented May 18, 2018

The requirement also calls for:

  • doing this manually via a Form Runner UI
  • doing this via an API
@avernet

This comment has been minimized.

Collaborator

avernet commented Jun 27, 2018

@ebruchez

This comment has been minimized.

Collaborator

ebruchez commented Jul 10, 2018

+1 from customer as an option to migrate between providers (although another, explicit way of migrating between providers might be better).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment