orbeon表单形式形式的可移植性问题



i基于文件系统存储在存储库中。存储库中的每个表单定义都有file-id。在Orbeon表单中,<app name, form name>对确定表单定义。因此,我将file-id用作form name。我编写了一个自定义的持久性层,以根据持久性API架起Orbeon形式和存储库。

我想将一个存储库复制/导出/导入表单定义将其复制到另一个存储库,以共享/重用/迁移表单定义。当将表单定义从存储库中复制到另一个库时,其file-id会更改,但是,表单定义中的form name仍然是旧的。就像将普通文件复制到另一个目录或重命名,但没有更改文件内容。

在这种情况下,我将在持久性URL(API)中使用<app name, new file-id>在其内容中使用<app name, old file-id>访问表单定义。我的第一个问题是,哪个识别将优先考虑,形式为构建器或表格跑步者?

如果持久性URL(API)中的<app name, new file-id>都优先为构建器或表格跑步者,则可移植性将是完美的。我在保存或发布时以形式构建器进行了测试,Form Builder将在其内容(XML)中使用<app name, old file-id>。我的第二个问题是,我们可以更改或自定义优先级吗?

供参考,此处记录了API,此处的属性和术语。

要确定使用哪个持久性层,形成构建器并形成跑步者仅处理3个参数(我们只是使术语更加一致):

  • 应用程序名称
  • 表格名称
  • 资源类型(无论是表单定义还是表单数据)

对于每个应用程序/名称/资源类型组合,配置属性(可以使用通配符)确定要使用的持久性层。

因此,唯一发生某种优先级的地方是持久层的配置属性级别。没有别的相关。例如,默认属性说:

<property
  as="xs:string"
  name="oxf.fr.persistence.provider.*.*.*"
  value="exist"/>

这意味着,默认情况下,一切都存在。

但也有:

<property as="xs:string"
  name="oxf.fr.persistence.provider.orbeon.builder.form"
  value="resource"/>
<property
  as="xs:string"
  name="oxf.fr.persistence.provider.orbeon.contact.form"
  value="exist"/>

这分别意味着形式构建器本身的表单定义本身存储在Orbeon Forms Resources中(通常在JAR文件中)。但是,触点表格的形式定义存储在存在中。依此类推。

当形式构建器以"保存"形式存储定义时,它将它们作为 form data 存储在 orbeon/builder app/form名称下。当它发布表单时,它将它们作为表单定义存储在其实际应用/表单名称下。

我希望这有助于回答您的问题。

@avernet,在我的解决方案中,我在XML内不使用form name。我使用以下URL调用形式构建器:
/orbeon/fr/orbeon/builder/edit/${fileId}
出版时,Form Builder将致电:
/orbeon/fr/service/my-perisit/crud/${app-name-in-xml}/${form-name-in-xml}/form/form.xhtml?document=${fileId}
我自定义的持久性层my-persist忽略了${form-name-in-xml}参数。

我使用 /orbeon/fr/${app name}/${fileId}/new调用表单跑步者。

相关内容

  • 没有找到相关文章

最新更新