更新资源

“更新资源”用于重新定义特定资源的引入配置。PUBLIC.UPDATE_RESOURCE 过程是从 UI 或工作表来更新资源的入口点。

要调用此过程,用户需要已获得 ADMIN 应用程序角色。

资源更新进程由几个阶段组成。其中一些可定制,但包含合理的默认值。各阶段如下:

  1. 初步验证

  2. 自定义验证

  3. 资源更新前的自定义逻辑

  4. 引入配置的更新

  5. 为已删除的引入配置完成引入进程

  6. 为新的导入配置调度导入进程

  7. 更新资源及管理引入进程后的自定义逻辑

初步验证

初步验证在“资源更新”进程的最开始执行。它可以检查:

  • 给定的输入数据是否代表有效的资源引入配置对象

  • 给定 idresourceId 的资源是否存在

自定义验证

自定义验证仅在初步验证之后执行。它是进程的一部分,旨在根据特定连接器的逻辑进行自定义。

默认情况下,它会调用 PUBLIC.UPDATE_RESOURCE_VALIDATE(resource_ingestion_definition_id VARCHAR, ingestion_configurations VARIANT),返回 'response_code': 'OK'。可以通过 UpdateResourceValidator 脚本或使用 UpdateResourceHandlerBuilder 提供 接口的自定义实现来将其覆盖。

如果自定义验证返回错误,则不执行后续步骤,并且 UPDATE_RESOURCE 过程返回给定的错误响应。

资源更新前的自定义逻辑

在更新和重新调度资源之前,可以定义和执行自定义逻辑。

默认情况下,它会调用 PUBLIC.PRE_UPDATE_RESOURCE(resource_ingestion_definition_id VARCHAR, ingestion_configurations VARIANT),返回 'response_code': 'OK'。可以通过 SQL 脚本或使用 UpdateResourceHandlerBuilder 提供 PreUpdateResourceCallback 接口的自定义实现来将其覆盖。

如果自定义逻辑返回错误,则不执行后续步骤,并且 UPDATE_RESOURCE 过程返回给定的错误响应。

更新资源引入配置

在此步骤中,新的引入配置保存到针对给定``resource_ingestion_definition_id`` 的资源的 STATE.RESOURCE_INGESTION_DEFINITION 表。

为已删除的引入配置完成引入进程

在此步骤中,在启用资源时(enabled 参数等 于``true``),所有正在运行的引入进程(状态为 SCHEDULEDIN_PROGRESS),其引入配置的 ID 都不在更新的引入配置集中,这意味着它们的状态会切换到 FINISHED

为新的导入配置调度导入进程

在此步骤中,在启用资源时(enabled 参数等于 true),会为更新的引入配置创建新的引入进程,而这些新的引入配置在给定资源的先前引入配置状态下不存在。

资源更新后的自定义逻辑

自定义逻辑可在资源引入配置更新后实施和执行。

默认情况下,它会调用 PUBLIC.POST_UPDATE_RESOURCE(resource_ingestion_definition_id VARCHAR, ingestion_configurations VARIANT),返回 'response_code': 'OK'。可以通过 SQL 脚本或使用 UpdateResourceHandlerBuilder 提供 PostUpdateResourceCallback 接口的自定义实现来将其覆盖。

如果自定义逻辑返回错误,UPDATE_RESOURCE 过程将返回给定的错误响应,但不会回滚资源引入定义和引入进程的更新,因此如果需要,它应该由自定义实施处理。

响应

成功响应

成功后,过程会返回类似如下的结果:

{
  "response_code": "OK",
  "message": "Resource successfully updated."
}
Copy

错误响应

如果出错,将返回类似如下的响应:

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>"
}
Copy

可能的错误代码包括:

  • INVALID_INPUT – 提供过程的实参无效,无法更新资源引入配置,或给定的资源不存在。

  • UPDATE_RESOURCE_ERROR – 在使用新的引入配置更新资源引入定义或管理引入进程时,发生了一些意想不到的情况。所有更改均已回滚。

语言: 中文