Quartz Scheduler: Memakai Ekspresi Cron


Beberapa job mungkin dapat dijadwalkan dengan trigger setiap selang waktu tertentu, misalnya setiap 30 menit, setiap jam, dan sebagainya. Tapi bagaimana dengan job yang harus dikerjakan setiap hari Senin sampai Jumat pada jam 17:30? Solusinya adalah memakai ekspresi yang mirip seperti yang dipakai oleh scheduler UNIX, cron. Untuk itu, Quartz menyediakan CronTrigger. Berikut ini adalah contoh kode program yang memakai CronTrigger:

CronTrigger cronDailyTrigger = new CronTrigger("Daily Trigger",
      Scheduler.DEFAULT_GROUP);
cronDailyTrigger.setCronExpression("0 10 18 ? * MON-FRI *");

Trigger di atas akan dikerjakan setiap jam 18:00 pada hari Senin hingga Jumat. Ekspresi cron pada Quartz lebih lengkap karena terdiri atas 7 bagian, dibandingkan dengan cron di UNIX yang hanya 5 bagian.

Secara berurutan dimulai dari kiri, ekspresi cron di Quartz terdiri atas nilai field yang dipisahkan oleh spasi, yaitu: detik, menit, jam, tanggal, bulan, hari, dan tahun.

Karekter “*” menunjukkan bahwa nilai pada field tersebut boleh bebas.

Karakter “?” hanya dapat dipakai di tanggal dan hari, menunjukkan bahwa kita tidak peduli pada nilai tersebut.

Perhatikan bahwa kita tidak boleh mengisi nilai untuk field tanggal dan field hari secara bersamaan, misalnya pada:
0 10 18 3 * MON *

Ekspresi di atas adalah ekspresi yang tidak valid, karena dapat bermakna ganda. Apakah yang dimaksud adalah tanggal 3 yang jatuh pada hari Senin setiap bulannya? Atau apakah yang dimaksud adalah pada tanggal 3 dan hari Senin setiap minggu? Quartz akan menghasilkan UnsupportedOperationException bila menemukan ekspresi seperti d atas.

Karakter “,” dapat dipakai untuk memisahkan sejumlah nilai untuk sebuah field, misalnya:
0 0 17,18,19 ? * * *
akan aktif setiap setiap jam 17, 18, dan 19.

Karakter “/” menandakan peningkatan, misalnya “0/15” pada field detik menunjukkan aktif setiap 15 detik, dan “0/30” pada menit menunjukkan aktif setiap 30 menit.

Karakter “-” dipakai untuk menunjukkan range/interval, misalnya “0-5” berlaku untuk nilai 0, 1, 2, 3, 4, dan 5.

Karakter “?” menunjukkan nilai terakhir yang berlaku untuk field tersebut. Karakter ini hanya dapat dipakai pada field tanggal dan hari. Misalnya:
0 0 17 L * ? *
menunjukkan bahwa trigger akan aktif pada tanggal terakhir di setiap bulan (bisa saja tanggal 28, 29, 30, atau 31, tergantung pada bulannya), di jam 17:00.

Jika kita menginginkan trigger aktif pada hari Minggu terakhir di setiap bulan, ekspresinya adalah:
0 0 17 ? * 1L *

Karakter “W” hanya dapat dipakai di field tanggal. Nilai seperti 25W akan menunjukkan tanggal yang paling dekat dengan tanggal 25 yang masih merupakan hari kerja.

Karakter “#” hanya dapat dipakai di field hari. Nilai seperti 6#3 menunjukkan hari Sabtu yang ketiga kalinya di bulan tersebut.

Perihal Solid Snake
I'm nothing...

One Response to Quartz Scheduler: Memakai Ekspresi Cron

  1. Tn Harisman mengatakan:

    bisa pake spesifik tahun gak om?

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: