已发布Orbeon表单:如何检索保存的草稿并重新展示?
嘿,我来帮你搞定Orbeon草稿检索的问题!你已经知道「保存」按钮会把表单存成草稿到Orbeon数据库,现在要做的就是让用户能找到这些草稿并重新打开,下面分几种实用的方案给你说明:
一、直接用Orbeon内置的草稿管理功能
Orbeon本身自带了草稿列表页面,不用额外开发就能快速实现需求:
- 如果是社区版:让用户访问
/orbeon/fr/首页,登录后(建议启用用户认证,不然草稿只存在会话里,过期就没了),就能看到「我的草稿」板块,里面会列出当前用户所有未提交的草稿,点击就能直接打开带保存数据的表单。 - 如果是企业版:有更完善的草稿管理界面,支持筛选、搜索、批量操作等功能,体验更好。
要确保这个功能正常工作,还需要检查两个配置:
- 表单发布时的
应用名和表单名要准确,Orbeon会通过这两个标识关联草稿和对应的表单。 - 在
properties-local.xml里配置好权限,确保用户能访问自己的草稿,比如:
<property as="xs:string" name="oxf.fr.permission.*.*.read" value="user"/> <property as="xs:string" name="oxf.fr.permission.*.*.update" value="user"/>
这里的user表示只有创建草稿的用户自己能查看和修改,符合大多数场景的需求。
二、自定义集成到你的Web应用(如果不想用Orbeon默认页面)
如果你想在自己的Web应用里做草稿入口,不用跳转到Orbeon的首页,可以通过Orbeon的REST API实现:
- 获取当前用户的草稿列表:调用端点
/orbeon/fr/service/persistence/crud/{app}/{form}/draft/data.xml,请求方式为GET,带上用户的认证信息(比如Cookie或HTTP Basic Auth,取决于你的Orbeon认证配置)。这个API会返回XML格式的结果,包含该用户所有属于指定app和form的草稿,每个草稿有唯一的document-id、创建时间等信息。 - 打开指定草稿:拿到
document-id后,构造表单访问URL:/orbeon/fr/{app}/{form}/edit/{document-id},用户访问这个URL就能直接打开带保存数据的表单。- 你可以把这个
document-id和自己应用的业务ID绑定存储,方便后续关联查询。
- 你可以把这个
三、和你自定义的提交流程配合
你已经重写了「提交」按钮的动作,把数据发送到自己的Web应用,这里要注意:当用户从草稿打开表单并提交后,Orbeon会自动把该草稿标记为已提交,不会再出现在草稿列表里。如果你的应用需要记录关联关系,可以在提交时把Orbeon返回的document-id(也就是你提到的docu...内容)和你的业务ID绑定起来,后续也能通过业务ID反向找到对应的Orbeon表单数据。
四、常见问题排查
- 看不到草稿?先检查用户是否登录:未登录用户的草稿存在会话中,会话过期就会丢失,所以建议启用用户认证。
- 数据库里找不到草稿?确认Orbeon配置的数据库(生产环境建议用MySQL/PostgreSQL,默认是H2)正常运行,可查询
orbeon_form_data表中draft字段为Y的记录,看是否有对应的数据。 - 权限问题?如果用户看不到自己的草稿,检查
properties-local.xml里的权限配置,避免设置过严限制了用户访问。
内容的提问来源于stack exchange,提问作者mark42inbound
相关产品推荐
相关产品推荐

