No DataWorks, as extensões permitem definir lógicas personalizadas para governar operações de usuários. Com elas, é possível interceptar e bloquear ações inadequadas, receber notificações sobre eventos específicos e implementar controles de processo. Este tópico descreve como desenvolver e implantar uma extensão utilizando um serviço autogerenciado.
Contexto
Pré-requisitos
Você já possui enabled event message subscription. A implantação de uma extensão por meio de um serviço autogerenciado depende da capacidade de distribuição de mensagens do EventBridge. Certifique-se de ter especificado um barramento de eventos no EventBridge para receber mensagens de eventos abertos do DataWorks e de que as mensagens desse barramento sejam roteadas para o seu serviço, seja ele implantado localmente ou na cloud.
Limitações
O módulo Extensions está disponível apenas para usuários do DataWorks Enterprise Edition.
Este recurso pode ser utilizado nas seguintes regiões: China (Beijing), China (Hangzhou), China (Shanghai), China (Zhangjiakou), China (Shenzhen), China (Chengdu), US (Silicon Valley), US (Virginia), Germany (Frankfurt), Japan (Tokyo), China (Hong Kong) e Singapore.
Observações de uso
Apenas o Open Platform administrator, o tenant administrator, contas Alibaba Cloud e usuários RAM com a política AliyunDataWorksFullAccess anexada possuem permissões de leitura e gravação no backend de desenvolvedor. Para mais detalhes sobre gerenciamento de permissões, consulte Permission control for global services e RAM policies for service and console permissions.
Limitações de versão: Caso sua assinatura do DataWorks Enterprise Edition expire, todas as extensões ficarão inativas e não serão mais acionadas para verificações de eventos. Quaisquer verificações já iniciadas, mas ainda sem estado final definido, serão aprovadas automaticamente.
Limitações de nó: Quando um nó composto contendo nós internos, como um Platform for AI node, um do-while node ou um for-each node, aciona uma verificação, todos os nós internos devem ser aprovados antes que as operações subsequentes possam prosseguir.
Acionamento: É possível associar várias extensões ao mesmo evento de ponto de extensão. Assim, um único evento pode disparar múltiplas extensões simultaneamente.
Como funciona
O diagrama abaixo ilustra o fluxo básico para implantar uma extensão com um serviço autogerenciado que consome mensagens via EventBridge.
Após o acionamento de um evento de ponto de extensão, o processo associado entra no estado Checking enquanto aguarda o retorno de um resultado pela extensão via callback de API. O processo permanece nesse estado até que a extensão envie o resultado ao DataWorks. Com base no resultado retornado, o DataWorks decide se deve bloquear ou não o processo.
Desenvolver o serviço
Antes de implantar uma extensão no DataWorks, é necessário desenvolvê-la e implantá-la localmente ou na cloud. Utilize o código de Appendix: DataWorks Open Platform sample code library para inicializar seu projeto e obtenha mais exemplos no código de exemplo da Open Platform no GitHub. Durante o desenvolvimento, a implantação deve seguir o tipo de serviço configurado para receber as mensagens roteadas pelo barramento de eventos.
Etapa 1: Configurar dependências
Ao desenvolver uma extensão, adicione as seguintes dependências ao arquivo pom.xml. O EventBridge suporta diversos tipos de endpoints para processar e consumir eventos. Além das dependências listadas abaixo, talvez seja necessário adicionar outras, dependendo do event target configurado no EventBridge.
Biblioteca de dependências do DataWorks
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dataworks_public20200518</artifactId>
<version>5.6.0</version>
</dependency>
Plugin de empacotamento
<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>
Etapa 2: Desenvolver o código da extensão
O barramento de eventos no EventBridge roteia mensagens para o serviço implantado. Esse serviço recebe as mensagens do DataWorks provenientes do barramento, processa-as e chama uma API específica do DataWorks para retornar o resultado do processamento.
-
Desenvolva o código do serviço.
Analisar o conteúdo da mensagem
Para informações sobre o formato das mensagens de evento enviadas pelo DataWorks, consulte Appendix: Format of messages sent from DataWorks to EventBridge. Em uma mensagem, o campo
datacontém o conteúdo específico. Durante o desenvolvimento, identifique o tipo de mensagem usando o campodata.eventCodee recupere os detalhes da mensagem através do campo id.NotaO OpenEvent utiliza o EventBridge para distribuir mensagens de eventos do DataWorks. Antes de desenvolver uma extensão, assine as mensagens do DataWorks no EventBridge. Para mais informações, consulte Enable event message subscription.
Escrever a lógica de processamento
Processe as mensagens do barramento de eventos conforme seus requisitos de negócio. Os métodos a seguir ajudam a aumentar a eficiência do desenvolvimento e o desempenho da aplicação:
Utilize Advanced feature: Configure parameters for an extension. Por exemplo, use o parâmetro
extension.project.disabledpara desativar a extensão em um workspace específico.Ao processar pontos de extensão relacionados ao módulo DataStudio, chame a operação GetIDEEventDetail e utilize o
MessageIdpara obter um snapshot dos dados no momento em que o evento do ponto de extensão foi acionado.
NotaO parâmetro
MessageIdcorresponde ao campoidna mensagem de evento. Para mais detalhes, consulte Appendix: Format of messages sent from DataWorks to EventBridge.Retornar o resultado ao DataWorks
Seu serviço deve retornar o resultado do processamento ao DataWorks chamando uma operação da OpenAPI. A operação específica depende do módulo onde o evento do ponto de extensão se originou.
Eventos de ponto de extensão no DataStudio: Chame a operação UpdateIDEEventResult para retornar o resultado do processamento.
Eventos de ponto de extensão no Operation Center: Utilize a operação UpdateWorkbenchEventResult para enviar o resultado.
Eventos de ponto de extensão em outros módulos: Execute a operação CallbackExtension para devolver o resultado.
A requisição de callback da API deve incluir os seguintes parâmetros: a extensão à qual o serviço se aplica (ExtensionCode), a mensagem de evento (MessageId) e o resultado do processamento (CheckResult).
-
CheckResult: Resultado do processamento. Valores válidos:
OK: A verificação da extensão foi aprovada para este evento de ponto de extensão.FAIL: A verificação falhou. Investigue e resolva o erro para garantir que os processos subsequentes executem conforme esperado.WARN: A verificação foi aprovada, mas gerou um alerta.
ExtensionCode: Após registrar a extensão, obtenha este código na página de lista de extensões no DataWorks.
MessageId: Corresponde ao campo id na mensagem. Consulte Appendix: Format of messages sent from DataWorks to EventBridge para mais informações.
Após concluir o desenvolvimento do código, empacote a aplicação em um arquivo executável
.jarpara implantação.
Etapa 3: Implantar a extensão
Depois de desenvolver e depurar o código da extensão, implante o pacote como um serviço de aplicação em uma instância ECS ou em um servidor de outro provedor.
Configurar a extensão no DataWorks
Com o desenvolvimento do código concluído, registre e gerencie a extensão diretamente no DataWorks.
Etapa 1: Registrar a extensão
Para desenvolver e utilizar uma extensão, primeiro registre-a no DataWorks para obter o ExtensionCode necessário para o desenvolvimento subsequente. Siga estas etapas:
-
Faça login no console do DataWorks. Na região desejada, clique em no painel de navegação à esquerda. Clique em Go to Open Platform para abrir a página Developer Backend.
-
Registre a extensão.
No painel de navegação à esquerda, clique em Extensions para acessar a página de extensões.
-
Clique em , selecione Deploy Based on Self-managed Service e configure as informações da extensão.
-
Conclua o registro da extensão.
Clique em OK para finalizar o registro.
NotaApós a conclusão, visualize a extensão registrada na página List of Extensions.
Etapa 2: Publicar a extensão
Depois de desenvolver, implantar e registrar a extensão no DataWorks, realize testes, aprovação e publicação. Uma vez publicada, administradores (exceto o proprietário da extensão) poderão ativá-la no Management Center. Consulte Apply an extension para mais informações.
Apêndice: Formato de mensagem do DataWorks para o EventBridge
No código abaixo, o DataWorks envia o conteúdo do campo data para o EventBridge, que adiciona outras informações à mensagem.
{
"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.
}
O conteúdo do campo data varia conforme o tipo de mensagem. Para mais detalhes sobre mensagens de eventos, consulte Developer reference: Event list and message format.
Exemplos de extensões
Desenvolva códigos de extensão personalizados conforme suas necessidades de negócio. Os tópicos a seguir apresentam exemplos de registro, desenvolvimento e aplicação de extensões em cenários típicos.
Documentos relacionados
Para informações sobre o formato de mensagem de cada tipo de evento, consulte Developer reference: Event list and message format.
O OpenEvent permite assinar mensagens de determinados eventos usando o EventBridge. Saiba mais em OpenEvent overview.
Veja a lista de pontos de extensão que podem ser tratados por extensões em Extensions overview.
Também é possível implantar uma extensão usando o Function Compute. Para detalhes, consulte Develop and deploy an extension by using Function Compute.