深入创建集成数据结构
创建微应用时,您可能会发现需要访问目标记录系统中与父表相隔两个以上级别的表。由于目前在 HTTP 集成中存在的局限性,解决这个问题是可能的。
本文提供了有关在出现此用例时如何访问目标记录系统中的表的信息。此解决方案并非直截了当,但是如果按照下面的说明进行操作,则可以创建更深层次的数据结构。
用例
您想要构建一个允许用户批准 ServiceNow 上的请求的微应用。要使用此微应用,用户必须能够:
- 接收并打开通知
- 收到一个包含要批准的项目清单的页面
- 查看每件商品的详细信息
- 查看谁发送了请求
- 批准这些请求
为每个步骤构建操作或页面所需的详细信息存储在通过端点检索的表中。但是,包含审批人数据的表(包含包含项目列表的数据的表)与其他数据位置之外的两个以上的表。
解决方案前
要创建此解决方法,您需要结合使用 配置集成中所述的子 API 调用链和表合并。
必备条件:
- 您已经定义了端到端使用案例,了解必须在微应用中运行哪些内容以及最终用户查看和操作的信息。
- 您已创建终端节点以从目标记录系统返回所需的表数据。
注意:
初始设置后,无法编辑已配置的表和主键。
- 您已经熟悉了 HTTP 集成中的 添加其他 API 调用 和 合并表 功能。
查看和构建数据结构
在构建微应用时,微应用平台支持的传统模型适用于仅相隔一步之遥的表之间(N+1 模型)。
您可以通过在 HTTP 集成期间检查集成配置设置来看到这一点。例如,你可以看到 票 证距离 标签只有一步之遥,但两者都没有直接连接到 comments_w_users。
有些关系是在端点配置期间自动创建的,您可以在集成的表参考中看到它们。但是,对于此特定用例,必须创建一些手动定义来创建表之间的关系。
数据结构合并策略
在这种情况下设计用于构建微应用的数据结构时,请考虑以下要点:
- 根据构建微应用所必须实现的数据结构,选择父 API 调用。考虑如何对数据集和仅返回更新后的数据结构的 API 使用增量同步。此 API 必须设置为父 API。
- 在可能的情况下,只配置一对多而不是多对一。多对一配置会导致重复调用 API,并会影响数据同步效率。
- 考虑所需通知的来源及其配置方式,以便在配置表合并且可以复制数据的情况下,您的用户只会收到一条通知。
- 父 API 必须始终是最易变的对象。
对于特定情况,请使用以下 合并表 方法:
- 一对一 -使用 合并作为详细信息。这导致数据库中只存储一条记录,其中包含来自父 API 和子 API 的所有属性。当属性同时存在于父 API 和子 API 调用中时,将使用子值。
- 一对多 -使用 合并作为子列表。所有父属性都与每个子记录一起存储。
- 多对一 -通常多对一不是子 API 调用的场景。您必须考虑最合适的方法,无论是使用表合并还是手动设置实体关系(不应用合并)。如果不应用合并,则只存储第一个子项,由于主键检测重复,其他子项将被忽略。
定义手动关系
要手动定义关系,两个表中必须有一个公用列来建立关系。您可以在数据集成的表和关系部分中进行检查。如果两个分隔的表具有共同的列,则可以在它们之间手动创建关系。如果没有公用列,则必须在以下过程中显示的示例中创建关系。
高级使用案例
如果无法使用公共列关系创建 n+1 以外的数据结构,则可以结合使用 API 子调用和表合并来创建扁平化的数据结构。一般的 “高级用例” 遵循以下基本原则:
- 设置您的集成。
- 编辑你的表格结构。
- 创建从主表到要合并到的表的 API 调用链。
- 通过自上而下的方法中的表合并来合并表(例如,父对子项)。
- 创建大表后,返回父表并为所有表实体设置 ignore。
例如,使用 request-list>item list>item details>approver
构建微应用,微应用必须能够向审批者显示请求和详细信息,但由于当前只有 n+1 个关系的限制,微应用程序无法显示。你可以使用表合并功能来解决这个问题。
在构建数据终端节点时,将表结构从父数据端点 (request-list
) 传播到项目列表中的子端点 (approver
)。
然后,您可以设置使用表合并策略将从父数据端点的所有内容合并到此子 API。结果是父表中的所有内容都显示在子 API 的数据结构中 (item-list
)。
以这种方式进行配置会导致一个大型数据库表中包含三个级别的数据。根据开始构建微应用时定义的用例,此新表可用于构建页面。此方法可用于所需的多个级别。
API 子调用和表合并示例
以下示例说明了创建表结构以访问 n+1 关系以外的数据的一般工作流程。每个单独使用都必须基于要为微应用构建的个人用例进行构建。确保您熟悉目标集成记录系统,并且在使用此方法时对结构的结果有很好的了解。
创建 API 调用链
- 导航到集成的 “ 数据加载 ” 页面:
- 根据需要将尽可能多的子 API 调用从根终端节点添加到目标子端点:
完成后,您可以在主数据加载页面上查看数据结构。
将父级与子级合并 API 调用
现在按顺序将根/父表合并到子端点,直到到达目标表:
- 从省略号菜单中选择 编辑 以进行集成。
- 从省略号菜单中为根集成的子端点选择 edit 。
- 导航到 “ 编辑数据端点 ” 页的底部,然后选择 编辑 以选择配置表合并:合并
根据需要对序列中的每个子表重复此过程多次,直到到达将使您能够构建微应用。
忽略重复的 API 调用
当你完成合并 ‘链’ 后,返回到根端点。请按照以下步骤进行操作:
- 选择 编辑。
- 将所有表设置为 忽 略状态:
这会阻止表两次加载到缓存中,从而提高性能。你现在可以使用你的链接/合并表来构建你的微应用。
重要注意事项
使用此方法构建数据时,请务必考虑以下事项:
- 所有父 API 和子 API 调用都有自己的数据结构。
- 这些结构是不同的数据集。
- 如果合并了数据结构(从父项到子项),则所有属性都将显示在子数据结构中。
- 如果保留了整个链,则数据将 “存储两次”-确保父调用中的数据结构被完全删除,因为每个属性都出现在子数据结构中。
- 不要将父 API 调用保留为原样的数据结构-尽可能删除它。