Todos os produtos
Search
Central de documentação

DataWorks:Desenvolver uma extensão com um serviço autogerenciado

Última atualização: Aug 20, 2026

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.

image
Nota

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.

  1. 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 data contém o conteúdo específico. Durante o desenvolvimento, identifique o tipo de mensagem usando o campo data.eventCode e recupere os detalhes da mensagem através do campo id.

    Nota

    O 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.disabled para 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 MessageId para obter um snapshot dos dados no momento em que o evento do ponto de extensão foi acionado.

    Nota

    O parâmetro MessageId corresponde ao campo id na 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.

  2. Após concluir o desenvolvimento do código, empacote a aplicação em um arquivo executável .jar para 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:

  1. Faça login no console do DataWorks. Na região desejada, clique em More > Open Platform no painel de navegação à esquerda. Clique em Go to Open Platform para abrir a página Developer Backend.

  2. Registre a extensão.

    1. No painel de navegação à esquerda, clique em Extensions para acessar a página de extensões.

    2. Clique em List of Extensions > Register Extension, selecione Deploy Based on Self-managed Service e configure as informações da extensão.

      Descrição dos parâmetros

      Parâmetro

      Descrição

      Extension Name

      Nome personalizado para identificar a extensão.

      Processed Extension Points

      Selecione os eventos de ponto de extensão que esta extensão irá tratar. Para uma lista de pontos de extensão suportados, veja List of supported extension point events. Escolha os eventos conforme suas necessidades de negócio.

      Nota
      • Ao selecionar um ponto de extensão, os campos Event e Applicable Service são preenchidos automaticamente.

      • Limite de eventos de ponto de extensão: esses eventos são classificados como nível de tenant ou nível de workspace. Apenas um tipo pode ser selecionado durante o registro. Consulte Developer reference: Event list and message format para saber mais sobre os níveis de evento suportados pelo DataWorks.

      • Extensões implantadas via Function Compute atualmente suportam apenas o pré-evento de download de dados.

      Owner

      Proprietário da extensão. Usuários podem contatar essa pessoa caso encontrem problemas.

      Workspace for Testing

      Escolha um workspace para testar a extensão. Ela permanecerá ativa neste ambiente de teste antes da publicação oficial.

      Antes de publicar, realize testes ponta a ponta neste workspace. Acione um evento para validar se o DataWorks envia mensagens corretamente via EventBridge e se a extensão consegue recebê-las, verificá-las e enviar callbacks.

      Nota

      Se você selecionar um evento de ponto de extensão de nível de tenant em Processed Extension Points, não será necessário configurar o Workspace for Testing.

      Extension Details Address

      Insira a URL de uma página com detalhes sobre a extensão. Isso auxilia os usuários a compreenderem melhor sua funcionalidade.

      Desenvolva uma página que exiba essas informações e configure sua URL neste parâmetro. Dessa forma, quando a extensão acionar uma verificação, os usuários poderão clicar no link para visualizar todo o processo, incluindo o caminho da verificação e o motivo de eventuais bloqueios.

      Extension Documentation Address

      Informe a URL do documento de ajuda da extensão, destinado aos seus usuários.

      Crie uma documentação de ajuda e defina sua URL aqui. Isso permite que os usuários aprendam sobre a lógica de verificação e as propriedades da extensão.

      Parameters for Extension

      O DataWorks permite o uso de parâmetros para aumentar a eficiência no desenvolvimento e aplicação de extensões. Adicione nesta seção os parâmetros que deseja aplicar durante a codificação.

      Utilize os parâmetros nativos fornecidos pelo DataWorks para cenários comuns ou defina parâmetros personalizados.

      É possível adicionar múltiplos parâmetros, sendo um por linha no formato key=value.

      Nota

      Por exemplo, utilize o parâmetro nativo extension.project.disabled para desativar a extensão em um workspace específico. Veja Advanced feature: Configure parameters for an extension para mais detalhes sobre o uso de parâmetros.

      Options for Extension

      Defina opções de configuração para os usuários da extensão, permitindo controle customizado em diferentes workspaces. O desenvolvedor deve definir essas opções como uma string JSON nesta página.

      Por exemplo, configure opções que permitam aos usuários controlar o tamanho de consultas SQL. Consulte Advanced feature: Configure options for an extension para informações sobre o formato JSON.

  3. Conclua o registro da extensão.

    Clique em OK para finalizar o registro.

    Nota

    Apó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.
}
Nota

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