2017-09-28 31 views
0

anciant 양식을 새 버전으로 저장하는 방법. 나는 우리 application.this에서 양식을 저장 한 빌더와 러너의 내 양식은 아래의 스크린 샷입니다 : 내가 (폼 빌더)를 사용하여 새 필드를 추가 한 후 enter image description here enter image description here 은,하지만 난 열 때이 양식이 저장 , 나는 필드를 추가 찾지 못했습니다. 이 스크린 샷은 양식의 나의 새로운 버전의 형성이다 enter image description here 를이 내가했던 결과입니다 enter image description hereORBEON에서 anciant 양식을 새 버전으로 저장하는 방법은 무엇입니까?

편집 Avernet @, 나는 CRUD API를 사용하고 난 두 가지를 사용하여 단계를 따라

방법 :

:

  1. 가장 최근의 버전 번호를 부과함으로써 형태의 XML을 검색

    => 2 대신 이전 버전 1을 입력하면 오류가 없습니다.

  2. 이전 버전

이 오류가 발생 된 스택 트레이스입니다 :

|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|

덕분에

+2

[mcve]를 제공해주십시오. – izlin

답변

0

이것은 의도적으로 설계되었으므로 데이터베이스 for which Orbeon Forms supports versioning을 사용하는 경우 Orbeon Forms는 새 양식을 채울 때 사용되는 양식 정의의 버전을 추적하여 다시 올 때 해당 버전 (가능하면 이전 버전)을 다시 사용합니다. 해당 데이터를 편집 할 수 있습니다.

이는 양식 정의의 새 버전이 이전 버전과 호환되지 않을 수 있기 때문에 수행됩니다. 일반적으로 이전 버전의 양식 정의에서 새 버전으로 데이터를 마이그레이션 할 수는 있지만 Orbeon Forms는이 마이그레이션을 자동으로 수행하는 방법을 모릅니다. 필요한 경우 데이터베이스 수준에서 수행해야합니다.

+0

답변 해 주셔서 감사합니다. 예, 양식 정의의 이전 버전에서 새 버전으로 데이터를 마이그레이션해야합니다. 일상 활동에서 시간과 비용을 절약하기 위해 이전 저장된 데이터를 다시 사용할 수 있기를 원합니다 (예 : 동일한 주문, 동일한 클라이언트 , ...), Orbeon과 함께 저장된 기존 파일을 복제합니다. 폼 정의가 변경된 경우 (버그 수정, 개선 등), 우리는«old»데이터를 새로운 폼 버전으로 재사용하고 싶습니다. 그래서 당신은 당신의 제안에 대해 더 정확하게 할 수 있습니까«당신은 데이터베이스 레벨에서 그것을 할 필요가 있습니다. »? XSL 변환에 대해 생각 했습니까? – Lebki

+0

최선의 방법은 [CRUD API] (https://doc.orbeon.com/form-runner/api/persistence/crud.html)를 사용하여 업데이트하려는 데이터를 읽는 것입니다. 동일한 변경 CRUD API를 사용하여 XML에 대한 변경 사항을 작성하십시오. 작성시, Orbeon-Form-Definition-Version을 데이터를 업데이트 할 새 버전으로 설정할 수 있습니다. 이게 효과가 있는지 알려주지. – avernet

+0

답장을 보내 주셔서 감사합니다. 시도해 보겠습니다. 작동하는지 알려 드리겠습니다. – Lebki