Download sample code
Terkadang saat mengerjakan sebuah SSIS project, saya menemui case dimana suatu task hanya boleh dieksekusi apabila memenuhi kondisi tertentu. Salah satu case-nya adalah task yang hanya boleh dieksekusi pada akhir bulan atau setiap tanggal satu saja setiap bulannya.
Di SSIS, kita mengenal precedence constraint -yang bentuknya seperti anak panah-, yang menghubungkan antara executable, container, dan task dalam control flow. Di dalam precedence constraint tersebut kita dapat memasang kondisi dengan menggunakan expression untuk menentukan apakah task-nya dapat dieksekusi atau tidak. Untuk mempermudah contoh yang saya ceritakan tadi, saya akan menggunakan package yang telah saya buat pada post sebelumnya.
Pertama, saya menambahkan sebuah variable dengan nama LogicalDate dengan tipe data Datetime yang expression-nya berupa konversi variable ModifiedDate kedalam tipe data DT_DATE.
Kemudian saya menambahkan dua buah script task kedalam control flow dengan nama Daily Task dan Monthly Task, lalu menghubungkan Daily Task dengan Monthly Task.
Klik ganda pada precedence contraint yang menghubungkan antara kedua task tadi untuk menampilkan Precedence Constraint Editor. Pada Evaluation Expression pilih Expression and Constraint. Berhubung kita akan mengisi kondisi agar Monthly Task hanya boleh berjalan pada tanggal satu saja, isi Expression-nya dengan expression Day(@[User::LogicalDate]) == 1 lalu klik OK. Anda dapat mengklik tombol Test untuk mengecek apakah expression yang Anda masukkan sudah benar atau belum.
Sekarang, apabila kita mengisi variable UserModifiedDate dengan 2009-07-20 lalu mengeksekusi package-nya, hanya Daily Task yang dieksekusi. Hal ini dapat Anda lihat dari warna Daily Task yang berwarna hijau, sedangkan Monthly Task-nya tetap berwarna putih.
Bandingkan jika Anda mengeksekusi package dengan mengisi nilai variable UserModifiedDate dengan 2009-08-01, kedua task tadi akan berwarna hijau yang artinya keduanya dieksekusi.
