Alur kerja terjadwal mengotomatisasi pemrosesan data berulang dengan menghasilkan instans tugas sesuai jadwal yang telah ditentukan (harian, bulanan, dan lainnya). Setiap tugas hanya dijalankan ketika waktu terjadwalnya tiba dan semua dependensi hulu terpenuhi, sehingga menjaga stabilitas dan keteraturan pipa data yang kompleks. Kasus penggunaan umum meliputi:
Otomatisasi pemrosesan data berulang: Sinkronisasi, pembersihan, atau agregasi data dalam interval harian, per jam, atau mingguan.
Membangun alur dependensi DAG kompleks: Integrasi visual node seperti MaxCompute SQL, Hologres, EMR, dan Python; definisikan dependensi hulu dan hilir; serta aktifkan penjadwalan otomatis.
Mengelola dan menjadwalkan beberapa subtugas secara terpusat: Kelompokkan tugas-tugas yang terkait secara logis ke dalam satu alur kerja untuk dijadwalkan, dipelihara, dan dipantau sebagai satu kesatuan.
Mulai cepat
Fitur ini tersedia di versi baru DataWorks Data Studio. Untuk mempelajari cara membedakan antara versi baru dan lama, lihat Membedakan antara Data Studio versi baru dan lama.
Bagian ini memandu Anda melalui alur kerja terjadwal siap jalankan. Anda akan membangun pipa sederhana di mana node virtual (titik awal) memicu node MaxCompute SQL (untuk pemrosesan data). Alur kerja ini secara otomatis menghitung jumlah total pesanan dari hari sebelumnya dan menulis hasilnya ke tabel setiap pagi.
Langkah 1: Siapkan mesin komputasi dan data
Di ruang kerja target, bind mesin komputasi MaxCompute.
Di MaxCompute, buat tabel berikut untuk menyimpan hasil.
-- Buat tabel hasil sederhana CREATE TABLE IF NOT EXISTS dw_order_count_test ( order_date STRING, total_count BIGINT ) PARTITIONED BY (ds STRING); -- Dipartisi berdasarkan ds untuk menyimpan hasil agregasi harian
Langkah 2: Buat alur kerja terjadwal
Buka halaman Workspaces di Konsol DataWorks. Di bilah navigasi atas, pilih wilayah yang diinginkan. Temukan ruang kerja yang diinginkan dan pilih di kolom Actions.
Jika tombolnya berlabel Data Development, itu membuka Data Studio versi lama. Jangan klik tombol tersebut.
Klik ikon
di bilah navigasi kiri, lalu di sebelah kanan Project Directory, klik untuk membuka halaman Create Workflow.Di kotak dialog Create Workflow, atur Scheduling Type menjadi Periodic Scheduling, masukkan informasi yang diperlukan (misalnya, atur Name menjadi
minimal_daily_demo), lalu selesaikan pembuatan.
Langkah 3: Orkestrasi alur kerja: Seret node dan hubungkan dependensi
Di kanvas alur kerja, seret Zero-Load Node dari panel komponen kiri dan beri nama
start_node.Zero-Load Node hanya digunakan untuk menentukan titik awal proses bisnis dan tidak benar-benar dijalankan.
Seret node MaxCompute SQL dan beri nama
count_orders.Klik lingkaran di bagian bawah
start_nodedan seret garis ke bagian atascount_ordersuntuk membangun pipa pemrosesan sederhana.
Langkah 4: Kembangkan kode node
Kami menyarankan Anda mengaktifkan Data Agent untuk mendapatkan saran penyelesaian kode cerdas dan meningkatkan efisiensi pengembangan.
Klik dua kali node
count_ordersuntuk membuka editor kode node.Tulis kode logika bisnis untuk node tersebut (di sini digunakan data statistik simulasi).
-- bizdate adalah variabel penjadwalan yang telah ditentukan yang maknanya perlu dispesifikasikan dalam konfigurasi penjadwalan INSERT OVERWRITE TABLE dw_order_count_test PARTITION (ds='${bizdate}') SELECT '${bizdate}' as order_date, COUNT(*) as total_count FROM (SELECT 1 as id UNION ALL SELECT 2 as id) t; -- Data simulasiUntuk informasi lebih lanjut tentang pengembangan node, lihat Mengembangkan node MaxCompute SQL.
Klik tombol Save di bagian atas editor node untuk menyimpan konfigurasi.
Langkah 5: Konfigurasi jadwal dan parameter
Kembali ke alur kerja. Di sisi kanan kanvas alur kerja, klik tab Scheduling Settings > Scheduling time:
Atur Scheduling Frequency menjadi Day.
Atur Scheduling time menjadi
00:05(yaitu pukul 00:05 setiap hari).
Di sisi kanan editor node
count_orders, konfigurasikan . Tambahkan parameter dengan Parameter name diatur kebizdatedan Parameter Value diatur ke$[yyyymmdd-1](ini merepresentasikan tanggal saat ini dikurangi satu hari, yaitu hari sebelumnya).
Langkah 6: Debug node tunggal dan seluruh alur kerja
count_ordersdebugging node:Konfigurasi parameter debug: Klik Debug Configuration di sisi kanan halaman pengeditan node.
Di Compute Resource, pilih sumber daya komputasi MaxCompute yang disiapkan di Langkah 1.
Di Script Parameters, masukkan Value Used in This Run. Nilai default-nya adalah hari sebelum tanggal saat ini.
Jalankan tugas debug: Klik tombol Run di bilah alat. Node dijalankan dengan parameter debug yang Anda konfigurasikan di Debug Configuration.
Setelah hasil eksekusi sesuai ekspektasi, klik Sync to Scheduling di pojok kanan atas untuk menyinkronkan konfigurasi eksekusi ke pengaturan jadwal.
Debugging alur kerja:
Kembali ke kanvas alur kerja dan klik ikon
di bilah alat atas.Di kotak dialog yang muncul, masukkan Value Used in This Run untuk alur kerja (misalnya, jika hari ini 20260120,
bizdateharus diganti dengan20260119).
Langkah 7: Terapkan ke lingkungan produksi
Kembali ke alur kerja dan klik tombol
di bilah alat atas.Di panel penerapan, sistem melakukan pemeriksaan dependensi dan konfigurasi. Setelah Anda memastikan semuanya benar, klik Start Release Production dan atur metode penerapan ke Full Publishing.
Setelah penerapan berhasil, buka Operation and Maintenance Center untuk memeriksa apakah alur kerja muncul dalam daftar tugas terjadwal.
Anda telah menyelesaikan pengembangan alur kerja terjadwal sederhana. Alur kerja ini dijalankan secara otomatis setiap hari pada dini hari.
Desain inti dan konfigurasi
Orkestrasi alur kerja menggunakan kanvas DAG visual untuk mengorganisasi tugas dengan node kontrol (seperti node join dan branch) dan node interaksi (seperti pemicu HTTP), meneruskan konteks melalui parameter penjadwalan, serta menentukan urutan eksekusi dan kondisi pemicu melalui dependensi penjadwalan.
Orkestrasi node/alur kerja
Orkestrasi proses sederhana
Pengembangan data biasanya melibatkan pipa kompleks mulai dari integrasi multi-sumber hingga pemodelan berlapis (seperti pembangunan lapisan ODS dan DWD). DataWorks menggunakan orkestrasi visual untuk memecah logika kompleks menjadi sub-node fungsional dan membangun pipa pemrosesan terstandarisasi. Model berbasis directed acyclic graph (DAG) ini memungkinkan alur otomatis berbasis state-driven: ketika node hulu berhasil, ia langsung memicu tugas hilir, memastikan pemrosesan end-to-end yang linier, stabil, dan teratur. Pada tahap ini, orkestrasinya merupakan bentuk paling sederhana — DAG yang statis, linier, dan tidak dapat dibalik.
Orkestrasi kompleks: Kontrol alur
Node branch/join dan node for-each/do-while hanya tersedia di DataWorks Edisi Standar dan yang lebih tinggi.
Node kontrol alur meningkatkan pengembangan data dari integrasi tugas ke orkestrasi bisnis. Node ini melampaui model dependensi linier tunggal dari DAG tradisional dengan menambahkan logika lanjutan melalui serangkaian node kontrol yang presisi.
Nama node | Deskripsi node |
Virtual node | Node virtual tidak melakukan komputasi aktual. Node ini mengelola beberapa subtugas secara terpusat dan berfungsi sebagai node awal alur kerja. Misalnya, dalam alur kerja analisis pesanan produk, node virtual bernama Catatan Untuk pengembangan node mandiri, Anda perlu menggunakan node root ruang kerja sebagai node dependensi awal. |
Branch node | Mengarahkan ke logika hilir yang berbeda berdasarkan hasil hulu. Misalnya, jika total pesanan harian adalah 0, picu node peringatan dan hentikan komputasi selanjutnya; jika total lebih besar dari 0, lanjutkan ke node pembuatan laporan. |
Join node | Menggabungkan hasil eksekusi beberapa cabang untuk menyelesaikan masalah dependensi hilir. Misalnya, tugas penyelesaian keuangan bergantung pada dua cabang: "penyelesaian normal" dan "logika penyesuaian". Node join memastikan arsip laporan akhir dipicu selama salah satu cabang berhasil diselesaikan. |
For-each node | Iterasi melalui set hasil dari node assignment dan menjalankan operasi hilir pada setiap elemen. Misalnya, untuk 31 nama provinsi yang diperoleh oleh assignment node, node for-each menjalankan tugas pembersihan data sebanyak 31 kali, memproses partisi data satu provinsi setiap kali. |
Do-while node | Ulangi eksekusi hingga suatu kondisi terpenuhi. Misalnya, panggil API eksternal setiap 10 menit untuk mengecek status sinkronisasi data. Jika nilai yang dikembalikan adalah "Processing", loop dilanjutkan. Jika nilainya "Completed", loop keluar dan pemrosesan selanjutnya dimulai. |
Untuk informasi lebih lanjut, lihat Node umum di Data Studio.
Orkestrasi kompleks: Kesadaran status dan integrasi eksternal
Node check hanya tersedia di DataWorks Edisi Profesional dan yang lebih tinggi. Node lainnya hanya tersedia di DataWorks Edisi Perusahaan.
Node-node ini mengevaluasi apakah sumber daya fisik atau tugas sebelumnya yang diperlukan sudah siap, serta mengintegrasikan dengan sistem pihak ketiga untuk menjembatani komunikasi antara platform data dan sistem bisnis.
Nama node | Deskripsi node |
HTTP trigger | Menerima permintaan HTTP dari sistem eksternal untuk memicu tugas DataWorks. Misalnya, setelah sistem bisnis hulu menyelesaikan penutupan harian, sistem tersebut memanggil API HTTP untuk memicu pipa pemrosesan data T+1 DataWorks. |
Check node | Memantau apakah sumber daya eksternal (seperti file OSS atau partisi MaxCompute) sudah siap, dan memicu tugas hilir begitu sumber daya tersebut tersedia. Misalnya, node check menunggu file log harian muncul di OSS, lalu memulai tugas penguraian log. |
Dependency check node | Menggunakan polling aktif, kombinasi logika, dan pemeriksaan kesiapan dependensi lintas siklus atau lintas ruang kerja untuk memicu tugas hilir setelah semua kondisi terpenuhi. Misalnya, node terjadwal harian menunggu keberhasilan penyelesaian semua 24 tugas per jam dari hari sebelumnya. |
Untuk informasi lebih lanjut, lihat Node umum di Data Studio.
Enkapsulasi sub-alur kerja untuk penggunaan ulang logika
Anda dapat mengenkapsulasi pipa subtugas yang stabil dan dapat digunakan kembali ke dalam sub-alur kerja melalui node SUB_PROCESS, yang kemudian dapat dirujuk oleh alur kerja lain. Misalnya, lini bisnis e-commerce, iklan, dan IoT dapat berbagi pipa standar untuk pembersihan data, statistik ringkasan, dan pemeriksaan Kualitas Data.
Prosedur:
Di alur kerja
child_workflowyang akan dirujuk, atur properti General alur kerja menjadi Can be cited. Ini mengubah alur kerja menjadi sub-alur kerja.Di alur kerja utama, seret node SUB_PROCESS dan atur alur kerja yang dirujuk menjadi
child_workflow.
Sub-alur kerja memiliki batasan berikut:
Internalitas: Alur kerja dan semua node internalnya tidak boleh memiliki dependensi apa pun terhadap tugas eksternal.
Isolasi: Alur kerja tidak dapat diatur langsung sebagai dependensi oleh tugas eksternal apa pun.
Pemicuan pasif: Setelah diterapkan, alur kerja tidak menghasilkan instans terjadwal secara otomatis. Alur kerja hanya dijalankan ketika dipanggil oleh node
SUB_PROCESSdi alur kerja lain.Untuk informasi lebih lanjut, lihat Membuat sub-alur kerja.
Rekomendasi pemisahan dan desain modular alur kerja
Untuk menjaga kemudahan pemeliharaan dan kinerja alur kerja, pisahkan alur kerja besar yang memiliki lebih dari 100 node:
Pisahkan berdasarkan domain bisnis: Pisahkan pipa pemrosesan untuk topik bisnis berbeda (seperti transaksi, pengguna, dan produk) ke dalam alur kerja terpisah.
Gunakan SUB_PROCESS untuk mengenkapsulasi logika umum: Enkapsulasi langkah pemrosesan umum dan dapat digunakan kembali (seperti pembersihan dan format data) sebagai alur kerja yang dapat dirujuk.
Pengaturan dependensi penjadwalan
Dependensi penjadwalan menghubungkan tugas-tugas yang terisolasi menjadi pipa produksi data yang teratur melalui dua kondisi: pemenuhan waktu terjadwal dan keberhasilan hulu. Saat Anda mengorkestrasikan node dalam alur kerja, dependensi penjadwalan dibuat secara otomatis. Anda juga dapat mengonfigurasi dependensi yang lebih kompleks melalui pengaturan dependensi penjadwalan.
Untuk informasi lebih lanjut, lihat Mengonfigurasi dependensi penjadwalan.
Dependensi tingkat alur kerjaGunakan dependensi tingkat alur kerja ketika seluruh alur kerja harus menunggu tugas lain (alur kerja lain atau node mandiri) selesai sebelum dimulai. Ini cocok untuk skenario di mana alur kerja bertindak sebagai modul bisnis independen. Misalnya, alur kerja penjualan menunggu output dari alur kerja data dasar sebelum dimulai. | Dependensi tingkat nodeGunakan dependensi tingkat node ketika node tertentu dalam alur kerja harus menunggu tugas eksternal di luar alur kerja saat ini selesai. Ini memungkinkan orkestrasi lintas alur kerja yang detail halus. Misalnya, node ringkasan dalam alur kerja laporan menunggu node tertentu di sistem keuangan eksternal menghasilkan output. Kami menyarankan mengonfigurasi dependency check node di hulu untuk memastikan tugas yang diandalkan selesai tepat waktu. |
Dependensi lintas siklusDependensi lintas siklus berarti instans siklus saat ini dari tugas bergantung pada instans dari siklus berbeda, mendukung dependensi diri pada node yang sama atau dependensi lintas node. Misalnya, tugas yang menggunakan INSERT OVERWRITE untuk menimpa partisi dalam tabel, atau skenario yang melibatkan perhitungan kumulatif. Setelah dependensi diri diaktifkan, instans hari ini harus menunggu instans hari sebelumnya berhasil sebelum dapat dijalankan. | Dependensi lintas ruang kerjaUntuk bergantung pada tugas di ruang kerja DataWorks lain, identifikasi node secara unik menggunakan nama ruang kerja dan Output Name, Name, atau ID node tersebut. Ini cocok untuk kolaborasi data lintas departemen dan lintas proyek. Misalnya, tugas di ruang kerja pemasaran merujuk data kunci dari ruang kerja akuntansi. |
Desain dan alur parameter
Parameter ruang kerja hanya tersedia di DataWorks Edisi Profesional dan yang lebih tinggi.
DataWorks Data Studio mendukung empat tingkat penerusan parameter dan memungkinkan transfer data dinamis lintas node yang fleksibel melalui parameter konteks node. Diurutkan dari cakupan terendah ke tertinggi:
Parameter nodeSaat kode SQL yang sama perlu memproses data partisi berbeda setiap hari, gunakan parameter node untuk menentukan tanggal secara dinamis. Konstanta, variabel bawaan, dan ekspresi waktu kustom didukung. Untuk informasi lebih lanjut, lihat Mengonfigurasi parameter penjadwalan. | Parameter konteksMeneruskan nilai secara dinamis ke node hilir melalui parameter output hulu. Konstanta, variabel, dan hasil eksekusi hulu semuanya didukung. Untuk informasi lebih lanjut, lihat Mengonfigurasi parameter konteks. |
Parameter alur kerjaSaat puluhan node dalam alur kerja perlu berbagi pengenal bisnis tertentu, parameter alur kerja berlaku untuk semua node dalam alur kerja dan menghilangkan kebutuhan untuk memodifikasi parameter node satu per satu. Untuk informasi lebih lanjut, lihat Parameter alur kerja. Catatan Sub-alur kerja dalam alur kerja dapat langsung merujuk parameter alur kerja. | Parameter ruang kerjaSaat kode dijalankan di lingkungan berbeda, nama database dan jalur sumber daya biasanya berbeda. Parameter tingkat ruang kerja membedakan antar lingkungan dan berlaku untuk semua node di ruang kerja tersebut. Misalnya, definisikan parameter ruang kerja Untuk informasi lebih lanjut, lihat Mengonfigurasi parameter ruang kerja. |
Pengaturan jadwal
Perbedaan utama antara alur kerja terjadwal dan proses bisnis versi lama adalah bahwa alur kerja mengatur jadwal secara keseluruhan, sedangkan proses bisnis hanya merupakan pengelompokan fisik dan tidak mendukung pengaturan jadwal secara keseluruhan.
Jadwal diatur pada tingkat alur kerja. Node internal hanya dapat mengatur waktu eksekusi tunda, yang dihitung dengan menambahkan penundaan ke waktu terjadwal yang ditentukan oleh alur kerja.
Dimensi | Konfigurasi tingkat alur kerja | Perilaku tingkat node internal |
Atribut waktu | Waktu absolut (misalnya, 02:00) | Waktu relatif (penundaan berdasarkan waktu penjadwalan alur kerja) |
Atribut siklus | Menentukan siklus harian/per jam/per menit/mingguan/bulanan/tahunan | Mewarisi siklus alur kerja dan tidak dapat dimodifikasi |
Logika pemicu | Kedatangan waktu fisik + keberhasilan hulu | Waktu fisik + waktu tunda + keberhasilan hulu |
Debugging dan eksekusi
Setelah menyelesaikan pengembangan node dan alur kerja, debug node individual dan jalankan seluruh alur kerja untuk memverifikasi kebenaran sebelum penerapan.
Debugging node tunggal
Debugging node tunggal memverifikasi logika kode dalam satu node, seperti memvalidasi pernyataan SQL, skrip Python, atau tugas sinkronisasi Data Integration. Mode ini hanya menjalankan node saat ini tanpa memicu dependensi hulu atau hilir.
Di panel Debug Configuration di sisi kanan node, konfigurasikan parameter berikut:
Nama parameter
Deskripsi
Compute resource
Pilih compute resource yang terkait. Jika tidak tersedia compute resource, pilih Create Compute Resource dari daftar drop-down.
PentingPastikan compute resource dan kelompok sumber daya terhubung. Untuk informasi lebih lanjut, lihat Konektivitas jaringan.
Resource group
Pilih kelompok sumber daya yang telah lulus uji konektivitas saat compute resource dikaitkan. Beberapa node mendukung konfigurasi paket dependensi pada kelompok sumber daya untuk memperluas lingkungan runtime.
(Opsional) Dataset
Beberapa node (seperti Shell dan Python) mendukung memasang dataset untuk mengakses data tidak terstruktur yang disimpan di OSS atau NAS.
(Opsional) Script parameters
Saat Anda mengonfigurasi konten node dan mendefinisikan variabel menggunakan format
${parameter_name}, Anda perlu mengonfigurasi Parameter name dan Parameter Value di Script Parameters. Saat runtime, variabel diganti secara dinamis dengan nilai aktual. Untuk informasi lebih lanjut, lihat Mengonfigurasi parameter penjadwalan.(Opsional) Associated role
Beberapa node (seperti Shell dan Python) mendukung mengonfigurasi associated roles untuk mengakses sumber daya layanan Alibaba Cloud lainnya.
Di bilah alat di atas node, klik Save lalu Run tugas node.
Lihat log runtime dan hasil eksekusi di bagian bawah node.
Debugging alur kerja
Debugging alur kerja memverifikasi apakah dependensi data, penerusan parameter, dan urutan eksekusi lintas beberapa node dalam pipa sudah benar. Setelah debugging node tunggal, Anda dapat melakukan debugging pada sebagian pipa atau seluruh alur kerja.
Di halaman kanvas DAG alur kerja, klik tombol Run di bilah alat atas. Anda juga dapat memilih node, klik kanan, lalu pilih Run to this node atau Run from this node untuk melakukan verifikasi parsial.
Di kotak dialog yang muncul, tetapkan nilai sementara untuk semua variabel node dalam alur kerja (seperti
${bizdate}) untuk eksekusi debug ini.Sistem mengeksekusi node secara ketat dari atas ke bawah sesuai hubungan dependensi yang ditentukan dalam DAG. Anda dapat memantau status node secara real-time di kanvas dan mengklik node apa pun untuk melihat log runtime.
Anda dapat mengklik tombol Return di sisi kiri kanvas untuk kembali ke status pengembangan alur kerja.
Riwayat eksekusi di sisi kanan menampilkan semua catatan eksekusi debug alur kerja.
Semua node umum yang melibatkan kontrol alur (do-while, branch, dan join) harus ditempatkan dalam alur kerja dan bekerja sama dengan node hulu dan hilir agar dapat di-debug dan dieksekusi secara efektif.
Manajemen dan operasi
Mengelola node alur kerja
DataWorks memungkinkan Anda mengimpor node mandiri yang sudah ada ke dalam alur kerja, menghapus node dari alur kerja, atau memindahkan node antar alur kerja untuk penggunaan ulang dan manajemen modular yang efisien.
Impor node yang sudah ada ke dalam alur kerja
Anda dapat menambahkan node mandiri yang tidak termasuk dalam alur kerja apa pun ke kanvas alur kerja saat ini melalui Import Node untuk penggunaan ulang.
Klik dua kali alur kerja target untuk membuka halaman pengeditan kanvas.
Di panel komponen kiri, beralih ke tab Import Node.
Panel tersebut mencantumkan semua node mandiri yang dapat ditambahkan. Anda dapat memfilter dan mencari berdasarkan Node Type, Path, atau Node Name untuk menemukan node target dengan cepat.
Setelah menemukan node tersebut, seret ke kanvas untuk menyelesaikan impor.
Hapus node dari alur kerja
Anda dapat menghapus node dari alur kerja agar menjadi node mandiri, atau memindahkannya langsung ke alur kerja lain.
Hapus dari alur kerja sebagai node mandiri
Gunakan fitur ini ketika Anda perlu memisahkan node dari alur kerja sehingga tidak lagi menjadi bagian dari alur kerja tersebut.
Di pohon direktori proyek atau di kanvas alur kerja, klik kanan node target.
Di menu konteks, pilih Remove from workflow.
Di dialog konfirmasi, pilih jalur target tempat node akan disimpan setelah dihapus, lalu konfirmasi.
Pindahkan ke alur kerja lain
Gunakan fitur ini ketika Anda perlu menyusun ulang proses bisnis dan memigrasikan node dari alur kerja saat ini ke alur kerja lain.
Di pohon direktori proyek atau di kanvas alur kerja, klik kanan node target.
Di menu konteks, pilih Move to another workflow.
Di daftar yang muncul, pilih alur kerja target dan konfirmasi.
Anda juga dapat memilih dan menyeret node langsung ke alur kerja target untuk memindahkannya.
Sebelum melakukan operasi ini, evaluasi secara hati-hati dampak potensial terhadap proses bisnis yang ada dan segera konfigurasi ulang dependensi di lokasi baru.
Saat Anda menghapus atau memindahkan node dari alur kerja, dependensi hulu dan hilir yang dikonfigurasi untuk node tersebut dalam alur kerja asli akan terputus.
Parameter alur kerja yang dikonfigurasi pada node juga menjadi tidak berlaku.
Klon alur kerja
Kloning menyalin alur kerja yang ada — termasuk semua node internal, kode, dan dependensinya — untuk menghasilkan alur kerja independen. Untuk mengkloning, buka Project Directory, klik kanan alur kerja target, lalu pilih Cloning.
Kloning menyalin hampir semua konfigurasi, yang dapat menimbulkan risiko. Sebelum menerapkan alur kerja yang dikloning, verifikasi hal berikut ("pemeriksaan isolasi lingkungan"):
Tabel output dan sumber data target: Kode alur kerja yang dikloning menulis ke tabel target yang sama dengan alur kerja asli. Anda harus mengubah nama tabel target dalam kode (misalnya, ubah
ods_user_tablemenjadidev_ods_user_table) atau memodifikasi konfigurasi output node untuk mencegah beberapa tugas mengoperasikan tabel yang sama, yang dapat menyebabkan konflik data.Dependensi hulu: Periksa konfigurasi dependensi hulu alur kerja. Secara default, alur kerja yang dikloning masih bergantung pada tugas hulu asli. Pastikan apakah ini sesuai ekspektasi Anda. Jika tidak, hal ini dapat menyebabkan kebingungan pipa data atau tugas berjalan tanpa input yang valid.
Konfigurasi parameter: Periksa parameter kustom alur kerja dan node internalnya, terutama parameter yang terkait dengan partisi tanggal (seperti
${bizdate}), jalur input/output, dan parameter lainnya. Pastikan parameter tersebut benar di lingkungan baru.
Selain mengkloning alur kerja, Anda juga dapat mengkloning node dalam alur kerja, tetapi penyalinan node lintas alur kerja tidak didukung.
Manajemen versi
Saat node internal diterapkan secara individual, versi baru juga dihasilkan untuk alur kerja tersebut.
Manajemen versi secara otomatis mencatat setiap perubahan alur kerja, mendukung melihat dan membandingkan versi historis, serta memungkinkan rollback ke status historis apa pun saat diperlukan.
Di sisi kanan kanvas alur kerja, panel Version menampilkan dua jenis catatan:
Catatan pengembangan: Dihasilkan setiap kali Anda mengklik Save di kanvas. Snapshot ini mencegah kehilangan kode secara tidak sengaja selama pengembangan dan tidak memengaruhi tugas yang berjalan di produksi.
Catatan penerapan: Dihasilkan setelah alur kerja diterapkan ke lingkungan produksi. Ini adalah versi yang dieksekusi oleh penjadwal produksi. Saat tugas produksi mengalami masalah, fokuslah pada catatan penerapan untuk rollback.
Kasus penggunaan khas
Rollback cepat saat gagal: Saat tugas produksi gagal karena perubahan kode, gunakan Restore untuk mengembalikan alur kerja ke versi penerapan stabil terakhir dengan satu klik untuk meminimalkan downtime.
Audit dan pelacakan perubahan: Untuk menyelidiki kapan logika diubah dan oleh siapa, gunakan daftar versi dan fitur Diff untuk melacak setiap perubahan kode.
Pemulihan kode: Jika Anda secara tidak sengaja menghapus logika kode tanpa menyimpannya, pulihkan dari catatan pengembangan terbaru.
Pertimbangan penting
Restore menimpa area pengembangan saat ini: Restore menggunakan versi historis yang dipilih untuk menimpa semua kode dan konfigurasi di kanvas saat ini. Sebelum memulihkan, backup perubahan yang belum dikomit dengan menyalinnya ke editor teks lokal.
Penerapan ulang diperlukan setelah restore: Restore hanya memulihkan kode ke status pengembangan. Anda harus menerapkannya secara manual agar rollback berlaku di produksi.
Penerapan dan operasi
Penerapan node/alur kerja: Setelah menyelesaikan pengembangan alur kerja, terapkan node/alur kerja ke lingkungan produksi. Pada titik ini, node di lingkungan pengembangan menghasilkan tugas terjadwal yang sesuai di lingkungan produksi. Untuk informasi lebih lanjut, lihat Menerapkan node dan alur kerja.
Operasi node/alur kerja: Alur kerja di lingkungan produksi dijadwalkan secara berkala berdasarkan pengaturan jadwal. Buka Operation and Maintenance Center untuk melihat status penjadwalan alur kerja terjadwal dan melakukan operasi terkait. Untuk informasi lebih lanjut, lihat Tugas terjadwal dan Instans terjadwal.
Mekanisme eksekusi tugas
Dalam skenario penjadwalan, keberhasilan keseluruhan alur kerja bergantung pada status eksekusi tugas internalnya.
Keberhasilan keseluruhan alur kerja ditentukan oleh status akhir node internalnya:
Kegagalan: Jika node kritis gagal, seluruh instans alur kerja biasanya ditandai sebagai gagal.
Freeze/Pause: Jika node dalam alur kerja dibekukan atau dijeda secara manual, dan node tersebut merupakan node hulu untuk node berikutnya, pipa terputus dan seluruh alur kerja juga ditandai sebagai gagal.
Join node: Jika alur kerja menggunakan join node, meskipun node di cabang hulu gagal, seluruh alur kerja mungkin mengembalikan status "sukses" selama logika join node itu sendiri menentukan keberhasilan. Oleh karena itu, rancang dengan hati-hati pemeriksaan hulu untuk join node guna mencegah tugas berjalan dengan error yang tidak terdeteksi.
Skenario khusus:
Saat Anda membekukan instans backfill data dari tugas alur kerja, instans alur kerja diatur ke status sukses.
Dalam skenario backfill data, jika sistem menentukan bahwa tugas tidak dapat dieksekusi, alur kerja diatur ke status gagal.
Ada latensi antara pembaruan status instans dan kejadian kegagalan yang sebenarnya.
Kuota dan batasan
Batas jumlah node: Satu alur kerja mendukung hingga 400 node internal. Untuk memastikan kinerja pemuatan kanvas dan kemudahan pemeliharaan, pertahankan jumlah node di bawah 100. Untuk skenario yang lebih besar, gunakan pemisahan modular.
Batasan sub-alur kerja:
Alur kerja dengan opsi referensi yang diaktifkan tidak boleh memiliki dependensi node-nya terhadap tugas eksternal apa pun, dan juga tidak boleh dijadikan dependensi langsung oleh tugas eksternal apa pun. Jika tidak, akan terjadi error saat penerapan.
Setelah alur kerja tersebut diterapkan ke lingkungan produksi, instans terjadwal tidak dihasilkan secara otomatis secara default. Alur kerja dijalankan sebagai subtugas hanya ketika dirujuk oleh node SUB_PROCESS di alur kerja lain.
Instans paralel maksimum: Alur kerja terjadwal tidak mendukung pengaturan jumlah maksimum instans paralel pada tingkat alur kerja. Anda hanya dapat mengatur ini untuk tugas internal dalam alur kerja. Untuk membatasi eksekusi konkuren, konfigurasikan Max Parallel Instances dalam kebijakan penjadwalan node individual. Untuk informasi lebih lanjut, lihat Mengonfigurasi kebijakan penjadwalan.
Jenis node yang tidak didukung: EMR Spark Streaming, Flink SQL Streaming, Flink JAR Streaming, dan Flink Python Streaming tidak didukung dalam alur kerja. Jenis-jenis ini hanya dapat dikembangkan dan dijalankan sebagai node mandiri.
FAQ
T: Apa perbedaan antara alur kerja dan proses bisnis?
J: Alur kerja adalah entitas penjadwalan terpadu, sedangkan proses bisnis hanyalah pengelompokan berbasis folder.
T: Mengapa debugging berhasil tetapi penjadwalan periodik gagal?
J: Penyebab paling umum adalah inkonsistensi lingkungan. Perhatikan hal-hal berikut:
Perbedaan kelompok sumber daya: Saat debugging, Anda mungkin menggunakan kelompok sumber daya pribadi atau debug, sedangkan penjadwalan produksi menggunakan kelompok sumber daya produksi. Verifikasi bahwa kelompok sumber daya produksi valid, memiliki kapasitas yang cukup, dan memiliki izin yang benar.
Perbedaan izin: Akun eksekusi lingkungan produksi mungkin tidak memiliki izin akses ke tabel, fungsi, atau sumber daya tertentu.
Perbedaan dependensi: Dependensi di lingkungan produksi tidak konsisten dengan yang ada di lingkungan pengembangan, atau output dependensi hulu tidak ada di lingkungan produksi.
T: Mengapa instans selalu tertunda/tidak berjalan?
J: Instans dijalankan hanya ketika semua kondisi terpenuhi: waktu terjadwal, sumber daya penjadwalan tersedia, dan penyelesaian dependensi hulu.
Dependensi hulu belum selesai: Di Operation Center, lihat tampilan dependensi instans untuk memeriksa tugas hulu mana yang belum berhasil.
Antrean sumber daya: Antrian kelompok sumber daya komputasi penuh, dan tugas menunggu giliran untuk mendapatkan sumber daya.
Alur kerja/node dibekukan: Periksa apakah alur kerja atau node hulunya telah dibekukan atau dijeda secara manual.
Instans tidak dihasilkan: Verifikasi bahwa waktu saat ini telah mencapai waktu terjadwal alur kerja. Jika tugas baru saja diterapkan, Anda perlu menunggu hingga siklus jadwal berikutnya agar instans dihasilkan. Untuk informasi lebih lanjut, lihat Waktu penjadwalan dan pembuatan instans.
T: Mengapa seluruh alur kerja berstatus gagal meskipun beberapa node berhasil?
J: Hal ini ditentukan oleh aturan evaluasi status alur kerja:
Kegagalan jalur kritis: Jika node apa pun dengan dependensi hilir yang belum lengkap gagal, seluruh alur kerja ditandai sebagai gagal, meskipun cabang paralel lainnya berhasil.
Node dibekukan: Node internal yang dibekukan menyebabkan seluruh alur kerja gagal.