All Products
Search
Document Center

DataWorks:Alur kerja yang dipicu

Last Updated:Aug 19, 2026

Berbeda dengan alur kerja terjadwal, yang berjalan sesuai jadwal tetap (misalnya pukul 01.00 setiap hari), alur kerja yang dipicu merupakan model pemrosesan data berbasis permintaan dan berbasis event. Sinyal eksternal—seperti unggahan file, kedatangan pesan, panggilan API, atau klik manual—memicu eksekusinya secara real-time, sehingga memberikan responsivitas dan fleksibilitas tinggi dalam pemrosesan data.

Fitur

Alur kerja terjadwal

Alur kerja yang dipicu

Mekanisme pemicu

Jadwal tetap (ekspresi cron)

Sinyal eksternal (event, API, manual)

Model eksekusi

Terjadwal dan dapat diprediksi

Reaktif dan berdasarkan permintaan

Kasus penggunaan

Penggudangan data batch T+1, laporan terjadwal

Memproses file saat tiba, mengintegrasikan dengan sistem bisnis, perbaikan data manual

Keunggulan utama

Keandalan dan penjadwalan yang dapat diprediksi

Responsivitas dan fleksibilitas real-time

Metode pemicu yang didukung

Alur kerja yang dipicu mendukung tiga metode pemicu. Pilih salah satu sesuai skenario Anda.

Metode pemicu

Pemrakarsa

Skenario Utama

Poin penting

Pemicu event

Sumber event eksternal (seperti OSS atau ApsaraMQ for Kafka)

ETL berbasis event: Memproses file saat tiba, atau memicu komputasi real-time dari pesan.

Anda harus terlebih dahulu Membuat pemicu dan mengaitkannya dengan alur kerja. Ini hanya berlaku di lingkungan produksi.

Pemicu manual

Pengguna (developer/insinyur O&M)

Tugas ad hoc: Pemrosesan atau analisis data satu kali.

Anda dapat menjalankan alur kerja secara manual di lingkungan pengembangan maupun produksi. Ini merupakan alternatif yang direkomendasikan dibandingkan alur kerja manual.

Pemicu API

Sistem eksternal (melalui OpenAPI)

Integrasi sistem: Dipicu oleh callback dari sistem bisnis (seperti CRM atau ERP) untuk memulai pemrosesan data.

Anda harus memanggil operasi OpenAPI dan memiliki izin yang diperlukan.

Panduan cepat: Membuat alur kerja yang dipicu secara manual

Bagian ini akan memandu Anda membuat alur kerja yang dipicu sederhana dan menjalankannya secara manual agar Anda dapat segera merasakan proses end-to-end-nya.

Langkah 1: Membuat alur kerja yang dipicu

  1. Buka halaman Ruang Kerja di konsol DataWorks. Di bilah navigasi atas, pilih wilayah yang diinginkan. Temukan ruang kerja yang diinginkan dan pilih Shortcuts > Data Studio di kolom Actions.

  2. Di panel navigasi kiri, klik image, lalu klik image > Create Workflow di sebelah kanan Project Directory untuk membuka halaman Create Workflow.

  3. Pada kotak dialog yang muncul, di halaman Create Workflow, atur Scheduling Type menjadi Triggered scheduling. Masukkan Name alur kerja dan klik Confirm untuk membuat alur kerja.

Langkah 2: Mengatur orkestrasi alur kerja dan mengembangkan node

  1. Klik + Add Node di bilah alat untuk membuka daftar node. Seret node Shell dari daftar jenis node di sebelah kiri ke kanvas, masukkan nama, lalu selesaikan pembuatan.

  2. Klik ganda node Shell untuk membuka halaman pengeditan kode, lalu masukkan kode berikut:

    echo "Hello, Trigger Workflow! Current time is ${bizdate}"
  3. Klik tombol Save di bilah alat.

Langkah 3: Debug dan jalankan (lingkungan pengembangan)

  1. Kembali ke kanvas alur kerja dan klik ikon image di bilah alat atas.

  2. Pada kotak dialog yang muncul, masukkan Value Used in This Run untuk alur kerja tersebut (misalnya, jika hari ini 20260310, bizdate harus diganti dengan 20260309).

  3. Setelah beberapa saat, di log eksekusi bagian bawah, Anda dapat melihat status eksekusi node dan output perintah echo.

Langkah 4: Terapkan dan jalankan (lingkungan produksi)

  1. Di kanvas alur kerja, klik tombol Deploy image dan ikuti petunjuk untuk menyelesaikan proses penerapan.

  2. Setelah penerapan berhasil, buka Operation Center > Manually Triggered Task O&M > Manually Triggered Task > Triggered Workflow.

  3. Temukan alur kerja yang baru saja Anda terapkan, lalu klik Run di kolom Operation.

  4. Pada kotak dialog yang muncul, klik Run lagi untuk memicu instans alur kerja di lingkungan produksi. Anda dapat melihat detail eksekusi ini di halaman Manual Instances.

Anda kini telah menguasai penggunaan dasar alur kerja yang dipicu. Selanjutnya, kita akan menjelajahi kemampuan pemicu berbasis event yang lebih canggih.

Contoh lanjutan: Membuat alur kerja yang dipicu oleh event

Skenario 1: File baru tiba di OSS, secara otomatis memicu pemrosesan data

Tujuan: Saat file CSV baru diunggah ke direktori tertentu di OSS, secara otomatis memicu alur kerja yang mencetak path file tersebut.

Langkah 1: Membuat pemicu OSS

  1. Buka Operation Center > Scheduling Settings > Trigger Management.

  2. Klik Create Trigger dan konfigurasikan sebagai berikut:

    Catatan

    Untuk deskripsi parameter lengkap, lihat Pemicu OSS.

    • Trigger Name: Masukkan nama kustom, misalnya oss_new_file_trigger.

    • Applicable Workspace: Pilih ruang kerja target tempat alur kerja berada.

    • Trigger Event Type: Pilih Object Storage Service (OSS).

    • Trigger Event: Pilih oss:ObjectCreated:PutObject (atau event unggah lainnya).

    • Bucket Name: Pilih bucket OSS Anda.

    • File Name: Tentukan path dan format file yang akan dipantau. Wildcard didukung. Misalnya, untuk memantau semua file .csv di direktori input/, masukkan input/*.csv.

    • Role Configuration: Untuk penggunaan pertama kali, lakukan One-Click Authorization dan pilih role bernama DataWorks-EventBridge-OSS-MNS-Role-*************.

      ************* merepresentasikan ID acak 13 digit yang digunakan untuk memastikan keunikan.
  3. Klik Confirm untuk menyelesaikan pembuatan pemicu.

Langkah 2: Membuat dan mengaitkan alur kerja

  1. Ikuti langkah-langkah dalam Panduan cepat: Membuat alur kerja yang dipicu secara manual untuk membuat alur kerja yang dipicu baru bernama process_oss_file_workflow.

  2. Di panel kanan kanvas alur kerja, navigasikan ke Scheduling Settings > Scheduling Policy.

  3. Pada daftar drop-down Trigger, pilih pemicu oss_new_file_trigger yang baru saja Anda buat.

    Setelah memilih pemicu, Anda dapat menggunakan ${workflow.triggerMessage} di tugas internal untuk mendapatkan isi pesan lengkap, atau gunakan ${workflow.triggerMessage.xxx} untuk mendapatkan nilai bidang tertentu dalam isi pesan.

Langkah 3: Mengembangkan node dan mengurai parameter event

  1. Klik + Add Node di bilah alat untuk membuka daftar node. Seret node Shell dari daftar jenis node di sebelah kiri ke kanvas, masukkan nama, lalu selesaikan pembuatan.

  2. Klik ganda node tersebut dan tulis kode untuk mengambil serta mencetak path file dari event pemicu.

    1. Penggunaan umum: Penggunaan parameter berikut berlaku untuk sebagian besar pesan event.

      # Saat pemicu menjalankan alur kerja, info event diteruskan melalui variabel bawaan workflow.triggerMessage
      # Kita bisa mendapatkan path lengkap file yang diunggah melalui ${workflow.triggerMessage.data.oss.object.key}
      echo "========= Start Processing OSS File ========="
      message='${workflow.triggerMessage}'
      echo "Raw Value: ${message}"
      # Ekstrak nama file dari pesan event
      FILE_PATH='${workflow.triggerMessage.data.oss.object.key}'
      echo "A new file has arrived: ${FILE_PATH}"
      # Tambahkan logika pemrosesan spesifik di sini
      echo "========= Finish Processing OSS File ========="
    2. Kasus khusus: Beberapa node, seperti node Shell, memiliki aturan sintaks sendiri. Sebelum node dijalankan, mesin penjadwalan terlebih dahulu mengganti konten pesan ke dalam teks skrip, lalu meneruskannya ke interpreter Shell untuk dieksekusi. Akibatnya, tanda kutip, spasi, dan jeda baris dalam pesan langsung berpartisipasi dalam parsing sintaks Shell. Hal ini dapat menyebabkan spasi atau jeda baris dalam parameter merusak struktur kode asli setelah node mengambil parameter tersebut. Dalam kasus ini, Anda dapat menggunakan heredoc untuk membaca pesan, yang menghindari sebagian besar masalah karakter khusus:

      # Gunakan heredoc untuk menangkap teks mentah yang disubstitusi dari ${workflow.triggerMessage}.
      message=$(cat <<'__DW_TRIGGER_MESSAGE__'
      ${workflow.triggerMessage}
      __DW_TRIGGER_MESSAGE__
      )
      
      # Skenario 1: Mendapatkan seluruh pesan mentah
      printf 'Raw Value: %s\n' "$message"
      
      # Skenario 2: Jika hanya membutuhkan bidang tertentu, gunakan Python untuk mengurai JSON dan mengekstrak nilainya
      dt=$(printf '%s' "$message" | /home/tops/bin/python3 -c 'import json,sys; print(json.load(sys.stdin).get("body",{}).get("dt",""))')
      printf 'dt=%s\n' "$dt"
      Catatan

      ${workflow.triggerMessage}: Mengambil isi pesan event lengkap dalam format JSON. Anda dapat memperoleh format pesan spesifik untuk OSS dari EventBridge > Event Bus > DATAWORKS_TRIGGER_FOR_BUCKET_<OSS_Bucket_Name> > Event Tracing > Event Details.

      Lihat contoh format pesan OSS, yaitu format dari workflow.triggerMessage.

      {
          "datacontenttype": "application/json;charset=utf-8",
          "aliyunaccountid": "1***********9",
          "data": {
              "eventVersion": "1.0",
              "responseElements": {
                  "requestId": "69B1***********C0A8"
              },
              "eventSource": "acs:oss",
              "eventTime": "2026-03-11T05:40:45.000Z",
              "requestParameters": {
                  "sourceIPAddress": "***********"
              },
              "eventName": "ObjectCreated:PostObject",
              "userIdentity": {
                  "principalId": "1***********9"
              },
              "region": "cn-hangzhou",
              "oss": {
                  "bucket": {
                      "name": "******",
                      "arn": "acs:oss:cn-hangzhou:1***********9:******",
                      "virtualBucket": "",
                      "ownerIdentity": "1***********9"
                  },
                  "ossSchemaVersion": "1.0",
                  "object": {
                      "size": 59537,
                      "objectMeta": {
                          "mimeType": "text/csv"
                      },
                      "deltaSize": 0,
                      "eTag": "63***********D32",
                      "key": "input/***********.csv"
                  }
              }
          },
          "subject": "acs:oss:cn-hangzhou:1***********9:dwoss1024/input/******.csv",
          "aliyunoriginalaccountid": "1***********9",
          "source": "acs.oss",
          "type": "oss:ObjectCreated:PostObject",
          "aliyunpublishtime": "2026-03-11T05:40:45.682Z",
          "specversion": "1.0",
          "aliyuneventbusname": "DATAWORKS_TRIGGER_FOR_BUCKET_******",
          "id": "69B1***********0A8",
          "time": "2026-03-11T05:40:45.000Z",
          "aliyunregionid": "cn-hangzhou"
      }

Langkah 4: Debug dan publikasikan

  1. Debug:

    • Kembali ke kanvas alur kerja dan klik tombol Run image.

    • Di kotak input Trigger Message Body, tempel JSON event OSS simulasi. Anda dapat menyalin dan memodifikasi nilai key dari "Contoh Format Pesan" di halaman konfigurasi pemicu. Berikut contoh sederhananya.

      {
        "data": {
          "oss":{
            "object": {
              "key": "input/test_file_20260310.csv" 
            }
          } 
        }
      }
    • Klik Run dan periksa apakah input/test_file_20260310.csv berhasil dicetak di log.

  2. Publikasi: Setelah debug berhasil, klik tombol Publish untuk menerapkan alur kerja ke lingkungan produksi. Pemicu event hanya berlaku di lingkungan produksi.

Langkah 5: Verifikasi di produksi

  1. Gunakan konsol OSS atau alat klien untuk mengunggah file CSV ke bucket dan path (misalnya direktori input/) yang Anda konfigurasikan di pemicu.

    Bagaimana cara memverifikasi bahwa pemicu event berfungsi?

    Buka https://eventbridge.console.alibabacloud.com/<regionId>/event-bus/DATAWORKS_TRIGGER_FOR_BUCKET_<OssBucketName>/event-tracing untuk mengkueri daftar event yang baru saja dipicu. Anda juga dapat mengklik Event Details untuk melihat pesan pemicu spesifik (yaitu workflow.triggerMessage).

    Daftar event menampilkan catatan pemicu dengan sumber event Object Storage Service (OSS) / acs.oss dan jenis event oss:ObjectCreated:PostObject.

  2. Buka DataWorks Operation Center > Manually Triggered Task O&M > Manually Triggered Task > Triggered Workflow. Alur kerja process_oss_file_workflow yang berhasil dipublikasikan akan muncul.

  3. Tunggu sejenak, lalu buka DataWorks Operation Center > Manually Triggered Task O&M > Triggered Workflow Instance. Instans alur kerja baru akan dipicu secara otomatis. Klik untuk melihat log-nya dan verifikasi bahwa path file diproses dengan benar.

    ===== Start Processing 0SS File =====
    Raw Value: {"datacontenttype":"application/json;charset=utf-8","aliyunaccountid":"1162423445433459","data":{"eventVersion":"1.0","responseElements":{"requestId":"69B1083F7A439F343040ABCD"},
    "eventSource":"acs:oss","eventTime":"2026-03-11T06:14:23.000Z","requestParameters":{"sourceIPAddress":"140.205.11.13"},"eventName":"0bjectCreated:Post0bject","userIdentity":{"principalId":"1162423445433459"},
    "region":"cn-hangzhou","oss":{"bucket":{"name":"dwoss1024","arn":"acs:oss:cn-hangzhou:1162423445433459:dwoss1024","virtualBucket":"","ownerIdentity":"1162423445433459"},"ossSchemaVersion":"1.0","object":{"size":59537,"objectMeta":
    {"mimeType":"text/csv"},"deltaSize":0,"eTag":"63B4BA5A45AEFC679B9A917E8DDF0D32","key":"input/2013-2020-global-PS4-game-sales.csv"}}},"subject":"acs:oss:cn-hangzhou:1162423445433459:dwoss1024/input/2013-2020-global-PS4-game-sales.csv","aliyunoriginalaccountid":"1162423445433459","source":"acs.oss","type":"oss:0bjectCreated:Post0bject","aliyunpublishtime":"2026-03-11T06:14:23.959Z","specversion":"1.0","aliyuneventbusname":"DATAW0RKS_TRIGGER_F0R_BUCKET_dwoss1024","id":"69B1083F7A439F343040ABCD","time":"2026-03-11T06:14:23.000Z","aliyunregionid":"cn-hangzhou"}A new file has arrived: input/2013-2020-global-PS4-game-sales.csv
    ====== Finish Processing 0SS File =========
Penting

Praktik terbaik: Desain idempoten

Karena faktor seperti fluktuasi jaringan, event OSS mungkin dikirim lebih dari sekali. Untuk menghindari pemrosesan data duplikat, kami menyarankan Anda menerapkan idempotensi dalam logika bisnis Anda. Pendekatan umum adalah memeriksa tabel catatan (seperti tabel MaxCompute) sebelum memproses file. Gunakan ETag file atau path uniknya sebagai pengenal dan lewati file tersebut jika sudah diproses sebelumnya.

Skenario 2: Kedatangan pesan Kafka mendorong komputasi real-time

Tujuan: Pantau log perilaku pengguna di Kafka. Saat pesan baru tiba, picu alur kerja untuk menguraikannya dan mengeksekusi logika berbeda berdasarkan isinya.

Langkah 1: Membuat pemicu Kafka

  1. Buka Operation Center > Scheduling Settings > Trigger Management, lalu klik Create Trigger.

  2. Konfigurasikan pengaturan berikut:

    • Trigger Name: kafka_user_action_trigger.

    • Trigger Event Type: Pilih ApsaraMQ for Kafka.

    • Kafka Instance dan Topic: Pilih instance dan topik yang ingin Anda pantau.

    • ConsumerGroupId: Kami menyarankan Anda memilih Quick Create. Sistem secara otomatis menghasilkan ID kelompok konsumen untuk menghindari konflik dengan aplikasi lain.

    • Key (opsional): Anda dapat menentukan kunci pesan. Hanya pesan yang kuncinya persis cocok dengan nilai yang ditentukan yang akan memicu alur kerja.

  3. Klik OK.

Langkah 2: Membuat dan mengaitkan alur kerja

  1. Ikuti langkah-langkah dalam Panduan cepat: Membuat alur kerja yang dipicu secara manual untuk membuat alur kerja yang dipicu bernama handle_user_action_workflow.

  2. Di panel kanan kanvas alur kerja, pilih Scheduling Settings > Scheduling Policy.

  3. Pada daftar drop-down Trigger, pilih pemicu kafka_user_action_trigger yang baru saja Anda buat.

    Setelah memilih pemicu, Anda dapat menggunakan ${workflow.triggerMessage} di node internal untuk mengambil isi pesan lengkap, atau gunakan ${workflow.triggerMessage.xxx} untuk mengambil nilai bidang tertentu dalam isi pesan.

  4. (Penting) Karena pesan mungkin tiba dengan frekuensi tinggi, kami menyarankan Anda mengonfigurasi Maximum Parallel Instances for Internal Tasks, misalnya 100, untuk mencegah lonjakan pesan tiba-tiba membebani sumber daya penjadwalan.

Langkah 3: Mengembangkan node dan mengurai JSON bersarang

Asumsikan bahwa bidang value dari pesan Kafka berupa string JSON dengan format berikut: {"user_id": "1001", "action_type": "login", "timestamp": 1688888888}.

  1. Klik + Add Node di bilah alat untuk membuka daftar node. Seret node Python dari daftar jenis node di sebelah kiri ke kanvas.

  2. Tulis kode untuk mengurai pesan tersebut. Karena bidang value itu sendiri berupa string, Anda perlu melakukan penguraian JSON sekunder dalam kode.

    import json
    # 1. Gunakan variabel bawaan untuk mendapatkan bidang value dari pesan Kafka, yang berupa string JSON
    message_value_str = '${workflow.triggerMessage.value}'
    print(f'Received raw message value string: ${message_value_str}')
    try:
        # 2. Uraikan string ini menjadi objek JSON (dictionary) di Python
        message_data = json.loads(message_value_str)
        user_id = message_data.get("user_id")
        action_type = message_data.get("action_type")
        print(f"Successfully parsed message. User ID: ${user_id}, Action: ${action_type}")
        # 3. Eksekusi logika bisnis berbeda berdasarkan action_type
        if action_type == 'login':
            # o.run_sql(f"INSERT OVERWRITE TABLE user_login_record PARTITION(ds='{bizdate}') VALUES ('{user_id}');")
            print("Processing login action...")
        elif action_type == 'purchase':
            print("Processing purchase action...")
        else:
            print("Unknown action type.")
    except json.JSONDecodeError as e:
        print(f"Error decoding JSON: {e}")
        # Logika penanganan pengecualian, misalnya menulis pesan error ke tabel log khusus
        raise e # Naikkan pengecualian untuk membuat node gagal demi troubleshooting yang lebih mudah

Langkah 4: Debug dan publikasikan

  1. Debugging:

    • Kembali ke kanvas alur kerja dan klik tombol Run image.

    • Di Trigger Message Body, tempel event Kafka simulasi. Perhatikan bahwa bidang value berupa string JSON yang telah di-escape.

      {
        "topic": "user-behavior-topic",
        "key": "some-key",
        "value": "{\"user_id\": \"1001\", \"action_type\": \"login\", \"timestamp\": 1688888888}"
      }
    • Jalankan alur kerja dan periksa log untuk memastikan node Python dapat mengurai dengan benar user_id dan action_type.

  2. Publikasi: Setelah debugging berhasil, publikasikan alur kerja ke lingkungan produksi.

Langkah 5: Verifikasi produksi

  1. Kirim pesan dengan format yang sesuai ke topik Kafka yang Anda konfigurasikan.

    Di halaman detail Topik, klik Quick Experience Message Sending and Receiving dan pilih metode pengiriman Console. Masukkan some-key di Message Key, masukkan {"user_id": "1001", "action_type": "login", "timestamp": 1688888888} di Message Content, atur Send to Specified Partition menjadi No, lalu klik Send. Jika halaman menampilkan Message sent successfully, verifikasi berhasil.

  2. Buka DataWorks Operation Center > Manually Triggered Task O&M > Manually Triggered Task > Triggered Workflow. Alur kerja handle_user_action_workflow yang berhasil dipublikasikan akan muncul.

  3. Di Operation Center > Manually Triggered Task O&M > Manual instance > Triggered Workflow Instance, periksa apakah instans alur kerja baru telah dipicu dan tinjau log eksekusinya.

    2026-xxx    14:55:40 INFO ========================================================================
    Received raw message value string: ${"user_id": "1001", "action_type": "login", "timestamp": 1688888888}
    Successfully parsed message. User ID: $1001, Action: $login
    Processing login action...
    2026-xxx    14:55:40 INFO ========================================================================
Penting

Praktik terbaik: Konkurensi dan pengurutan

  • Kontrol konkurensi: Pastikan Anda menetapkan jumlah maksimum instans paralel yang wajar untuk menangani lonjakan pesan.

  • Jaminan pengurutan: Penjadwalan DataWorks tidak menjamin pemrosesan pesan secara ketat berurutan. Jika Anda perlu memastikan pesan untuk pengguna yang sama (atau partisi) diproses berurutan, terapkan kunci terdistribusi dalam kode bisnis Anda (misalnya berbasis Redis atau MaxCompute), atau serahkan logika pemrosesan ke mesin komputasi yang menjamin konsumsi berurutan berdasarkan partisi (seperti Flink).

Desain dan konfigurasi inti

Orkestrasi alur kerja

Proses orkestrasi inti untuk alur kerja yang dipicu mirip dengan alur kerja terjadwal. Untuk informasi lebih lanjut, lihat Orkestrasi node/alur kerja.

Parameter penjadwalan

Di panel Scheduling Settings di sisi kanan kanvas alur kerja, Anda dapat menetapkan parameter global untuk alur kerja. Semua node dalam alur kerja dapat mereferensikan parameter ini.

  • Metode referensi: Di kode node, referensikan parameter alur kerja dengan format ${workflow.parameter_name}.

  • Prioritas parameter: Parameter di DataWorks mengikuti aturan penggantian hierarkis. Urutan prioritasnya adalah: Parameter node > Parameter alur kerja.

    Untuk informasi lebih lanjut tentang parameter, lihat Desain dan alur parameter.

Kebijakan penjadwalan

Saat beberapa alur kerja atau tugas dipicu secara bersamaan dan sumber daya sistem menjadi bottleneck, Anda dapat menggunakan Priority dan Weighting Strategy untuk menerapkan penjadwalan sumber daya cerdas dan memastikan tugas paling penting dieksekusi terlebih dahulu.

  • Lindungi bisnis inti: Tetapkan prioritas lebih tinggi untuk alur kerja bisnis inti agar selalu dijalankan sebelum alur kerja non-inti lainnya.

  • Kurangi durasi jalur kritis: Dalam instans alur kerja yang sama, dengan menggunakan Priority weighting strategy, Anda dapat memengaruhi urutan eksekusi node. Misalnya, dengan strategi Downstream weighting, node pada jalur kritis yang memiliki lebih banyak dependensi hulu menerima bobot dinamis lebih tinggi dan dieksekusi terlebih dahulu, sehingga secara efektif mengurangi durasi eksekusi alur kerja secara keseluruhan.

    Item konfigurasi

    Deskripsi

    Priority

    Menentukan tingkat prioritas absolut instans alur kerja dalam antrian penjadwalan. Tingkat yang tersedia adalah 1, 3, 5, 7, dan 8 (semakin besar angkanya, semakin tinggi prioritasnya). Tugas atau alur kerja dengan prioritas lebih tinggi selalu mendapatkan sumber daya penjadwalan sebelum yang berprioritas lebih rendah.

    Priority weighting strategy

    Menentukan cara menghitung bobot dinamis setiap node (tugas) dalam alur kerja pada tingkat prioritas yang sama. Node dengan bobot lebih tinggi dieksekusi terlebih dahulu.

    • Tanpa pembobotan: Semua node memiliki bobot garis dasar tetap yang sama.

    • Pembobotan downstream: Bobot node disesuaikan secara dinamis—semakin banyak dependensi upstream yang dimiliki suatu node, semakin tinggi bobotnya. Strategi ini memprioritaskan eksekusi node pada jalur kritis dalam Grafik asiklik terarah (DAG). Bobot dihitung sebagai: nilai bobot awal + jumlah prioritas dari semua node upstream.

    Maximum Parallel Instances for Internal Tasks

    Mengontrol jumlah maksimum instans alur kerja ini yang dapat berjalan secara konkuren. Ini digunakan untuk kontrol konkurensi dan perlindungan sumber daya. Saat jumlah instans yang sedang berjalan mencapai batas, instans baru yang dipicu selanjutnya akan masuk ke status menunggu. Anda dapat mengaturnya ke Allowed atau menentukan nilai maksimum kustom (hingga 100.000).

    Catatan

    Jika Anda mengatur batas melebihi kapasitas maksimum kelompok sumber daya, bottleneck konkurensi aktual ditentukan oleh batas fisik kelompok sumber daya tersebut.

Sistem prioritas di DataWorks mengikuti aturan penggantian hierarkis: Spesifikasi runtime > Konfigurasi tingkat node > Konfigurasi tingkat alur kerja.

  1. Konfigurasi tingkat alur kerja (garis dasar): Dikonfigurasi di Scheduling Policy alur kerja dan berfungsi sebagai pengaturan default untuk semua node.

  2. Konfigurasi tingkat node (lokal): Di Scheduling Settings > Scheduling Policy node individual dalam alur kerja, Anda dapat menetapkan Priority lebih tinggi untuk node tertentu, yang menggantikan pengaturan tingkat alur kerja.

  3. Spesifikasi runtime (sementara): Ditentukan melalui toggle Runtime Priority Reset saat Anda memicu eksekusi secara manual di Operation and Maintenance Center. Konfigurasi ini memiliki prioritas tertinggi, hanya berlaku untuk eksekusi saat ini, dan tidak mengubah konfigurasi permanen apa pun.

O&M dan manajemen

  • Pemantauan instans: Semua instans yang dipicu atau dijalankan secara manual dapat dilihat, dijalankan ulang, dihentikan, dan ditangani masalahnya di halaman Operation Center > Manually Triggered Task O&M > Manual Instance.

  • Pemantauan dan peringatan: Anda dapat membuat aturan kustom di Operation Center > Monitoring and Alerting > Rule Management. Setelah Anda mengaktifkan Monitor Triggered Workflows, aturan tersebut hanya memantau instans alur kerja yang dipicu. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan, lihat Manajemen aturan.

  • Klon alur kerja: Klik kanan alur kerja di Project Directory, lalu pilih Clone untuk membuat salinan cepat yang mencakup semua node dan dependensinya. Untuk informasi selengkapnya, lihat Klon alur kerja untuk alur kerja terjadwal.

  • Manajemen versi: Di panel Versions di sisi kanan kanvas alur kerja, Anda dapat melihat, membandingkan, dan memulihkan versi historis alur kerja. Untuk informasi lebih lanjut, lihat Manajemen versi untuk alur kerja terjadwal.

Batasan penggunaan dan pertimbangan

  • Lingkungan berlaku: Mekanisme pemicu event hanya berlaku setelah alur kerja diterapkan ke lingkungan produksi (Operation Center).

  • Jumlah node: Satu alur kerja mendukung hingga 400 node. Kami menyarankan agar jumlahnya tetap di bawah 100 untuk menyederhanakan pemeliharaan.

  • Pembatasan kelompok sumber daya: Node yang dibuat dalam alur kerja yang dipicu hanya dapat menggunakan kelompok sumber daya arsitektur tanpa server.

  • Batas konkurensi: Jumlah maksimum instans paralel adalah 100.000, tetapi konkurensi aktual dibatasi oleh spesifikasi kelompok sumber daya penjadwalan yang Anda beli.

  • Penjadwalan tingkat node: Saat Anda mengonfigurasi penjadwalan di tingkat node, hanya Priority yang didukung. Priority Weighting Policy tidak didukung.

  • Jenis node yang tidak didukung: EMR Spark Streaming, Flink SQL Streaming, Flink JAR Streaming, Flink Python Streaming, dan node pemeriksaan dependensi tidak dapat digunakan dalam alur kerja yang dipicu. Jenis node ini hanya dapat dikembangkan dan dijalankan sebagai node mandiri.

Referensi