Scheduler

Bayangkan Anda menjalankan toko pakaian online. Ketika pelanggan membeli produk yang terakhir, stok produk itu menjadi 0. Untuk menjualnya lagi, Anda harus memesan barang ke pemasok. Anggaplah pemasok memiliki loket penerima pesanan yang terbuka di internet, sehingga jika Anda memanggilnya ke alamat yang telah ditentukan, pesanan pun tercatat. Anggaplah pekerjaan mencari produk yang stoknya 0 lalu memanggil loket itu sudah Anda buat sebagai Script. Meski begitu, masih ada satu masalah yang tersisa. Sekali sehari tetap diperlukan seseorang untuk menekan Script itu.

Scheduler menggantikan orang itu. Jika sekali saja Anda menetapkan "jalankan Script ini setiap hari pada waktu yang sama", maka setiap kali waktu itu tiba WEEGLOO menjalankannya dengan sendirinya. Tidak seorang pun perlu membuka layar.

Ini bisa diibaratkan seperti menyetel jam alarm. Jika sekali saja Anda menetapkan pukul berapa ia berbunyi, setelah itu ia berbunyi sendiri setiap hari pada waktu tersebut. Di halaman ini, Anda akan menelusuri apa yang ditetapkan pada Scheduler, bagaimana menuliskan waktunya, dan atas nama izin siapa ia dijalankan, melalui contoh "pemesanan stok" pada toko pakaian.

Tiga hal yang ditetapkan

Yang perlu ditetapkan pada satu Scheduler tidak banyak.

  • Nama: Untuk mengenalinya nanti di dalam daftar. Misalnya: Pemesanan stok.
  • Script yang dijalankan: Anda memilih satu Script yang akan dijalankan saat waktu itu tiba. Satu Scheduler hanya menjalankan satu Script.
  • Kapan berjalan: Dibahas di bawah pada Cara menuliskan waktu berjalan.

Di sini ada satu lagi sakelar untuk menyalakan dan mematikan. Jika dimatikan, penyimpanannya tetap ada dan hanya eksekusinya yang tidak dijalankan. Ketika perlu berhenti sejenak seperti saat pemasok sedang libur, Anda tidak perlu menghapusnya.

Anda tidak dapat mengubah Script yang dijalankan di kemudian hari. Untuk menjalankan Script lain, buatlah Scheduler baru. Nama, waktu, dan status nyala-mati dapat diubah kapan saja.

Cara menuliskan waktu berjalan

Waktu dituliskan dalam lima kolom. Dari kiri ke kanan adalah menit, jam, tanggal, bulan, hari, dan * berarti "semua".

Menit  Jam  Tanggal  Bulan  Hari
0      9    *        *      *      → setiap hari tepat pukul 9

Bentuk yang sering dipakai adalah sebagai berikut.

Nilai yang ditulisKapan berjalan
0 0 * * *setiap hari tepat pukul 0
30 9 * * *setiap hari pukul 9.30
0 * * * *setiap jam tepat
*/10 * * * *setiap 10 menit
0 0 * * 1setiap Senin tepat pukul 0
0 0 1 * *tanggal 1 setiap bulan tepat pukul 0

Waktu dibaca dalam waktu standar (UTC). Karena ini bukan waktu setempat, tentukan dahulu pukul berapa ia harus berjalan dalam waktu setempat, lalu hitung selisihnya dan tuliskan hasilnya. Di wilayah yang 9 jam lebih cepat daripada waktu standar, pukul 9 pagi di sana adalah 0 0 * * *. Pemesanan stok berjalan dengan nilai ini, yakni pada pukul 0 waktu standar.

Untuk waktu yang memuat tanggal atau hari, perhitungan ini bisa menggeser hingga ke tanggalnya, jadi periksalah sekali lagi.

Nilai yang tidak pernah berjalan sama sekali tidak akan tersimpan. Misalnya, 0 0 30 2 * menunjuk tanggal 30 Februari, tetapi hari seperti itu tidak pernah ada, sehingga jika Anda mencoba menyimpannya, Anda akan menerima respons untuk memeriksa kembali nilainya.

Dengan izin siapa ia berjalan

Ketika Scheduler menjalankan Script, eksekusi itu diperlakukan sebagai dilakukan oleh orang yang membuat Scheduler itu. Script pemesanan stok yang membaca produk dan memanggil pemasok pun terjadi dengan kewenangan pembuatnya.

Karena itu, untuk membuat atau mengubahnya, diperlukan dua izin sekaligus.

  • Peran (SpaceRole) harus memiliki izin untuk mengatur Scheduler.
  • Untuk Script yang akan dijalankan Scheduler itu, Anda harus memiliki izin untuk menjalankannya.

Yang kedua diperiksa bukan hanya saat membuat, tetapi juga saat mengubah. Sebab, mengubah waktu berjalannya berarti menentukan kapan Script itu dijalankan, dan menyalakan yang tadinya mati berarti memulai eksekusinya.

Jika pembuatnya kemudian kehilangan izin itu, Scheduler akan dimatikan. Ketika penanggung jawab keluar dari tim atau perannya dipersempit, pada waktu eksekusi berikutnya WEEGLOO memeriksanya lalu mematikan sakelar tanpa menjalankannya. Meskipun izinnya kembali, sakelar tidak menyala secara otomatis, jadi Anda harus menyalakannya kembali sendiri.

Memeriksa catatan eksekusi

Setiap kali Scheduler berjalan, tertinggal satu catatan. Apakah putaran itu berhasil atau gagal tercatat di sini. Apakah pemesanan tadi malam benar-benar terkirim dapat Anda periksa melalui catatan ini.

Di daftar muncul waktu eksekusi dan hasil setiap putaran. Jika Anda menekan putaran yang gagal di tengah jalan, alasannya dapat Anda lihat apa adanya di area kesalahan pada detailnya. Karena ia muncul bersama waktu yang dibutuhkan, dari kalimat itu Anda dapat memilah apakah penyebabnya loket pemasok yang tidak merespons atau masalah lain.

Catatan eksekusi yang berhasil hilang setelah 1 jam, dan catatan eksekusi yang gagal hilang setelah 3 hari. Yang gagal tertinggal lebih lama karena catatan itulah yang nanti akan Anda lihat kembali. Jika berupa nilai yang perlu disimpan lebih lama daripada itu seperti riwayat pemesanan, simpanlah sebagai Content di dalam Script.

Meskipun gagal, Scheduler tidak berhenti. Jika kegagalan terjadi karena loket pemasok sejenak tidak merespons, hanya putaran itu yang tercatat sebagai gagal, lalu ia berjalan lagi pada waktu berikutnya.

Apa bedanya dengan Webhook

Keduanya sama-sama menjalankan Script tanpa perlu ditekan orang. Yang membedakan adalah apa yang memanggil eksekusi itu.

  • Webhook berjalan ketika sesuatu terjadi. Saat produk didaftarkan, saat konten diterbitkan.
  • Scheduler berjalan ketika waktunya tiba. Setiap hari pada waktu itu meskipun tidak ada apa-apa.

Pemesanan stok sekilas tampak cocok memakai Webhook. Sebab pemesanan bisa dilakukan tepat pada saat stok menjadi 0. Namun, jika stok produk yang sama dalam sehari menjadi 0, lalu kembali karena diretur, lalu menjadi 0 lagi, pemesanan akan terkirim setiap kali itu terjadi. Jika sekali sehari Anda menelusurinya secara terkumpul, satu produk berarti satu pemesanan. Pekerjaan yang seharusnya dilakukan "sekaligus dalam satu waktu", bukan "setiap kali muncul", itulah tempat bagi Scheduler.

Sebaliknya, mengisi deskripsi tepat saat produk didaftarkan tidak ada alasan untuk ditunda, sehingga itu urusan Webhook.

Hal yang perlu diketahui

  • Ada batas jumlahnya. Jumlah Scheduler yang bisa dimiliki satu Organization ditetapkan menurut paket harga (Free 1, Basic 5, Pro 30, Enterprise tak terbatas). Begitu batasnya tercapai, Anda tidak bisa membuat yang baru, dan jika Anda menghapus yang tidak dipakai, satu tempat akan kembali kosong.
  • Jumlah eksekusi dipakai bersama dengan Script. Karena yang dikerjakan Scheduler adalah menjalankan Script, setiap kali berjalan ia memakai satu dari jumlah eksekusi Script pada paket harga. Tidak ada batas tersendiri khusus untuk Scheduler. Jika jumlah itu habis, Scheduler yang tiba setelahnya tidak dijalankan melainkan dimatikan. Dalam kasus ini, alasan ia tidak dapat dimulai tertinggal pada catatan eksekusi. Karena ia tidak menyala otomatis meski bulan berganti, Anda harus menyalakannya kembali sendiri.
  • Eksekusi yang terlewat tidak diisi ulang. Jika satu hari terlewat karena pemeliharaan dan sebagainya, ia tidak berjalan dua kali keesokan harinya. Ia berjalan lagi mulai dari waktu berikutnya.
  • Sebuah Script yang dipakai suatu Scheduler tidak bisa dihapus. Ini berlaku meskipun Scheduler itu dimatikan. Hapuslah Scheduler itu terlebih dahulu, baru kemudian Script-nya.

Mengelola di studio konten

Scheduler dibuat dan dikelola di layar Scheduler pada studio konten. Di daftar, setiap Scheduler yang sudah dibuat muncul satu baris beserta nama, nama Script yang dijalankan, ekspresi cron, Jalan berikutnya, status, waktu terakhir diubah, dan siapa yang mengubahnya.

Layar daftar Scheduler. Tampilan dengan "Pemesanan stok" terlihat dalam satu baris beserta nama, Script, ekspresi cron, Jalan berikutnya, dan status Active. Di kepala kolom cron tertera UTC, dan di kepala kolom Jalan berikutnya tertera UTC±N

Layar juga memberi tahu kolom mana mengikuti jam yang mana. Di kepala kolom yang memuat ekspresi cron tertera UTC, sedangkan di kepala kolom Jalan berikutnya tertera zona waktu orang yang melihatnya, seperti UTC±N. Jadi Anda bisa melihat nilai yang tersimpan dan pukul berapa nilai itu dalam waktu Anda pada baris yang sama. Pada zona waktu yang lebih lambat daripada waktu standar, Jalan berikutnya bisa terlihat sebagai hari sebelumnya.

Scheduler baru dibuat dengan tombol Buat di kanan atas daftar.

  1. Tekan tombol Buat di kanan atas daftar.
  2. Masukkan Pemesanan stok pada kolom nama.
  3. Biarkan Aktif tetap menyala. Jika dibiarkan mati, ia tersimpan tetapi tidak dijalankan.
  4. Pada Script yang dijalankan, pilih Script pemesanan stok.
  5. Pada Jadwal, pilih Tulis sendiri.
  6. Masukkan 0 0 * * * pada lima kolom itu.
  7. Tekan tombol Buat di kanan atas untuk menyimpan.

Layar juga langsung menunjukkan kapan sebenarnya ekspresi yang Anda masukkan itu berjalan. Bersama keterangan bahwa ekspresi yang Anda masukkan sendiri disimpan dalam waktu standar (UTC), muncul pula pratinjau nilai cron yang akan disimpan dan waktu Jalan berikutnya.

Layar pembuatan Scheduler baru. Nama "Pemesanan stok", Aktif menyala, Script yang dijalankan "Pemesanan stok", dan 0 0 * * * dimasukkan pada tab Tulis sendiri di bagian Jadwal

Jika Anda menekan satu Scheduler di daftar, terbuka layar detail Scheduler itu. Layar detail terbagi menjadi dua tab, Log eksekusi dan Pengaturan, dan saat pertama dibuka yang tampil adalah Log eksekusi. Pada tab Log eksekusi, setiap putaran yang sudah berjalan muncul satu baris, dan pada tiap baris terlihat Dieksekusi pada, Hasil, serta ID permintaan yang menunjuk putaran tersebut. Dengan kolom Hasil Anda dapat memilih untuk melihat hanya putaran yang berhasil atau hanya yang gagal, dan jika Anda menekan Segarkan Log, putaran yang baru saja berjalan pun terbaca kembali.

Tab Log eksekusi pada layar detail Scheduler. Tampilan dengan tiga eksekusi "Pemesanan stok" (2 gagal, 1 berhasil) terlihat pada kolom Dieksekusi pada, Hasil, dan ID permintaan

Jika Anda menekan satu putaran, terbuka detail putaran itu. Di sini muncul Hasil beserta Kode status, waktu yang dibutuhkan (Durasi), dan atas identitas siapa putaran itu berjalan (Run as), dan jika putaran itu gagal, alasannya muncul apa adanya di area Kesalahan. Di bagian atas ada badge yang memberi tahu putaran ini milik Scheduler mana dan Script mana yang dijalankannya, dan di sebelahnya ada tautan menuju Script itu serta tautan Lihat di log Script untuk melihat putaran yang sama pada catatan di sisi Script.

Layar detail log eksekusi Scheduler (putaran yang gagal). Tampilan dengan Dieksekusi pada dan ID permintaan muncul bersama Hasil Failure, Kode status, Durasi, dan Run as, sedangkan alasan kegagalan terlihat di area Kesalahan

Hal yang dilakukan berikutnya

  • Script: Membahas cara membuat Script yang akan dijalankan Scheduler, dan cara memuat tindakan yang memanggil layanan luar seperti loket pemasok.
  • Webhook: Membahas cara membuat sesuatu berjalan ketika perubahan yang ditentukan terjadi, alih-alih pada waktu yang ditetapkan.
  • Peran dan Izin: Membahas cara memuat izin untuk mengatur Scheduler dan izin untuk menjalankan Script ke dalam peran.