提问人:Lebki 提问时间:9/28/2017 最后编辑:Lebki 更新时间:11/20/2017 访问量:99
如何在ORBEON中保存新版本的旧表格?
How to keep an anciant form saved with new version in ORBEON?
问:
如何用新版本保存旧表格。 我已经在我们的应用程序中保存了一个表单,这是我在构建器和 Runner 中的表单的屏幕截图: 之后,我使用(form-builder)添加了一个新字段,但是当我打开保存的这个表单时,我没有找到添加的字段。 这是我的新版本Form的屏幕截图: 这是我得到的结果:
编辑
@Avernet,我使用了 CRUD API,我使用两种方法执行步骤:
通过施加最新的版本号来检索表单的 xml:
使用早期版本创建表单:使用 docId=fd4f49aad1ac3eb5a8ac29b0fa15a8cc1ec6ee6e 和版本 =1 进行测试
使用 curl (curl -v -k -H ) 运行此命令 “Orbeon-Form-Definition-Version: 2” http://127.0.0.1:8080/orbeon/fr/service/persistence/crud/newProject/test/data/fd4f49aad1ac3eb5a8ac29b0fa15a8cc1ec6ee6e/data.xml)
=>result 400 错误请求。
=> 如果我把旧版本 1 而不是 2 放在一起,就没有错误。
使用最新版本创建一个空的测试表单,并填写 使用旧版本创建的表单
使用 curl (curl -v -k -H ) 运行此命令 “Orbeon-Form-Definition-Version: 1”http://127.0.0.1:8080/orbeon/fr/service/persistence/crud/newProject/test/data/fd4f49aad1ac3eb5a8ac29b0fa15a8cc1ec6ee6e/data.xml >>myData) =>xml 文件保存到目录
使用新版本保存一个空的测试表单 (documentId = 40239f94e49538db4e94e4f60ad7b4f312c23f3e)
使用 curl ( curl -v -k -d @mydata.xml -H 运行此命令 “内容类型:application/xml” -h “Orbeon-Form-Definition-Version: 2“ -X 看跌 http://127.0.0.1:8080/orbeon/fr/service/persistence/crud/newProject/test/data/40239f94e49538db4e94e4f60ad7b4f312c23f3e/data.xml)
=>result 500 内部服务器错误
这是发生错误时的堆栈跟踪:
|发生错误 | |----------------------------------------------------------------------------------------------------------------------| |致命错误:文档中根元素后面的标记必须格式正确。| |----------------------------------------------------------------------------------------------------------------------| |应用程序调用堆栈 | |----------------------------------------------------------------------------------------------------------------------| |oxf:/ops/pfc/xforms-xml-submission.xpl |读取处理器输出 |111| |······················································································································· |元素= | |name =数据 | |ref =实例 | |----------------------------------------------------------------------------------------------------------------------| |oxf:/ops/pfc/xforms-xml-submission.xpl |读取处理器输出 |102| |······················································································································· |元素= | |name =数据 | |id =原始实例 | |----------------------------------------------------------------------------------------------------------------------| |:/Users/fkammoun/AppData/Local/Temp/upload__5a2c8fe_15fbb88e967__8000_00000000.tmp| |1| |----------------------------------------------------------------------------------------------------------------------| |异常: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 | | | |.实现。XMLDocumentScannerImpl$TrailingMiscDispatcher|调度 | | | |n.apache.xerces.impl.XMLDocumentFragmentScannerImpl|scanDocument | | | |orbeon.apache.xerces.parsers.XML11Configuration |解析 | | | |orbeon.apache.xerces.parsers.XML11Configuration |解析 | | | |orbeon.apache.xerces.parsers.XMLParser |解析 | | | |orbeon.apache.xerces.parsers.AbstractSAXParser |解析 | | | |processor.generator.URLGenerator$URLResourceHandler|readXML |URLGenerator.java |1042| |org.orbeon.oxf.processor.generator.URLGenerator$1 |readImpl |URLGenerator.java |545| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|阅读 |处理器输出Impl.java |257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |阅读 |处理器输出Impl.java |394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |处理器Impl.java |262| |ssor.pipeline.PipelineProcessor$InternalTopOutput$1|运行 |管道处理器.java |535| |org.orbeon.oxf.processor.pipeline.PipelineProcessor|executeParents |管道处理器.java |696| |org.orbeon.oxf.processor.pipeline.PipelineProcessor|访问$400 |管道处理器.java |60| |cessor.pipeline.PipelineProcessor$InternalTopOutput|readImpl |管道处理器.java |531| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|阅读 |处理器输出Impl.java |257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |阅读 |处理器输出Impl.java |394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |处理器Impl.java |262| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |处理器Impl.java |266| |org.orbeon.oxf.processor.IdentityProcessor$1 |readImpl |身份处理器 .java |33| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|阅读 |处理器输出Impl.java |257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |阅读 |处理器输出Impl.java |394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |处理器Impl.java |262| |orbeon.oxf.processor.pipeline.PipelineProcessor$1$1|运行 |管道处理器.java |93| |org.orbeon.oxf.processor.pipeline.PipelineProcessor|executeChildren |管道处理器.java |679| |org.orbeon.oxf.processor.pipeline.PipelineProcessor|访问$000 |管道处理器.java |60| |g.orbeon.oxf.processor.pipeline.PipelineProcessor$1|readImpl |管道处理器.java |91| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|阅读 |处理器输出Impl.java |257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |阅读 |处理器输出Impl.java |394| |processor.pipeline.choose.ConcreteChooseProcessor$1|readImpl |ConcreteChooseProcessor.java |126| |essor.impl.ProcessorOutputImpl$TopLevelOutputFilter|阅读 |处理器输出Impl.java |257| |org.orbeon.oxf.processor.impl.ProcessorOutputImpl |阅读 |处理器输出Impl.java |394| |org.orbeon.oxf.processor.ProcessorImpl |readInputAsSAX |处理器Impl.java |262| |orbeon.oxf.processor.pipeline.PipelineProcessor$1$1|运行 |管道处理器.java |93|
谢谢
答:
这是设计使然,如果您使用的是Orbeon Forms支持版本控制的数据库,那么Orbeon Forms甚至可以跟踪在填写新表单时使用的表单定义版本,并在您返回编辑该数据时再次使用该版本(可能是旧版本)。
这样做是因为表单定义的新版本可能与以前的版本不兼容。通常,可以将数据从旧版本的表单定义迁移到新版本,但Orbeon Forms不知道如何自动执行此迁移。如果这是您需要的,则需要在数据库级别执行此操作。
评论
Orbeon-Form-Definition-Version
评论