如何在Orbeon中迁移一种用新版本保存的祖先形式



如何保存新版本的祖先形式。我使用了CRUD API,并使用两种方法遵循了步骤:

  1. 通过强加最新版本号来检索表单的XML:

    • 创建一个具有较早版本的表单:用docId=fd4f49aad1ac3eb5a8ac29b0fa15a8cc1ec6ee6eversion=1
    • 进行测试
    • 运行此命令: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
    • 这会导致" 400不良请求"。如果我将旧版本1而不是2放置,则没有错误。
  2. 创建一个带有最新版本的空测试表格,然后将其填充用旧版本创建的表单

    • 运行此命令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 -v -k -d @mydata.xml -H "Content-Type: application/xml" -H "Orbeon-Form-Definition-Version: 2" -X PUT http://127.0.0.1:8080/orbeon/fr/service/persistence/crud/newProject/test/data/40239f94e49538db4e94e4f60ad7b4f312c23f3e/data.xml⇒结果500内部服务器错误。

发生错误时,这是一个堆叠式:

> |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=<p:output name="data" ref="instance"/>                                                                        |
|name   =data                                                                                                          |
|ref    =instance                                                                                                      |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/ops/pfc/xforms-xml-submission.xpl                                            |reading processor output      | 102|
|······················································································································|
|element=<p:output name="data" id="raw-instance"/>                                                                     |
|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|

以下解释了您提到的两种情况下遇到的错误:

  1. 检索文档时,您无法指定表单版本。该信息附加到文档,通过文档ID标识,并且在执行GET时,该信息由API返回给您。
  2. 给定文档ID的表单定义版本预计不会更改。这解释了您尝试更新文档并提供新的表单定义版本时,您会遇到第二种情况的错误。实际上,当您更新文档时,您不会期望提供任何表单定义版本,因为该信息无法更改,并且已经存储在数据库中。

并回答标题中的问题,如果您使用表单的版本1创建了文档,并且要在将其升级后存储该文档的版本以对应于表单的版本2,则需要使用其他文档ID存储它。

相关内容

最新更新