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

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

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

image.png

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

image.png

有三种设计方式。

  • 当用户单击表单中的提交按钮时,让 Orbeon 表单将数据发送到您的应用程序。
  • 您的应用程序为此调用 Orbeon Forms 提供的 REST API。
  • 您的应用程序直接访问 Orbeon Forms 保存的数据库中的数据。

下面逐一介绍。

方法1. Send data on submit

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

image.png

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


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


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


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


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


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

71.png

方法2. Call the REST API

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

image.png

如前所述,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 访问更实用。

image.png


目录
相关文章
|
2月前
|
存储 SQL 关系型数据库
ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
ClickHouse的核心架构包括执行过程和数据存储两部分。执行过程涉及Parser与Interpreter解析SQL,通过Column、DataType、Block、Functions和Storage模块处理数据。Column是内存中列的表示,Field处理单个值,DataType负责序列化和反序列化,Block是内存中表的子集,Block Streams处理数据流。Storage代表表,使用不同的引擎如StorageMergeTree。数据存储基于分片和副本,1个分片由多个副本组成,每个节点只能拥有1个分片。
100 0
ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
|
3月前
|
缓存 安全 API
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
公司对外开放的OpenAPI-Server服务,作为核心内部系统与外部系统之间的重要通讯枢纽,每天处理数百万次的API调用、亿级别的消息推送以及TB/PB级别的数据同步。经过多年流量的持续增长,该服务体系依然稳固可靠,展现出强大的负载能力。
73 9
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
|
26天前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
33 1
|
2月前
|
存储 Kubernetes 固态存储
IEEE HPCA 2024|LightPool:高性能、轻量级的存储池化架构
IEEE HPCA 2024|LightPool:高性能、轻量级的存储池化架构
|
2月前
|
存储 监控 容灾
TiDB存储层深入:分布式存储架构与数据一致性保障
【2月更文挑战第26天】本文将深入探讨TiDB的存储层,详细解析其分布式存储架构、数据复制机制以及数据一致性保障措施。通过了解存储层的核心组件和工作原理,我们可以更好地理解TiDB如何确保数据的可靠性、高可用性和可扩展性。本文将从存储层的架构、数据分布、容错机制等方面展开介绍,帮助读者全面掌握TiDB存储层的关键技术和优势。
|
2月前
|
消息中间件 存储 SQL
Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
【2月更文挑战第18天】Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
499 0
|
2月前
|
分布式计算 API 数据处理
Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
【2月更文挑战第15天】Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
70 1
|
2月前
|
SQL 缓存 分布式计算
日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路
日增数据超10PB!揭秘沃尔玛Lakehouse架构选型之路
51 2
|
2月前
|
存储 SQL 机器学习/深度学习
通用数据湖仓一体架构正当时
通用数据湖仓一体架构正当时
73 2