All Products
Search
Document Center

:Praktik terbaik: Kontrol pembekuan rilis tugas kustom

Last Updated:Jun 22, 2026

DataWorks menyediakan fitur OpenAPI, OpenEvent, dan Extensions. Gunakan ketiga kemampuan terbuka ini untuk menerapkan kontrol kustom dan respons terhadap alur kerja tertentu. Topik ini menjelaskan cara mengonfigurasi Open Platform melalui skenario bisnis: mengontrol rilis tugas selama periode pembekuan jaringan saat mengirimkan event node deployment pada halaman Data Development.

Catatan

Untuk ikhtisar fitur Open Platform dan konsep dasar yang digunakan dalam praktik ini, lihat Ikhtisar OpenEvent dan Ikhtisar Extensions.

Deskripsi skenario

Konfigurasi Subskripsi

Saat mengonfigurasi subscription, tentukan jenis event sebagai commit file atau deployment file menggunakan aturan event.

  • Pada ruang kerja mode standar: dataworks:FileChange:CommitFile.

  • Pada ruang kerja mode dasar: dataworks:FileChange:DeployFile.

Prosedur

Langkah 1: Konfigurasi custom event bus

Untuk langkah-langkah detail mengenai cara mengaktifkan dan mengonfigurasi subscription pesan, lihat Aktifkan subscription pesan. Berikut ini menjelaskan langkah-langkah konfigurasi inti dan pertimbangan utama untuk praktik ini.

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

    Jika Anda belum mengaktifkan EventBridge, aktifkan EventBridge dan berikan izin.
  2. Klik tombol image lalu klik Create custom event bus.

    1. Pada bagian Bus, masukkan Custom event bus name, lalu klik Next step untuk mengonfigurasi sumber event.

    2. Klik Skip untuk melewati konfigurasi bagian Event source, Rule, dan Target. Masukkan Description. Anda dapat melewatkan Langkah 2 (Event source), 3 (Rule), dan 4 (Target).

  3. Di panel navigasi sebelah kiri, klik Event Bus untuk kembali ke daftar event bus. Temukan custom event bus Anda, lalu klik namanya untuk membuka halaman ikhtisar.

    • Klik Event Rules di panel navigasi sebelah kiri untuk membuka halaman aturan event, lalu klik Create Rule untuk membuat aturan event baru.

    • Praktik ini mengonfigurasi custom EventBridge bus agar menerima event commit file dan deployment file dari DataWorks. Konfigurasi demo dan parameter utamanya adalah sebagai berikut.

      1. Configure basic information: Masukkan nama aturan kustom.

      2. Configure event pattern:

        • Event source type: Pilih Custom event source.

        • Event source: Biarkan bidang ini kosong.

        • Pattern content: Tulis pola dalam format JSON seperti di bawah ini. Contoh ini menggunakan ruang kerja mode standar.

          Catatan

          Jika Anda menggunakan ruang kerja mode dasar, atur nilainya menjadi dataworks:FileChange:DeployFile.

          {
              "source": [
                  "acs.dataworks"
              ],
              "type": [
                  "dataworks:FileChange:CommitFile"
              ]
          }
          • source: Menentukan identifier produk sebagai acs.dataworks.

          • type: Menentukan jenis event di bawah produk sebagai dataworks:FileChange:CommitFile.

        • Test event pattern: Perbarui nilai source dan type, lalu uji event tersebut. Setelah pengujian berhasil, klik Next. Klik Test. Jika halaman menampilkan "Match succeeded. The event can be triggered normally," maka pola event telah dikonfigurasi dengan benar.

      3. Configure event target.

        • Service Type: Pilih HTTPS atau HTTP. Untuk jenis layanan lainnya, lihat Manage event rules.

        • URL: Masukkan URL yang menerima pesan yang didorong dari custom event bus, contohnya: https://server address:port/extensions/consumer.

          Catatan

          Masukkan alamat server tempat extension Anda diterapkan.

        • Body: Pilih Complete event.

        • Network type: Pilih Internet.

Langkah 2: Konfigurasi saluran distribusi event

  1. Masuk ke Konsol DataWorks. Di Wilayah target, klik More > Open Platform di panel navigasi sebelah kiri, lalu klik Go to Open Platform untuk membuka halaman Developer Backend.

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

    • 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 Operation untuk mengaktifkannya.

Langkah 3: Daftarkan dan konfigurasikan extension

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

    1. Metode deployment: Pilih Self-managed service deployment.

    2. Daftarkan extension.

      • Extension Name: Masukkan nama kustom.

      • Extension Point Event: Pilih Pre-file commit event dan Pre-file deployment event.

      • Workspace for Testing: Setelah dikonfigurasi, Anda dapat menguji extension di ruang kerja ini sebelum menyerahkannya.

      Konfigurasikan parameter lainnya sesuai petunjuk.

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

  3. Di kolom Operation untuk extension yang Anda buat, klik Submit untuk memulai proses peninjauan.

    Catatan
    • Extension ditinjau oleh platform DataWorks. Peninjauan biasanya selesai dalam tiga hari kerja.

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

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

  5. Klik Manage Extensions untuk membuka halaman Management Center > Extension. Pilih extension Anda dan aktifkan di kolom Enable.

Mengembangkan dan mengonfigurasi ekstensi

Kode contoh

Kode ini menerima pesan yang didorong oleh EventBridge, membandingkan tanggal saat ini dengan daftar hari libur dan tanggal pembekuan jaringan, lalu mengembalikan hasilnya ke DataWorks menggunakan operasi API UpdateIDEEventResult.

Lingkungan: Java 8 dengan 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;
  /**
   * Menerima pesan yang didorong oleh 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 tanggal saat ini
      SimpleDateFormat sdf = new SimpleDateFormat(Constants.YYYY_MM_DD);
      String now = sdf.format(System.currentTimeMillis());
      // Dapatkan daftar hari libur dan tanggal pembekuan jaringan tahun 2022
      List<String> holidayList = Arrays.asList(extensionParamProperties.getHolidayList().split(","));
      // Periksa apakah tanggal saat ini merupakan tanggal pembekuan
      boolean isExists = holidayList.stream().anyMatch(day -> day.equals(now));
      // Siapkan permintaan callback
      UpdateIDEEventResultRequest updateIDEEventResultRequest = new UpdateIDEEventResultRequest();
      updateIDEEventResultRequest.setMessageId(jsonObj.getString("id"));
      updateIDEEventResultRequest.setExtensionCode(extensionParamProperties.getExtensionCode());
      // Jika tanggal pembekuan, pemeriksaan gagal
      if (isExists) {
        updateIDEEventResultRequest.setCheckResult(EventCheckEnum.FAIL.getCode());
        updateIDEEventResultRequest.setCheckResultTip("Pengiriman file tidak diizinkan pada tanggal pembekuan");
      } else {
        // Jika bukan tanggal pembekuan, pemeriksaan berhasil
        updateIDEEventResultRequest.setCheckResult(EventCheckEnum.OK.getCode());
        updateIDEEventResultRequest.setCheckResultTip(EventCheckEnum.OK.getName());
      }
      try {
        // 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("Event lain tidak difilter. Periksa langkah konfigurasi Anda.");
      }
  }
}

Terapkan proyek contoh

  1. Siapkan lingkungan dan proyek

  2. Opsi deployment

    • Deployment lokal: Kemas proyek menjadi file JAR dan jalankan di server lokal atau mesin Windows yang telah menginstal Java 8 dan Maven menggunakan perintah java -jar yourapp.jar.

    • Deployment cloud: Kemas proyek menjadi file JAR dan terapkan ke lingkungan runtime seperti kontainer Docker atau instans Elastic Compute Service.

  3. Setelah mengunduh proyek, buka direktori root dan jalankan perintah berikut untuk mengemasnya 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

Aplikasi berhasil dimulai, seperti yang ditunjukkan pada output berikut:

.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.2)
2022-08-02 20:07:59.521  INFO 48144 --- [           main] com.aliyun.dataworks.DemoStarter          : Memulai DemoStarter v1.0 menggunakan Java 1.8.0_151 di xxxdeMacBook-Pro.local dengan PID 48144 (/xxx/xxx/n-demo-deploycontroller/target/extension/demo-deploycontroller-1.0.jar dimulai oleh xxx di xxx/xxx/extension-xxx-demo-deploycontroller)
2022-08-02 20:07:59.523  INFO 48144 --- [           main] com.aliyun.dataworks.DemoStarter          : Tidak ada profil aktif yang ditetapkan, kembali ke 1 profil default: "default"
2022-08-02 20:08:00.440  INFO 48144 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat diinisialisasi dengan port: 8080 (http)
2022-08-02 20:08:00.452  INFO 48144 --- [           main] o.apache.catalina.core.StandardService   : Memulai layanan [Tomcat]
2022-08-02 20:08:00.452  INFO 48144 --- [           main] org.apache.catalina.core.StandardEngine  : Memulai mesin Servlet: [Apache Tomcat/9.0.65]
2022-08-02 20:08:00.452  INFO 48144 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Menginisialisasi Spring embedded WebApplicationContext
2022-08-02 20:08:00.576  INFO 48144 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: inisialisasi selesai dalam 1002 ms
2022-08-02 20:08:00.576  INFO 48144 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat dimulai pada port: 8080 (http) dengan jalur konteks ''
2022-08-02 20:08:00.945  INFO 48144 --- [           main] com.aliyun.dataworks.DemoStarter          : DemoStarter dimulai dalam 1.771 detik (JVM berjalan selama 2.199)
2022-08-02 20:08:07.853  INFO 48144 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Menginisialisasi Spring DispatcherServlet 'dispatcherServlet'
2022-08-02 20:08:07.854  INFO 48144 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Menginisialisasi Servlet 'dispatcherServlet'

Buka http://localhost:8080/index di browser Anda. Jika Anda melihat "hello world!", aplikasi telah berhasil diterapkan. Setelah terhubung ke jaringan, aplikasi dapat menerima pesan dari EventBridge.

Verifikasi hasil

Setelah kode diterapkan dan terhubung ke EventBridge, verifikasi pengaturan di ruang kerja tempat extension diaktifkan.

Metode verifikasi: Di editor kode, klik Submit untuk memicu pemeriksaan event pra-submit. Setelah pengiriman, muncul pesan "Checking". Jika pemeriksaan berhasil, operasi akan dilanjutkan secara otomatis. Lihat catatan dan status pemeriksaan di panel Operation checks di sebelah kiri. Klik panel Operation checks di bagian bawah editor untuk melihat detail seperti jenis pemeriksaan (misalnya, Pre-submit check_Test program), status saat ini, dan tautan view details.