Todos los productos
Search
Centro de documentos

DataWorks:Desarrollo de una extensión con un servicio autogestionado

Última actualización: Sep 04, 2026

En DataWorks, puede utilizar extensiones para definir lógica personalizada que gobierne las operaciones de los usuarios, como interceptar y bloquear acciones inadecuadas, recibir notificaciones sobre eventos específicos e implementar controles de proceso. Este tema describe cómo desarrollar y desplegar una extensión mediante un servicio autogestionado.

Contexto

Requisitos previos

Debe contar con enabled event message subscription. El despliegue de una extensión mediante un servicio autogestionado depende de la capacidad de distribución de mensajes de EventBridge. Asegúrese de haber especificado un bus de eventos en EventBridge para recibir mensajes de eventos abiertos de DataWorks, y de que los mensajes de este bus se enruten a su servicio desplegado en sus instalaciones o en la nube.

Limitaciones

  • Solo los usuarios de DataWorks Enterprise Edition pueden usar el módulo Extensions.

  • El módulo Extensions está disponible en las siguientes regiones: China (Beijing), China (Hangzhou), China (Shanghai), China (Zhangjiakou), China (Shenzhen), China (Chengdu), US (Silicon Valley), US (Virginia), Germany (Frankfurt), Japan (Tokyo), China (Hong Kong), and Singapore.

Notas de uso

  • Solo el Open Platform administrator, el tenant administrator, las cuentas de Alibaba Cloud y los usuarios de RAM a los que se ha adjuntado la política AliyunDataWorksFullAccess tienen permisos de lectura y escritura en el backend para desarrolladores. Para obtener más información sobre la gestión de permisos, consulte Permission control for global services y RAM policies for service and console permissions.

  • Limitaciones de versión: Si su suscripción a DataWorks Enterprise Edition caduca, todas las extensiones quedan inactivas y ya no se activan para verificaciones de eventos. Cualquier verificación que se haya iniciado pero aún no haya alcanzado un estado final se aprueba automáticamente.

  • Limitaciones de nodos: Cuando un nodo compuesto que contiene nodos internos, como un Platform for AI node, un do-while node o un for-each node, activa una verificación, todos los nodos internos deben aprobarla antes de que puedan continuar las operaciones posteriores.

  • Activación: Puede asociar varias extensiones al mismo evento de punto de extensión. Esto significa que un solo evento puede activar múltiples extensiones.

Funcionamiento

El siguiente diagrama muestra el flujo de trabajo básico para desplegar una extensión con un servicio autogestionado que consume mensajes mediante EventBridge.

image
Nota

Cuando se activa un evento de punto de extensión, el proceso asociado entra en el estado Checking mientras espera que la extensión devuelva un resultado mediante una devolución de llamada de API. El proceso permanece en este estado hasta que la extensión envía el resultado a DataWorks. Según el resultado devuelto, DataWorks determina si debe bloquear el proceso.

Desarrollo del servicio

Antes de desplegar una extensión en DataWorks, debe desarrollarla y desplegarla en sus instalaciones o en la nube. Puede inicializar su proyecto con el código de Appendix: DataWorks Open Platform sample code library y obtener más ejemplos del código de ejemplo de Open Platform en GitHub. Al desarrollar la extensión, debe desplegarla según el tipo de servicio que recibe los mensajes enrutados desde el bus de eventos.

Paso 1: Configurar dependencias

Al desarrollar una extensión, agregue las siguientes dependencias al archivo pom.xml. EventBridge admite diversos tipos de endpoints para procesar y consumir eventos. Además de las siguientes dependencias, es posible que deba agregar otras según el event target que configure en EventBridge.

Biblioteca de dependencias de DataWorks

<dependency>
 <groupId>com.aliyun</groupId>
 <artifactId>dataworks_public20200518</artifactId>
 <version>5.6.0</version>
</dependency>

Plugin de empaquetado

<build>
        <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-shade-plugin</artifactId>
                  <version>3.2.1</version>
                  <executions>
                    <execution>
                      <phase>package</phase>
                      <goals>
                        <goal>shade</goal>
                      </goals>
                      <configuration>
                        <filters>
                          <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                              <exclude>META-INF/*.SF</exclude>
                              <exclude>META-INF/*.DSA</exclude>
                              <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                          </filter>
                        </filters>
                      </configuration>
                    </execution>
                  </executions>
              </plugin>
        </plugins>
</build>

Paso 2: Desarrollar el código de la extensión

El bus de eventos en EventBridge enruta los mensajes a su servicio desplegado. Este servicio recibe los mensajes de DataWorks desde el bus de eventos, los procesa y luego llama a una API específica de DataWorks para devolver el resultado del procesamiento.

  1. Desarrolle el código del servicio.

    Analizar sintácticamente el contenido del mensaje

    Para obtener información sobre el formato de los mensajes de eventos que envía DataWorks, consulte Appendix: Format of messages sent from DataWorks to EventBridge. En un mensaje, el campo data contiene el contenido específico del mensaje. Durante el desarrollo, puede identificar el tipo de mensaje mediante el campo data.eventCode y recuperar los detalles del mensaje con el campo id.

    Nota

    OpenEvent utiliza EventBridge para distribuir mensajes de eventos de DataWorks. Antes de desarrollar una extensión, debe suscribirse a los mensajes de DataWorks en EventBridge. Para obtener más información, consulte Enable event message subscription.

    Escribir la lógica de procesamiento

    Debe procesar los mensajes del bus de eventos según sus requisitos empresariales. Puede utilizar los siguientes métodos para mejorar la eficiencia del desarrollo y el rendimiento de la aplicación:

    • Utilice Advanced feature: Configure parameters for an extension. Por ejemplo, puede usar el parámetro extension.project.disabled para deshabilitar la extensión en un espacio de trabajo específico.

    • Al procesar puntos de extensión relacionados con el módulo DataStudio, llame a la operación GetIDEEventDetail y utilice MessageId para obtener una instantánea de datos del momento en que se activó el evento del punto de extensión.

    Nota

    El parámetro MessageId corresponde al campo id en el mensaje de evento. Para obtener más información, consulte Appendix: Format of messages sent from DataWorks to EventBridge.

    Devolver el resultado a DataWorks

    Su servicio debe devolver el resultado del procesamiento a DataWorks mediante una llamada a una operación de OpenAPI. La operación de API específica que debe llamar depende del módulo donde se originó el evento del punto de extensión.

    • Eventos de punto de extensión en DataStudio: Llame a la operación UpdateIDEEventResult para devolver el resultado del procesamiento.

    • Eventos de punto de extensión en Operation Center: Llame a la operación UpdateWorkbenchEventResult para devolver el resultado del procesamiento.

    • Eventos de punto de extensión en otros módulos: Llame a la operación CallbackExtension para devolver el resultado del procesamiento.

    La solicitud de API de devolución de llamada debe incluir los siguientes parámetros: la extensión a la que aplica el servicio (ExtensionCode), el mensaje de evento (MessageId) y el resultado del procesamiento (CheckResult).

    • CheckResult: El resultado del procesamiento. Valores válidos:

      • OK: La verificación de la extensión se aprobó para este evento de punto de extensión.

      • FAIL: La verificación de la extensión falló para este evento de punto de extensión. Debe investigar y resolver el error para garantizar que los procesos posteriores se ejecuten correctamente.

      • WARN: La verificación de la extensión se aprobó para este evento de punto de extensión, pero se generó una advertencia.

    • ExtensionCode: Después de registrar la extensión, puede obtener este código en la página de lista de extensiones en DataWorks.

    • MessageId: Corresponde al campo id en el mensaje. Para obtener más información, consulte Appendix: Format of messages sent from DataWorks to EventBridge.

  2. Una vez finalizado el desarrollo del código, empaquete la aplicación en un archivo .jar ejecutable para su despliegue.

Paso 3: Desplegar la extensión

Después de desarrollar y depurar el código de la extensión, debe desplegar el código empaquetado como un servicio de aplicación en una instancia de ECS o en un servidor de otro proveedor.

Configuración de la extensión en DataWorks

Una vez finalizado el desarrollo del código, puede registrar y gestionar la extensión en DataWorks.

Paso 1: Registrar la extensión

Para desarrollar y utilizar una extensión, primero debe registrarla en DataWorks y así obtener el ExtensionCode necesario para el desarrollo posterior. Siga estos pasos:

  1. Inicie sesión en la consola de DataWorks. En la región objetivo, haga clic en More > Open Platform en el panel de navegación izquierdo. Haga clic en Go to Open Platform para abrir la página Developer Backend.

  2. Registre la extensión.

    1. En el panel de navegación izquierdo, haga clic en Extensions para abrir la página de extensiones.

    2. Haga clic en List of Extensions > Register Extension, seleccione Deploy Based on Self-managed Service y configure la información de la extensión.

      Descripción de parámetros

      Parámetro

      Descripción

      Extension Name

      Nombre personalizado para identificar la extensión.

      Processed Extension Points

      Seleccione los eventos de punto de extensión que gestiona esta extensión. Para consultar la lista de puntos de extensión compatibles, véase List of supported extension point events. Puede seleccionar los eventos de extensión según sus necesidades empresariales.

      Nota
      • Tras seleccionar un punto de extensión, los campos Event y Applicable Service se completan automáticamente.

      • Límite de eventos de punto de extensión: Los eventos de punto de extensión son de nivel de inquilino o de nivel de espacio de trabajo. Solo puede seleccionar un tipo de evento al registrar una extensión. Para obtener más información sobre los niveles de eventos que admite DataWorks, consulte Developer reference: Event list and message format.

      • Las extensiones desplegadas mediante Function Compute actualmente solo admiten el evento previo a la descarga de datos.

      Owner

      Propietario de la extensión. Los usuarios pueden contactar al propietario si encuentran problemas.

      Workspace for Testing

      Seleccione un espacio de trabajo para probar la extensión. La extensión estará activa en el espacio de trabajo de prueba antes de publicarse.

      Antes de publicar la extensión, puede realizar pruebas integrales en el espacio de trabajo de prueba. Puede activar un evento para comprobar si DataWorks puede enviar mensajes mediante EventBridge y si la extensión puede recibir, verificar y enviar mensajes de devolución de llamada.

      Nota

      Si selecciona un evento de punto de extensión de nivel de inquilino en Processed Extension Points, no necesita configurar Workspace for Testing.

      Extension Details Address

      Introduzca la URL de una página que proporcione detalles sobre la extensión. Esto ayuda a los usuarios a comprender y utilizar mejor la extensión.

      Puede desarrollar una página que muestre los detalles de la extensión y configurar la URL de dicha página en este parámetro. De este modo, cuando la extensión active una verificación, los usuarios podrán hacer clic en el enlace para ver el proceso completo, incluida la ruta de verificación y el motivo del bloqueo.

      Extension Documentation Address

      Introduzca la URL del documento de ayuda de la extensión. Este documento está dirigido a los usuarios de la extensión.

      Puede desarrollar una página de documentación de ayuda para la extensión y configurar la URL de dicha página en este parámetro. Esto permite a los usuarios conocer la lógica de verificación y las propiedades de la extensión.

      Parameters for Extension

      DataWorks le permite utilizar parámetros para mejorar la eficiencia del desarrollo y la aplicación de extensiones. Al desarrollar el código de la extensión, puede agregar los parámetros que desee aplicar en esta sección.

      Puede usar los parámetros integrados que proporciona DataWorks para escenarios típicos o definir parámetros personalizados.

      Puede agregar varios parámetros. Agregue un parámetro por línea con el formato key=value.

      Nota

      Por ejemplo, puede utilizar el parámetro integrado de extensión extension.project.disabled para deshabilitar la extensión en un espacio de trabajo específico. Para obtener más información sobre cómo utilizar parámetros, consulte Advanced feature: Configure parameters for an extension.

      Options for Extension

      Introduzca las opciones de configuración para los usuarios de la extensión. Esto permite un control personalizado de la extensión en diferentes espacios de trabajo. Los desarrolladores de extensiones deben definir las opciones como una cadena JSON en esta página.

      Por ejemplo, puede configurar opciones para permitir que los usuarios de la extensión controlen la longitud de SQL. Para obtener información sobre el formato JSON, consulte Advanced feature: Configure options for an extension.

  3. Complete el registro de la extensión.

    Haga clic en OK para completar el registro.

    Nota

    Una vez completado el registro, puede ver la extensión registrada en la página List of Extensions.

Paso 2: Publicar la extensión

Después de desarrollar, desplegar y registrar la extensión en DataWorks, debe probarla, aprobarla y publicarla. Una vez publicada, los administradores distintos al propietario de la extensión pueden habilitarla en Management Center. Para obtener más información, consulte Apply an extension.

Apéndice: Formato de mensaje de DataWorks a EventBridge

En el siguiente código, DataWorks envía el contenido del campo data a EventBridge. EventBridge le agrega otra información.

{
    "datacontenttype": "application/json;charset=utf-8", // The format of the content in the data field. The datacontenttype parameter supports only the application/json format.
    "aliyunaccountid": "1111",// The ID of the Alibaba Cloud account.
    "aliyunpublishtime": "2024-07-10T07:25:34.915Z",// The time when EventBridge received the event.
    "data": {
              
             "tenantId": 28378****10656,// The ID of the tenant. In DataWorks, each Alibaba Cloud account has a unique tenant ID. To find your ID, go to the DataStudio page and click the user information icon in the upper-right corner.
             "eventCode": "xxxx"//
            
    },
    "aliyunoriginalaccountid": "11111",
    "specversion": "1.0",
    "aliyuneventbusname": "default",// The name of the event bus in EventBridge that is used to receive event messages from DataWorks.
    "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",// The unique ID of the event.
    "source": "acs.dataworks",// The event source. `acs.dataworks` indicates that DataWorks pushed the message.
    "time": "2024-07-10T15:25:34.897Z",// The time when the event was generated.
    "aliyunregionid": "cn-shanghai",// The region where the event was received.
    "type": "dataworks:ResourcesUpload:UploadDataToTable"// The event type. You can use this parameter in the EventBridge console to filter messages from DataWorks. The value of this parameter varies by event.
}
Nota

El contenido del campo data varía según el tipo de mensaje. Para obtener más información sobre los mensajes de eventos, consulte Developer reference: Event list and message format.

Ejemplos de extensiones

Ahora puede desarrollar código de extensión personalizado según sus requisitos empresariales. Los siguientes temas proporcionan ejemplos sobre cómo registrar, desarrollar y aplicar extensiones en escenarios típicos.

Documentos relacionados