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.
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.
-
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
datacontiene el contenido específico del mensaje. Durante el desarrollo, puede identificar el tipo de mensaje mediante el campodata.eventCodey recuperar los detalles del mensaje con el campoid.NotaOpenEvent 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.disabledpara 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
MessageIdpara obtener una instantánea de datos del momento en que se activó el evento del punto de extensión.
NotaEl parámetro
MessageIdcorresponde al campoiden 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.
Una vez finalizado el desarrollo del código, empaquete la aplicación en un archivo
.jarejecutable 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:
-
Inicie sesión en la consola de DataWorks. En la región objetivo, haga clic en en el panel de navegación izquierdo. Haga clic en Go to Open Platform para abrir la página Developer Backend.
-
Registre la extensión.
En el panel de navegación izquierdo, haga clic en Extensions para abrir la página de extensiones.
-
Haga clic en , seleccione Deploy Based on Self-managed Service y configure la información de la extensión.
-
Complete el registro de la extensión.
Haga clic en OK para completar el registro.
NotaUna 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.
}
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
Para obtener información sobre el formato de mensaje de cada tipo de evento, consulte Developer reference: Event list and message format.
OpenEvent le permite suscribirse a mensajes de algunos eventos mediante EventBridge. Para obtener más información, consulte OpenEvent overview.
Para consultar la lista de puntos de extensión que puede gestionar con extensiones, véase Extensions overview.
También puede desplegar una extensión mediante Function Compute. Para obtener más información, consulte Develop and deploy an extension by using Function Compute.