全部产品
Search
文档中心

:Praktik terbaik: Penguncian penerapan tugas kustom

更新时间:Feb 04, 2026

DataWorks Open Platform menyediakan fitur OpenAPI, OpenEvent, dan Extensions. Anda dapat menggunakan fitur-fitur ini untuk menerapkan kontrol dan respons kustom pada alur tertentu. Topik ini menggunakan skenario penguncian penerapan tugas sebagai contoh untuk menunjukkan cara mengonfigurasi Open Platform guna menangani event, seperti mengirimkan node untuk penerapan di halaman Data Development.

Catatan

Untuk pengenalan fitur dan konsep Open Platform yang digunakan dalam praktik terbaik ini, lihat OpenEvent overview dan Extensions overview.

Deskripsi skenario

Konfigurasi langganan

Saat mengonfigurasi subscription, Anda dapat menggunakan aturan event untuk menentukan jenis event saat file dikirim atau diterapkan.

  • Untuk ruang kerja dalam mode standar, gunakan dataworks:FileChange:CommitFile.

  • Untuk ruang kerja dalam mode dasar, gunakan dataworks:FileChange:DeployFile.

Prosedur

Langkah 1: Konfigurasi custom event bus

Untuk langkah-langkah detail tentang cara mengaktifkan dan mengonfigurasi subscription pesan, lihat Enable message subscription. Bagian berikut menjelaskan alur konfigurasi inti dan catatan penting untuk praktik terbaik ini.

  1. Masuk ke Konsol EventBridge. Di panel navigasi sebelah kiri, klik Event Buses untuk membuka halaman pembuatan event bus.

    Jika EventBridge belum diaktifkan, silakan aktifkan layanan dan selesaikan otorisasi.
  2. Klik Quickly Create untuk Create Custom Event Bus.

    1. Pada bagian Event Bus, konfigurasikan Name lalu klik Next Step untuk menuju konfigurasi sumber event.

    2. Klik Skip untuk melewati konfigurasi Event Source, Event Rule, dan Event Target.创建自定义总线

  3. Di panel navigasi sebelah kiri, klik Event Buses. Temukan event bus yang telah Anda buat dan klik namanya untuk membuka halaman ikhtisar.

    • Di panel navigasi sebelah kiri, klik Event Rules. Pada halaman Event Rules, klik Create Rule untuk membuat aturan event baru.

    • Dalam praktik terbaik ini, custom EventBridge bus dikonfigurasi untuk menerima pesan event pengiriman file dan penerapan file dari DataWorks. Bagian berikut menjelaskan konfigurasi demo dan parameter inti.

      1. Configure Basic Info: Masukkan nama aturan kustom.

      2. Configure Event Pattern

        • Event Source Type: Pilih Custom Event Source.

        • Event Source: Biarkan parameter ini kosong.

        • Pattern Content: Tulis konten dalam format JSON sebagai berikut. Contoh ini menggunakan ruang kerja dalam mode standar.

          Catatan

          Untuk ruang kerja dalam mode dasar, atur parameter ini menjadi dataworks:FileChange:DeployFile.

          {
              "source": [
                  "acs.dataworks"
              ],
              "type": [
                  "dataworks:FileChange:CommitFile"
              ]
          }
          • source: Menentukan identifier nama produk untuk event, yaitu acs.dataworks.

          • type: Menentukan identifier jenis event untuk produk tersebut. Atur parameter ini menjadi dataworks:FileChange:CommitFile.

        • Event Pattern Debugging: Ubah nilai source dan type, lalu uji event tersebut. Jika pengujian berhasil, klik Next.测试

      3. Configure Targets

        • Service Type: Pilih HTTPS atau HTTP. Untuk informasi lebih lanjut tentang jenis layanan, lihat Manage event rules.

        • URL: Masukkan URL untuk menerima pesan yang didorong dari custom bus, misalnya https://server_address:port_number/extensions/consumer.

          Catatan

          Masukkan URL server dari extension yang telah diterapkan.

        • Body: Pilih Complete Event.

        • Network Type: Pilih Internet.事件目标

Langkah 2: Konfigurasi saluran distribusi event

  1. Buka tab Developer Backend.

    Masuk ke konsol DataWorks. Pada bilah navigasi atas, pilih wilayah yang diinginkan. Di panel navigasi sisi kiri, pilih More > Open Platform. Pada halaman yang muncul, klik Go to Open Platform. Tab Developer Backend akan ditampilkan.

  2. Pada halaman Developer Backend, klik OpenEvent di panel navigasi kiri. Pada halaman yang muncul, klik Add Event Distribution Channel dan konfigurasikan parameter dalam dialog.

    • Workspace for Distribution of Event Messages: Pilih ruang kerja yang telah Anda buat.

    • Specify Custom Event Bus in EventBridge for Distribution of Event Messages: Pilih event bus yang telah Anda buat di Langkah 1.

  3. Setelah menyimpan saluran distribusi event, temukan saluran tersebut dan klik Enable di kolom Actions.image

Langkah 3: Daftarkan dan konfigurasikan extension

  1. Pada halaman Developer Backend, klik Extensions di panel navigasi kiri. Lalu, klik Register Extension dan konfigurasikan parameter dalam dialog.

    1. Deployment Method: Pilih Deploy with Self-managed Service.

    2. Daftarkan extension.

      • Extension Name: Masukkan nama kustom.

      • Processed Extension Points: Pilih Pre-event for Node Commit dan Pre-event for Node Deployment.

      • Workspace for Testing: Setelah konfigurasi selesai, Anda dapat menguji extension di ruang kerja ini setelah extension dibuat tetapi sebelum diajukan.

      Konfigurasikan parameter lain sesuai petunjuk pada antarmuka.注册扩展程序

  2. Setelah menyelesaikan konfigurasi, klik OK untuk menyimpan extension yang telah didaftarkan.

  3. Di kolom Actions untuk extension tersebut, klik Submit untuk memulai proses peninjauan.

    Catatan
    • Extension akan ditinjau oleh platform DataWorks. Proses peninjauan biasanya memerlukan waktu tiga hari kerja. Harap bersabar.

    • Untuk menguji extension yang telah Anda buat, Anda harus mengonfigurasi Workspace for Testing.

  4. Setelah extension disetujui, klik Publish di kolom Actions untuk menerbitkannya.

  5. Klik Manage Extensions untuk membuka halaman SettingCenter > Extensions. Pilih extension yang telah Anda buat dan aktifkan di kolom Enable.

Kembangkan dan konfigurasikan extension

Kode contoh

Kode ini menggunakan pesan yang didorong dari EventBridge ke layanan untuk memanggil layanan tersebut. Kode ini membandingkan tanggal saat ini dengan tanggal libur dan tanggal penguncian yang telah dikonfigurasi untuk menentukan apakah hari tersebut merupakan hari penguncian. Hasilnya dikirim kembali ke DataWorks melalui callback menggunakan operasi OpenAPI UpdateIDEEventResult.

Lingkungan: Java 8 dan tool build Maven.

package com.aliyun.dataworks.demo;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.dataworks.config.Constants;
import com.aliyun.dataworks.config.EventCheckEnum;
import com.aliyun.dataworks.config.ExtensionParamProperties;
import com.aliyun.dataworks.services.DataWorksOpenApiClient;
import com.aliyun.dataworks_public20200518.Client;
import com.aliyun.dataworks_public20200518.models.UpdateIDEEventResultRequest;
import com.aliyun.dataworks_public20200518.models.UpdateIDEEventResultResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.List;

/**
 * @author dataworks demo
 */
@RestController
@RequestMapping("/extensions")
public class ExtensionsController {

  @Autowired(required = false)
  private DataWorksOpenApiClient dataWorksOpenApiClient;

  @Autowired
  private ExtensionParamProperties extensionParamProperties;

  /**
   * Terima pesan yang didorong dari EventBridge
   *
   * @param jsonParam
   */
  @PostMapping("/consumer")
  public void consumerEventBridge(@RequestBody String jsonParam) {
    JSONObject jsonObj = JSON.parseObject(jsonParam);
    String eventCode = jsonObj.getString(Constants.EVENT_CODE_FILED);
    if (Constants.COMMIT_FILE_EVENT_CODE.equals(eventCode)) {
      // Inisialisasi client
      Client client = dataWorksOpenApiClient.createClient();
      // Dapatkan waktu saat ini
      SimpleDateFormat sdf = new SimpleDateFormat(Constants.YYYY_MM_DD);
      String now = sdf.format(System.currentTimeMillis());
      // Dapatkan daftar hari libur dan tanggal penguncian tahun 2022
      List<String> holidayList = Arrays.asList(extensionParamProperties.getHolidayList().split(","));
      // Periksa apakah tanggal saat ini merupakan hari penguncian
      boolean isExists = holidayList.stream().anyMatch(day -> day.equals(now));
      // Metode callback
      UpdateIDEEventResultRequest updateIDEEventResultRequest = new UpdateIDEEventResultRequest();
      updateIDEEventResultRequest.setMessageId(jsonObj.getString("id"));
      updateIDEEventResultRequest.setExtensionCode(extensionParamProperties.getExtensionCode());
      // Jika hari tersebut merupakan hari penguncian, pemeriksaan gagal
      if (isExists) {
        updateIDEEventResultRequest.setCheckResult(EventCheckEnum.FAIL.getCode());
        updateIDEEventResultRequest.setCheckResultTip("Pengiriman file tidak diizinkan pada hari penguncian.");
      } else {
        // Jika bukan hari penguncian, pemeriksaan berhasil
        updateIDEEventResultRequest.setCheckResult(EventCheckEnum.OK.getCode());
        updateIDEEventResultRequest.setCheckResultTip(EventCheckEnum.OK.getName());
      }
      try {
        // Kirim callback ke DataWorks
        UpdateIDEEventResultResponse response = client.updateIDEEventResult(updateIDEEventResultRequest);
              // ID unik permintaan, digunakan untuk troubleshooting.
              System.out.println("response:" + response.getBody().getRequestId());
          } catch (Exception e) {
              System.out.println("consumerEventBridge error:" + e.getMessage());
              throw new RuntimeException(e);
          }
      } else {
          System.out.println("Gagal memfilter event lainnya. Periksa langkah konfigurasi.");
      }
  }
}

Penerapan proyek contoh

  1. Persiapkan lingkungan dan proyek

  2. Metode penerapan

    • Penerapan lokal: Kemas proyek menjadi file JAR. Jalankan program layanan di server lokal atau mesin Windows yang telah menginstal Java 8 dan Maven dengan menjalankan perintah java -jar yourapp.jar.

    • Penerapan di platform cloud: Kemas proyek menjadi file JAR. Unggah file tersebut ke lingkungan runtime, seperti kontainer Docker atau instans Elastic Compute Service (ECS), untuk penerapan.

  3. Setelah mengunduh proyek, buka direktori root proyek dan jalankan perintah pengemasan untuk mengemas proyek menjadi file JAR.

    mvn clean package -Dmaven.test.skip=true spring-boot:repackage
  4. Jalankan file JAR:

    java -jar target/extension-demo-deploycontroller-1.0.jar

Proyek berhasil dimulai, seperti yang ditunjukkan pada gambar berikut. 启动工程 Masukkan http://localhost:8080/index di browser. Jika "hello world!" dikembalikan, aplikasi telah berhasil diterapkan. Setelah koneksi jaringan terbentuk, Anda dapat berlangganan pesan dari EventBridge.

Verifikasi hasil

Setelah Anda menerapkan kode dan membangun koneksi jaringan ke EventBridge, Anda dapat melakukan verifikasi di ruang kerja tempat extension diaktifkan.

文件提交