Official StoreTekan tombol di atas untuk membeli semua alat dan bahan eksperimen di web ini

Menjalankan Aplikasi Delphi secara Berkala dengan Windows Task Scheduler

Mungkin Anda sedang mencari cara agar aplikasi Delphi kita (yang sudah berbentuk executable file/exe) dapat berjalan secara otomatis pada waktu-waktu tertentu sesuai jadwal. Pada salah satu case project saya, aplikasi ini running di server yang menyala 24 jam, dan hanya akan running pada jam-jam tertentu saja sesuai jadwal. Untuk solving case ini ada dua alternatif, yaitu membuat aplikasi yang berjalan at the background dalam bentuk windows service atau membuat aplikasi exe biasa namun hanya berjalan (running) saat-saat tertentu saja. Jika aplikasi running terus, juga tidak mungkin karena unpredictable condition, dimana kadang saat peak memory usage atau karena suatu hal aplikasi bisa hang dan closed sendiri. Kalau ada kejadian seperti ini, siapa yang akan menjalankan aplikasi? TIDAK ADA. Karena aplikasi berjalan di server, dimana tidak ada seorang pun yang aware terhadap aplikasi

Untuk case project kali ini saya memilih opsi kedua, dengan pertimbangan aplikasi tidak akan membebani resource memory di server. Coba Anda bayangkan jika aplikasi Anda terus-terusan running di laptop Anda sendiri. Ini tentunya akan menghabiskan memory (RAM) bukan? Belum lagi aplikasi tiba-tiba hang karena suatu hal. Ingat, aplikasi berjalan di server, jadi harus kita antisipasi agar aplikasi tetap dapat bekerja dengan sentuhan tangan manusia yang minimal. Jika aplikasi hanya berjalan saat dibutuhkan dan langsung dimatikan tentunya hanya akanmembutuhkan memory saat berjalan saja, dan ketika dimatikan (aplikasi saya diprogram terminated sendiri dalam waktu 5 detik), akan membebaskan memory sehingga dapat digunakan server untuk keperluan yang lain.

Aplikasi Delphi

Bagaimana membuat aplikasi seperti ini dengan Delphi? Hmm, cukup mudah membuatnya. Anda cukup membuat timer sebagai delay (misal 5 detik) untuk kemudian mengeksekusi script Application.Terminate; agar aplikasi mati sendiri. Contoh script-nya sebagai berikut

Ambil komponen Timer di Component Pallete di tab ’System’. Letakkan di Form Designer, dan double click untuk mengisi event handler onTimer sebagai berikut:

Di jendela Object Inspector, atur properti ‘Enabled’ menjadi ‘false’ dan properti ‘Interval’ menjadi ‘5000’ (5 detik) atau berapapun sesuai kebutuhan Anda. Kemudian double click form Anda untuk masuk ke event ‘onCreate’ milik komponen Form, dan isikan event handler sebagai berikut:

Sudah selesai 🙂 . Udah, gitu doang. Jadi dengan dua event handler di atas, jika pertama kali aplikasi running maka form akan diciptakan. Pada saat ini even onCreate miliknya komponen Form akan terpicu sehingga akan mengaktifkan timer (timer1.Enabled:=true;). Karena Timer1 diset intervalnya 5000, maka 5 detik kemudian Timer1 event onTimer-nya akan terpicu dan akan mengeksekusi perintah di dalamnya, yakni ‘application.Terminate;’. Dengan demikian, otomatis aplikasi akan mati sendiri. Gimana? Mudah bukan? 🙂 . Anda dapat menambahkan script yang lain sesuai kebutuhan Anda sebelum Timer mematikan aplikasi.

Windows Task Scheduler

Untuk sisi aplikasi Delphi sudah selesai. Mungkin Anda bertanya-tanya, aplikasi Delphi kan hanya mengeksekusi script tertentu termasuk script untuk mematikan dirinya sendiri. Trus, siapa yang menjalankan aplikasi Delphi? Apakah harus membuat aplikasi Delphi lagi untuk menjalankan aplikasi Delphi tadi. Duh… tidak usah, nanti malah jadi lingkaran setan 🙂 . Anda cukup membuat scheduler dengan aplikasi bawaan Windows yakni ‘Task Scheduler’. Dengan aplikasi ini Anda dapat membuat semacam jadwal berbasis waktu yang presisi dengan action yang dapat diatur sendiri (programmable action). Bagaimana caranya? Simak langkah-langkah berikut ini (Windows 7)

  1. Buka Control Panel, double click Administrative Tools dan pilih Task Scheduler control-panel-administrative-tools-windows-task-scheduler
  2. Buat task baru dengan memilih ‘Create Basic Task’ create-basic-task-task-scheduler
  3. Isikan nama task Anda (mandatory), dan isi deskripsinya (opsional). create-basic-task-wizard-delphi-app

Buat nama task yang mudah diingat dan sesuai peruntukannya agar suatu saat jika terjadi apa-apa, Anda dapat dengan mudah menemukannya.

  1. Pilih ‘daily’, untuk menjalankan aplikasi tiap harinya create-basic-task-wizard-set-daily
  2. Atur waktu eksekusi aplikasi create-basic-task-wizard-set-waktu
  3. Atur action dengan ‘Start Program’ create-basic-task-wizard-set-action
  4. Pilih aplikasi yang akan dijalankan. Pada contoh ini saya memilih aplikasi ‘Genset Reminder’, yakni semacam aplikasi yang akan mengingatkan para engineer/teknisi untuk segera maintenance genset (ganti oli, filter udara, cek solar, dll) sesuai jadwalnya. Notifikasi dikirim menggunakan SMS.  create-basic-task-wizard-set-aplikasi-delphi
  5. Klik ‘Finish’ untuk mengakhiri settingan task scheduler dan memulai schedule-nya  create-basic-task-wizard-finish

Untuk settingan ‘basic task’, scheduler hanya akan dieksekusi jika komputer dalam keadaan mendapat tegangan dari power adapter. Jika Anda menggunakan laptop dan dalam posisi discharge (power dari baterai), scheduler tidak akan jalan. Untuk mengatasinya, saat sebelum finish pilih (centang) opsi ‘Open the properties dialog for this task when I click Finish’ (angka ‘1’ pada gambar di atas). Kemudian cari tab ‘Condition’ dan uncheck opsi ‘Start the task only if the computer is on AC power’.

create-task-condition-ac-power

Semua settingan sudah selesai, kini aplikasi Delphi Anda akan dieksekusi tepat sesuai jadwal yang sudah Anda buat tadi. Dengan demikian aplikasi Delphi tidak akan membebani server, tidak menghabiskan banyak resource dan tentunya lebih reliable untuk running on the server.

Jika Anda menggunakan OS Linux di server, Anda dapat menggunakan ‘CRON’ untuk menggantikan fungsi Task Scheduler di Windows.

Add a Comment

Your email address will not be published. Required fields are marked *

error: Content is protected !!