写点什么

orbeon form 的架构简介 - 如何访问用户通过 form 存储的数据

作者:Jerry Wang
  • 2022 年 9 月 30 日
    四川
  • 本文字数:1293 字

    阅读完需:约 4 分钟

orbeon form 的架构简介 - 如何访问用户通过 form 存储的数据

从用户的视角出发,Orbeon Forms 架构很简单。 它由 Form Builder(表单编辑器)和 Form Runner(表单运行时)组成,与数据库(持久层)对话。 此外,与用户管理系统的集成也是一种常见的场景。



您已经使用 Form Builder 创建了表单,发布了这些表单,并设置了 Orbeon Forms,以便它将表单捕获的数据存储在您的关系数据库中。 现在,您的另一个应用程序如何访问这些数据?



有三种设计方式。


  • 当用户单击表单中的提交按钮时,让 Orbeon 表单将数据发送到您的应用程序。

  • 您的应用程序为此调用 Orbeon Forms 提供的 REST API。

  • 您的应用程序直接访问 Orbeon Forms 保存的数据库中的数据。


下面逐一介绍。

方法 1. Send data on submit

在大多数情况下,这是最好的选择,也是我们推荐的选择。 本质上,您设置 Orbeon Forms,以便当用户填写表单并提交时,Orbeon Forms 会将用户输入的数据发送到您的应用程序。 您的应用程序可以使用这些数据做任何它想做的事情,如果需要,在对 Orbeon Forms 的响应中,您的应用程序可以告诉 Orbeon Forms 用户接下来应该转到哪个页面。



当用户单击在 Form Builder 中创建的表单上的提交按钮(或就此而言表单底部的任何其他按钮)时,将运行一个流程。 本质上,一个流程定义了一系列要执行的操作,其中之一可以是将数据发送到您的应用程序。


目前,流程定义在您的 properties-local.xml 中。


在您的流程中,您将使用 send() 操作来指示 Orbeon Forms 将用户输入的数据发布到您选择的 URL。


你的应用程序可以用它接收的数据做它想做的事情:在数据库中执行一些操作,调用服务等。


如果您将 replace = "all" 参数传递给 send(),那么您的应用程序在 HTTP 响应中发送回 Orbeon Forms 的内容将被 Orbeon Forms 发送/代理回浏览器。


这允许您发送自定义确认页面,或重定向到用户接下来应该转到的另一个页面或表单。


方法 2. Call the REST API

您的第二个选择是让您的应用程序调用 Orbeon Forms 持久性 API 来检索 Orbeon Forms 保存在数据库中的数据。 这是一个简单的 REST API,您需要首先调用搜索 API 以列出使用特定表单提交或保存的数据,然后调用 CRUD API 以检索您感兴趣的任何数据。



如前所述,Orbeon Forms 提供的 API 非常简单,但在调用此类 API 时需要记住一些复杂情况,这通常会使上述选项 1 更可取:


  • 您正在决定何时调用 API。您很可能希望定期(例如每小时或每天)执行此操作,以处理提交给系统的任何新数据。这意味着您需要有一个类似 cron 的基础设施来定期执行该任务,并且您的应用程序不会实时了解新数据。

  • 假设您的应用程序只对处理新数据感兴趣,它需要以某种方式跟踪它已经处理的数据。

  • 出于安全原因,开箱即用的 REST API 访问被阻止。您可以在 Orbeon Forms 级别完全开放对 API 的访问,并通过其他方式(例如过滤器)保护它,或者通过授权服务在 API 的调用者和 Orbeon Forms 之间设置一些身份验证。

方法 3. Accessing the database

根据上述选项 2,访问数据库中的数据而不是通过 API 会增加升级 Orbeon Forms 时需要更改代码的可能性,因为 Orbeon 表的格式比 API 更可能更改。 尽管有此警告,但我们发现客户访问数据库中的数据通常比通过 API 访问更实用。



发布于: 刚刚阅读数: 5
用户头像

Jerry Wang

关注

🏆InfoQ写作平台-签约作者🏆 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。工作中使用 ABAP, Java, JavaScript 和 TypeScript 进行开发。

评论

发布
暂无评论
orbeon form 的架构简介 - 如何访问用户通过 form 存储的数据_Java_Jerry Wang_InfoQ写作社区