Scheduler
Scheduler adalah jadwal eksekusi berulang yang didaftarkan pada satu Space. Dengan mengikat satu Script pada waktu jalannya, server akan menjalankan Script tersebut setiap kali waktu itu tiba. Sebagai contoh, pada toko pakaian online, untuk menjalankan sekali sehari sebuah Script yang mencari produk dengan stok 0 lalu memanggil saluran pemesanan pemasok, buatlah satu Scheduler yang menunjuk ke Script tersebut.
Scheduler adalah sumber daya di bawah Space yang dikelola melalui CMA, dengan jalur berbasis /spaces/{spaceId}/schedulers. Tidak ada konsep publikasi (publish) maupun sys.version. Begitu dibuat, ia langsung masuk ke jadwal, dan pengubahan tidak memerlukan header versi. Namun, ada dua hal yang berbeda dari sumber daya lain. Setelah dibuat, Script yang dijalankan tidak dapat diubah, dan untuk membuat atau mengubahnya diperlukan hak pengaturan Space serta, secara terpisah, hak eksekusi Script tersebut. Hasil eksekusi tersimpan sebagai SchedulerLog, dan eksekusi yang berhasil hilang setelah 1 jam, sedangkan eksekusi yang gagal setelah 3 hari.
Struktur sumber daya
Berikut adalah respons saat Scheduler dibuat. sys memuat identifier dan referensi, sedangkan bagian body memuat nama, waktu jalan, dan status aktif.
{
"sys": {
"id": "7kQm2ZbTn4Rc9WvXpL3dHsY6fJ",
"type": "Scheduler",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"script": { "sys": { "id": "3trmXRMKq7bd0Prbef1NcZ", "type": "Refer", "targetType": "Script" } },
"createdBy": { "sys": { "id": "9dLmQ2pVnRb8sTfWcXd3LhJ7gK", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-08-26T01:20:07.442Z",
"updatedBy": { "sys": { "id": "9dLmQ2pVnRb8sTfWcXd3LhJ7gK", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-08-26T01:20:07.442Z"
},
"name": "Pemesanan Stok",
"cronExpression": "0 0 * * *",
"activated": true
}Kunci utama:
sys.id: Identifier unik Scheduler. Mengisi{schedulerId}pada jalur pengambilan tunggal, pengubahan, dan penghapusan.sys.script: Script yang akan dijalankan oleh jadwal ini. Hanya dapat ditetapkan saat pembuatan dan tidak dapat diubah setelahnya. Untuk menjalankan Script lain, buat Scheduler baru.name: Label yang ditampilkan di konsol. Tidak digunakan untuk eksekusi.cronExpression: Waktu jalannya. Terdiri dari lima kolom (menit, jam, tanggal, bulan, hari) dan diinterpretasikan dalam UTC. Lihat Menulis waktu jalan di bawah.activated: Status aktif. Jikafalse, data tetap tersimpan tetapi tidak dijalankan.
Tidak ada sys.version. Jangan kirim header X-Weegloo-Version pada permintaan pengubahan.
Properti sistem (sys)
space, script, createdBy, updatedBy berbentuk Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).
| Properti | Tipe | Deskripsi |
|---|---|---|
id | string | Identifier unik sumber daya. |
type | string | Jenis sumber daya. Scheduler selalu "Scheduler". |
space | Refer<Space> | Space tempat jadwal ini berada. |
script | Refer<Script> | Script yang dijalankan. Tidak berubah setelah dibuat. |
createdBy | Refer<User> | Pengguna yang membuat. Eksekusi berlangsung dengan hak pengguna ini. |
createdAt | string (date-time) | Waktu pembuatan. |
updatedBy | Refer<User> | Pengguna yang terakhir mengubah. |
updatedAt | string (date-time) | Waktu pengubahan terakhir. |
Properti body:
| Properti | Tipe | Deskripsi |
|---|---|---|
name | string (1~64) | Label yang ditampilkan di konsol. Tidak digunakan untuk eksekusi. |
cronExpression | string (1~128) | Waktu jalan. Lima kolom (menit, jam, tanggal, bulan, hari), diinterpretasikan dalam UTC. |
activated | boolean | Status aktif. Jika false, dikeluarkan dari jadwal dan tidak dijalankan. |
Menulis waktu jalan
Tulis kelima kolom dari kiri dengan urutan menit, jam, tanggal, bulan, hari. Tidak ada kolom untuk satuan detik.
| Nilai | Arti |
|---|---|
0 0 * * * | Setiap hari pukul 00 |
30 9 * * * | Setiap hari pukul 09 |
0 * * * * | Setiap jam tepat |
*/10 * * * * | Setiap 10 menit |
0 0 * * 1 | Setiap Senin pukul 00 |
0 0 1 * * | Tanggal 1 setiap bulan pukul 00 |
Anda dapat menggunakan * (semua), , (daftar), - (rentang), / (interval), dan hari ditulis dengan angka (07, di mana 0 dan 7 berarti Minggu) atau nama (SUNSAT).
Semua nilai diinterpretasikan dalam UTC. Anda harus menghitung dan memasukkan selisih terhadap waktu setempat, dan untuk waktu yang menentukan tanggal atau hari, selisih itu dapat membuat hari eksekusi yang sebenarnya menjadi berbeda.
Nilai yang tidak pernah terpicu sama sekali tidak akan disimpan. Seperti 0 0 30 2 * (30 Februari), meskipun formatnya benar, jika menunjuk ke tanggal yang tidak akan pernah tiba, permintaan ditolak.
Status dan batasan
| Target | Batasan |
|---|---|
name | 1~64 karakter, wajib. |
cronExpression | 1~128 karakter, wajib. Harus terdiri dari lima kolom dan setidaknya terpicu sekali. |
activated | Wajib. |
sys.script | Wajib saat pembuatan. Tidak berubah setelah dibuat (tidak diterima dalam body pengubahan). |
Aturan tentang perilaku dan hak akses:
- Dua hak akses diperlukan bersamaan.
settingspada peran (SpaceRole) harus memilikiSETTING_SCHEDULER, dan terpisah dari itu harus ada hakExecuteatas Script target. Pemeriksaan dilakukan bukan hanya saat pembuatan, tetapi juga saat pengubahan dan pengubahan sebagian. Sebab mengubah waktu jalan berarti menentukan kapan Script itu dijalankan, dan mengaktifkan yang nonaktif berarti memulai eksekusi. Jika salah satu dari kedua hak itu tidak ada, permintaan ditolak. - Eksekusi berlangsung dengan hak
sys.createdBy. Filter:selfdi dalam Script pun diinterpretasikan sebagai pengguna tersebut. Meskipun pengubahnya berbeda, subjek eksekusi tidak berubah. - Jika pembuat kehilangan hak eksekusi, jadwal otomatis dinonaktifkan. Pada waktu eksekusi berikutnya server memeriksa, tidak menjalankannya, dan menurunkan
activatedmenjadifalse. Meskipun hak akses dipulihkan, jadwal tidak diaktifkan kembali secara otomatis. - Ada batas jumlah. Jumlah Scheduler yang dapat dimiliki satu Organization ditetapkan per paket langganan (Free 1, Basic 5, Pro 30, Enterprise tanpa batas). Jika batas itu terlampaui, pembuatan ditolak.
- Kuota eksekusi dibagi bersama Script. Setiap kali berjalan, satu kuota eksekusi Script dari paket langganan terpakai. Tidak ada batas eksekusi khusus untuk Scheduler. Jika batas itu terlampaui sehingga eksekusi Script milik Organization dihentikan, maka Scheduler yang jatuh tempo setelahnya tidak dijalankan dan
activatedditurunkan menjadifalse. Dalam kasus ini satu SchedulerLog tersimpan dan alasannya dimuat padasys.error. Scheduler itu tidak dijadwalkan lagi setelah dinonaktifkan. - Eksekusi yang terlewat tidak digantikan. Meskipun ada putaran yang gagal dijalankan, ia tidak dijalankan sekaligus di kemudian hari, melainkan berjalan lagi mulai dari waktu berikutnya.
- Sebuah Script yang sedang digunakan tidak dapat dihapus. Jika Anda mencoba menghapus Script yang dirujuk oleh suatu Scheduler, penghapusan itu ditolak (lihat Error pada Script).
- Tidak ada publikasi. Karena dibuat tanpa nilai status atau tahap publikasi, ia langsung masuk ke jadwal, dan penghapusan pun langsung terjadi tanpa tahap pendahuluan.
SchedulerLog
Setiap kali Scheduler berjalan sekali, satu catatan eksekusi tersimpan. Bersifat baca saja (read-only) dan tidak memiliki endpoint pembuatan, pengubahan, maupun penghapusan. Jalurnya adalah /spaces/{spaceId}/schedulers/{schedulerId}/logs.
{
"sys": {
"id": "5nRt8YcVm2Qb7WxZpK4dGhJ9sL",
"type": "SchedulerLog",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"requestId": "3trmXRM8dNvQ2LbYpK7fHsJ3gWc4Rt",
"success": true,
"createdBy": { "sys": { "id": "7kQm2ZbTn4Rc9WvXpL3dHsY6fJ", "type": "Refer", "targetType": "Scheduler" } },
"createdAt": "2026-09-03T00:00:02.503Z",
"updatedBy": { "sys": { "id": "7kQm2ZbTn4Rc9WvXpL3dHsY6fJ", "type": "Refer", "targetType": "Scheduler" } },
"updatedAt": "2026-09-03T00:00:02.503Z"
}
}Semua nilai berada di dalam sys dan tidak ada properti body. Kunci yang tidak bernilai dihilangkan dari respons (pada contoh di atas tidak ada error).
| Properti | Tipe | Deskripsi |
|---|---|---|
id | string | Identifier unik catatan. Mengisi {schedulerLogId} pada jalur pengambilan tunggal. |
type | string | Selalu "SchedulerLog". |
space | Refer<Space> | Space tempat catatan ini berada. |
requestId | string | Identifier eksekusi putaran ini. Nilai yang sama masuk ke sys.requestId milik ScriptLog. |
success | boolean | Status keberhasilan. |
error | any | Hanya dimuat pada putaran yang bahkan tidak dapat dimulai karena kuota eksekusi telah habis. Di luar kasus itu, ia dihilangkan bahkan pada putaran yang gagal. Alasan kegagalan yang terjadi saat sedang berjalan ada pada sys.value milik ScriptLog dengan requestId yang sama. |
createdBy | Refer<Scheduler> | Ini adalah Scheduler yang menghasilkan catatan ini. Bukan pengguna. |
createdAt | string (date-time) | Waktu pembuatan catatan. |
updatedBy | Refer<Scheduler> | Scheduler yang sama dengan createdBy. |
updatedAt | string (date-time) | Sama dengan createdAt. |
Tidak ada field scheduler. Scheduler mana yang menghasilkan catatan itu ditunjuk oleh sys.createdBy, dan targetType-nya adalah "Scheduler". sys.updatedBy juga Scheduler yang sama.
Field startedAt, endedAt, result, dan field durasi juga tidak ada. Berapa lama satu putaran berjalan dan nilai yang dikembalikan Script ada pada ScriptLog dengan requestId yang sama (sys.durationMs, sys.value, sys.statusCode). Susunan field-nya dibahas di Resource dan endpoint Script.
Satu putaran meninggalkan dua log. Satu adalah SchedulerLog yang ringkas ini, dan satu lagi adalah ScriptLog yang memuat eksekusi itu sendiri (sys.trigger milik ScriptLog menunjuk ke Scheduler ini). Keduanya terikat oleh requestId yang sama.
Catatan ditulis sekali setelah eksekusi selesai dan tidak berubah. Eksekusi yang berhasil hilang setelah 1 jam, dan eksekusi yang gagal setelah 3 hari. Tidak ada field yang memuat waktu kedaluwarsa pada respons, dan catatan itu hilang begitu waktunya tiba. Nilai yang harus Anda simpan lebih lama dari itu, simpanlah sebagai Content dari dalam Script.
Error
Berikut adalah kode yang muncul saat Anda menangani Scheduler. Untuk kode yang berlaku umum pada semua sumber daya, lihat Error umum.
| Kode | Kondisi |
|---|---|
WGL400069 | cronExpression menunjuk ke waktu yang tidak pernah terpicu sama sekali, meskipun formatnya benar. |
WGL403001 | Peran pemanggil tidak memiliki hak pengaturan SETTING_SCHEDULER. Hak ini diperlukan bukan hanya untuk membuat dan mengubah Scheduler, tetapi juga untuk mengambil dan menghapus Scheduler serta mengambil catatan eksekusi. Saat membuat atau mengubah Scheduler, hak Execute atas Script target juga diperlukan, dan bila salah satu dari kedua hak itu tidak ada pada pemanggil, permintaan ditolak dengan kode yang sama. |
WGL429001 | Pemanggil mencoba membuat Scheduler baru ketika jumlah Scheduler pada Organization sudah mencapai batas paket langganan. |
API
URL dasar untuk semua endpoint di bawah adalah https://cma.weegloo.com/v1, dan header Authorization memerlukan Bearer token untuk mengautentikasi ke CMA. Karena Scheduler tidak memiliki sys.version, jangan kirim header X-Weegloo-Version saat pengubahan.
Dokumen terkait
- Script: Sumber daya yang dijalankan Scheduler. Membahas struktur definisi dan jenis statement.
- Webhook: Sumber daya yang menjalankan Script berdasarkan peristiwa, bukan waktu.
- SpaceRole: Peran yang memuat hak pengaturan
SETTING_SCHEDULERdan hakExecuteatas Script. - Konsep Scheduler: Untuk apa fitur ini digunakan dan cara menanganinya di konsol.
