文档

开发部署扩展程序:自建服务方式

更新时间:

在DataWorks扩展程序中,您可以自定义逻辑以监管用户的操作行为,例如拦截和阻断不当行为,通过扩展程序对特定事件进行消息通知与流程管控。本文为您介绍如何通过自建服务开发部署扩展程序。

权限说明

  • 开放平台管理员租户管理员拥有开发者后台的读写权限,其他租户级角色、空间级角色仅拥有开发者后台的只读权限。详情请参见全局级模块权限控制

  • 仅支持阿里云主账号或者拥有AliyunDataWorksFullAccess权限的RAM用户进行界面相关配置,权限详情请参见产品及控制台权限控制详情:RAM Policy

使用限制

  • 仅DataWorks企业版及以上版本支持扩展程序功能。

    说明

    如果使用的企业版DataWorks版本到期后,所有扩展程序均会失效,无法再触发事件检查。已触发且未到终态的检查会自动通过。

  • 多个扩展程序可关联同一个扩展点事件,即同一个事件支持触发多个扩展程序。

  • 扩展点事件分为租户级和空间级,注册扩展程序时,仅支持选择某一类级别的扩展点事件。DataWorks支持的扩展点事件所属级别,请参见支持的扩展点事件列表

  • 包含内部节点的组合类节点(例如机器学习(PAI)节点do-while节点for-each节点)触发检查时,需内部节点均检查通过才可继续进行后续操作。

处理流程

通过自建服务开发和部署扩展程序,并通过OpenEvent和OpenAPI进行扩展程序与DataWorks的通信,实现自定义流程控制的操作如下:

  1. 通过OpenEvent实现扩展消息订阅。

    OpenEvent通过EventBridge提供部分事件的消息订阅,订阅后,您可获取对应事件的消息详情(例如,提交节点为文件提交类事件),包含节点ID、操作人UID、项目空间ID等信息。详情请参见步骤一:开启消息订阅

  2. 通过扩展程序实现扩展点事件处理。

    将自己的服务程序注册为扩展程序,接收到订阅的事件消息后通过扩展程序处理事件,详情请参见步骤二:注册扩展程序

  3. 通过OpenAPI实现扩展点事件处理结果回调。

    通过OpenAPI返回处理结果给DataWorks,详情请参见步骤三:开发扩展程序

    扩展点事件触发等待扩展程序处理过程中,当前流程会变为“检查中”状态,OpenAPI会将扩展程序的处理结果返回给DataWorks,DataWorks根据反馈结果状态继续流程。处理结果状态如下:

    • OK:扩展程序对本次扩展点事件检查通过。

    • FAIL:扩展程序对本次扩展点事件检查不通过。您需要查看并及时处理报错,以免影响后续程序的正常执行。

    • WARN:扩展程序对本次扩展点事件检查通过,但存在警告。

  4. 将扩展程序部署至本地应用。详情请参见步骤四:部署扩展程序

步骤一:开启消息订阅

扩展程序通常需联合OpenEvent一起使用,您需先通过OpenEvent订阅扩展点事件,再使用扩展程序处理事件。因此,开发并使用扩展程序前,需先开启消息订阅,获取消息订阅的EventBridge信息、订阅事件的消息体格式,用于后续扩展程序的代码开发。

步骤二:注册扩展程序

开发使用扩展程序前,您需先在DataWorks注册一个扩展程序,获取对应的Extension Code,用于后续的扩展程序代码开发,操作步骤如下。

  1. 进入开放平台

  2. 在左侧导航栏单击扩展程序,进入扩展程序页面。

  3. 注册扩展程序。

    单击扩展程序列表 > 注册扩展程序,选择通过自建服务部署并配置扩展程序信息。

    注册扩展程序

    您可根据需要配置所需参数,参数说明如下。

    参数

    如何配置

    扩展程序名称

    自定义扩展程序的名称,用于标识扩展程序。

    处理的扩展点

    选择该扩展程序用于处理哪几类扩展事件触发的消息。当前支持的扩展点,详情请参见支持的扩展点事件列表,您可根据实际情况选择。

    说明
    • 选择完成后,配置界面会自动根据选择结果匹配所属事件适用模块,无需手动配置。

    • 扩展点事件分为租户级和空间级,注册扩展程序时,仅支持选择某一类级别的扩展点事件。DataWorks支持的扩展点事件所属级别,请参见支持的扩展点事件列表

    • 通过函数计算部署的扩展程序目前仅支持数据下载前置事件

    负责人

    扩展程序的负责人,方便扩展程序使用者遇到问题时能及时联系到负责人。

    测试用工作空间

    选择测试扩展程序的工作空间。扩展程序无需进行上线操作,即可在测试工作空间中生效。

    扩展程序上线前,开发人员可在测试空间进行完整链路的测试验证,通过触发事件,测试DataWorks通过EventBridge发送消息、扩展程序接收消息并进行消息审核与回调。

    说明

    处理的扩展点选择租户级扩展点事件,无需配置测试用工作空间

    扩展程序详情地址

    输入介绍扩展程序详情的地址,帮助扩展程序使用者更好的理解和使用此扩展程序。

    您可在开发部署扩展程序时,开发一个扩展程序的详情展示页面,将页面地址配置在此处,以便使用者在触发扩展程序校验时,可通过链接查看完整的校验过程。例如,此次扩展程序检查链路和阻塞的原因。

    扩展程序文档地址

    输入扩展程序的帮助文档地址,供扩展程序的使用者阅读。

    您可在开发部署扩展程序时,开发一个扩展程序的帮助文档页面,将页面地址配置在此处,以便使用者学习了解扩展程序的校验逻辑与属性。

    扩展程序参数配置

    DataWorks支持在扩展程序开发过程中使用参数来提高扩展程序开发和应用效率,在扩展程序代码开发时,将需要应用的参数添加至此处即可。

    您可直接使用DataWorks提供的典型应用场景的内置参数,也可自定义参数。

    支持添加多个参数,一行一个参数,参数格式为key=value。更多参数的使用,请参见高级应用:扩展程序参数配置

    扩展程序选项配置

    输入提供给扩展程序使用者使用的功能配置项,可实现该扩展程序在不同工作空间进行个性化管控。扩展程序开发者需在此界面通过JSON字符串定义选项。

    例如,可通过选项配置让扩展程序使用者自行管控SQL长度。JSON格式可参考高级应用:扩展程序选项配置

  4. 单击确定,完成扩展程序注册。

    注册完成后,在扩展程序列表,您可执行以下操作:

    • 查看扩展程序:查看扩展程序的扩展点、适用模块、Extension Code、状态等信息。

    • 操作扩展程序:对扩展程序执行提交上线编辑等操作。

步骤三:开发扩展程序

进行扩展程序相关代码开发有以下几个注意事项。

  1. 订阅并解析扩展点事件消息。

    • OpenEvent基于EventBridge实现DataWorks事件消息的分发,您可以在EventBridge订阅事件消息,订阅的操作详情请参见什么是事件总线EventBridge

    • 解析扩展点事件消息时,发送给EventBridge的消息格式,详情请参见附录:消息格式

  2. 获取扩展点事件详情并处理。

    • 您可通过调用API,指定API中的messageId参数来获取详细的事件详情。

      说明
    • 在扩展程序代码开发过程中,您可以使用参数来提高开发和应用效率,例如,您可以使用内置扩展程序参数extension.project.disabled,使扩展程序对某个工作空间不生效。更多扩展程序参数的使用配置请参见高级应用:扩展程序参数配置

  3. 返回处理结果至DataWorks。

    您可通过API将扩展程序对扩展点事件的处理结果返回给DataWorks。

    说明

    DataStudio中的扩展点事件可使用UpdateIDEEventResult这个API,运维中心的扩展点事件可使用UpdateWorkbenchEventResult这个API。

步骤四:部署扩展程序

扩展程序代码开发调试完成后,您可在本地或阿里云ECS上将其部署为一个应用服务,用于后续使用。

扩展程序示例

了解上述扩展程序开发注意事项后,您可根据业务需求开发自己的扩展程序代码,以下也提供了一些典型场景下,扩展程序注册、开发、应用的示例。

相关文档

  • 本页导读 (1)
文档反馈