2017-09-28 23 views
0

Comment conserver un formulaire ancien sauvegardé avec une nouvelle version. J'ai sauvé une forme dans nos application.this est une capture d'écran ci-dessous dans ma forme constructeur et coureur: enter image description here enter image description here Après que j'ai ajouté un nouveau champ à l'aide (formulaire constructeur), mais quand je l'ai ouvert ce formulaire a été enregistrée , je n'ai pas trouvé le champ ajouté. ceci est une capture d'écran forment ma nouvelle version du formulaire: enter image description here et ceci est le résultat que j'avais: enter image description hereComment garder un formulaire anciant enregistré avec une nouvelle version dans ORBEON?

EDIT

@ Avernet, je l'ai utilisé l'API CRUD et je suivais les étapes à l'aide de deux méthodes:

  1. le xml de récupérer une forme en imposant le plus récent numéro de version:

    => Si je mets l'ancienne version 1 au lieu de 2, il n'y a pas d'erreur.

  2. Création d'un formulaire de test vide avec la dernière version et le remplir avec le formulaire créé avec l'ancienne version

Ceci est un stacktrace lorsque l'erreur a été produite:

|An Error has Occurred | |----------------------------------------------------------------------------------------------------------------------| |Fatal error: The markup in the document following the root element must be well-formed. | |----------------------------------------------------------------------------------------------------------------------| |Application Call Stack | |----------------------------------------------------------------------------------------------------------------------| |oxf:/ops/pfc/xforms-xml-submission.xpl |reading processor output | 111| |······················································································································| |element= | |name =data | |ref =instance | |----------------------------------------------------------------------------------------------------------------------| |oxf:/ops/pfc/xforms-xml-submission.xpl |reading processor output | 102| |······················································································································| |element= | |name =data | |id =raw-instance | |----------------------------------------------------------------------------------------------------------------------| |:/Users/fkammoun/AppData/Local/Temp/upload__5a2c8fe_15fbb88e967__8000_00000000.tmp| | 1| |----------------------------------------------------------------------------------------------------------------------| |Exception: org.orbeon.oxf.common.ValidationException | |----------------------------------------------------------------------------------------------------------------------| |org.orbeon.oxf.xml.XMLParsing$ErrorHandler |fatalError |XMLParsing.java | 221| |orbeon.apache.xerces.util.ErrorHandlerWrapper |fatalError | | | |orbeon.apache.xerces.impl.XMLErrorReporter |reportError | | | |orbeon.apache.xerces.impl.XMLErrorReporter |reportError | | | |orbeon.apache.xerces.impl.XMLErrorReporter |reportError | | | |orbeon.apache.xerces.impl.XMLScanner |reportFatalError | | | |.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher|dispatch | | | |n.apache.xerces.impl.XMLDocumentFragmentScannerImpl|scanDocument | | | |orbeon.apache.xerces.parsers.XML11Configuration |parse | | | |orbeon.apache.xerces.parsers.XML11Configuration |parse | | | |orbeon.apache.xerces.parsers.XMLParser |parse | | | |orbeon.apache.xerces.parsers.AbstractSAXParser |parse | | | |processor.generator.URLGenerator$URLResourceHandler|readXML |URLGenerator.java |1042| |org.orbeon.oxf.processor.generator.URLGenerator$1 |readImpl |URLGenerator.java | 545| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|read |ProcessorOutputImpl.java | 257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |read |ProcessorOutputImpl.java | 394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |ProcessorImpl.java | 262| |ssor.pipeline.PipelineProcessor$InternalTopOutput$1|run |PipelineProcessor.java | 535| |org.orbeon.oxf.processor.pipeline.PipelineProcessor|executeParents |PipelineProcessor.java | 696| |org.orbeon.oxf.processor.pipeline.PipelineProcessor|access$400 |PipelineProcessor.java | 60| |cessor.pipeline.PipelineProcessor$InternalTopOutput|readImpl |PipelineProcessor.java | 531| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|read |ProcessorOutputImpl.java | 257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |read |ProcessorOutputImpl.java | 394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |ProcessorImpl.java | 262| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |ProcessorImpl.java | 266| |org.orbeon.oxf.processor.IdentityProcessor$1 |readImpl |IdentityProcessor.java | 33| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|read |ProcessorOutputImpl.java | 257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |read |ProcessorOutputImpl.java | 394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |ProcessorImpl.java | 262| |orbeon.oxf.processor.pipeline.PipelineProcessor$1$1|run |PipelineProcessor.java | 93| |org.orbeon.oxf.processor.pipeline.PipelineProcessor|executeChildren |PipelineProcessor.java | 679| |org.orbeon.oxf.processor.pipeline.PipelineProcessor|access$000 |PipelineProcessor.java | 60| |g.orbeon.oxf.processor.pipeline.PipelineProcessor$1|readImpl |PipelineProcessor.java | 91| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|read |ProcessorOutputImpl.java | 257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |read |ProcessorOutputImpl.java | 394| |processor.pipeline.choose.ConcreteChooseProcessor$1|readImpl |ConcreteChooseProcessor.java | 126| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|read |ProcessorOutputImpl.java | 257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |read |ProcessorOutputImpl.java | 394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |ProcessorImpl.java | 262| |orbeon.oxf.processor.pipeline.PipelineProcessor$1$1|run |PipelineProcessor.java | 93|

Merci

+2

Veuillez fournir un [mcve]. – izlin

Répondre

0

Ceci est par nature, et si vous utilisez une base de données for which Orbeon Forms supports versioning, alors Orbeon Forms garde même la trace de la version de la définition de formulaire utilisée pour remplir un nouveau formulaire, et utilise à nouveau cette ancienne version quand vous revenez pour éditer ce morceau de données. Ceci est fait car il est possible qu'une nouvelle version d'une définition de formulaire soit incompatible avec une version précédente. En général, il est possible de migrer des données d'une ancienne version d'une définition de formulaire vers une nouvelle version, mais Orbeon Forms ne sait pas comment effectuer cette migration automatiquement. Si c'est quelque chose dont vous avez besoin, vous devrez le faire au niveau de la base de données.

+0

Merci pour votre réponse. Oui, nous devons migrer les données d'une ancienne version d'une définition de formulaire vers une nouvelle version: afin de gagner du temps (et de l'argent) dans notre activité quotidienne, nous voulons pouvoir réutiliser les données enregistrées précédemment (par exemple même commande, même client , ...), en dupliquant un fichier existant enregistré avec Orbeon. Dans le cas où la définition du formulaire a changé (correction de bogue, amélioration, ...), nous voulons réutiliser les données «anciennes» mais avec la nouvelle version du formulaire. Alors pouvez-vous être plus précis sur votre suggestion «vous aurez besoin de le faire au niveau de la base de données. »? Avez-vous pensé à la transformation XSL? – Lebki

+0

Je pense que votre meilleur pari est d'utiliser l '[API CRUD] (https://doc.orbeon.com/form-runner/api/persistence/crud.html) pour lire les données que vous souhaitez mettre à jour, avant de faire les modifications apportées au XML et les réécrire en utilisant cette même API CRUD. Lors de l'écriture, vous pouvez définir 'Orbeon-Form-Definition-Version' sur la nouvelle version de la mise à jour des données. Vous me direz si cela fonctionne pour vous. – avernet

+0

Merci Avernet pour votre réponse, je vais l'essayer et je vais vous dire si cela fonctionne. – Lebki