04.24.09
Perkenalan dengan workflow-ng
Workflow-ng adalah modul Drupal yang dapat digunakan untuk membuat aliran kerja (workflow). Tool-tool workflow sering digunakan untuk menyederhanakan pembuatan software. Proses-proses bisnis yang terjadi dalam suatu perusahaan dimodelkan ke dalam workflow. Keuntungannya adalah ketika proses bisnis berubah, kode software tidak perlu dirubah yang perlu dilakukan adalah mengubah aliran kerja pada tool-tool workflow yang digunakan. Selain workflow-ng tool workflow yang sering digunakan adalah jBPM (Java Bussiness Process Management).
Workflow-ng terdiri dari tiga komponen penting yaitu Configuration, Event, dan Action. Configuration adalah konfigurasi dari event yang disinkronkan dengan Action, atau dengan bahasa sederhana Ketika suatu Event terjadi Action apa yang akan dilakukan. Event adalah kejadian yang terjadi pada suatu situs. kejadian ini bisa bermacam-macam, kejadian seperti User Login, Content yang diedit sudah default di dalam modul workflow-ng, sedang untuk kejadian lain seperti penambahan data keuangan (pada modul keuangan) maka custom event seperti ini harus ditambahkan pada workflow-ng dengan perantara API yang disediakan. Action adalah aksi-aksi pada software, seperti redirect page, mengirim email secara otomatis, dll. Ketiga komponen ini bisa ditambah melalui user interface yang disediakan oleh workflow-ng atau melalui kode php secara kustom.
Paradigma pemrograman ketika menggunakan workflow-ng akan sedikit berubah, dimana kita difokuskan kepadaa merancang event dan action yang mungkin terjadi pada suatu aplikasi. Sehingga ketika di masa depan proses bisnis berubah tidak perlu lagi mengubah kode software.
Berikut contoh penerapan workflow-ng pada kasus permintaan data.
Proses Bisnis:
1. Pengguna menginput detil permintaan data
2. Status permintaan berubah menjadi Hold
3. Memo baru akan dibuat oleh sistem
Dari proses bisnis di atas terdapat satu event yaitu pengguna mensubmit permintaan dan dua action yaitu status permintaan menjadi hold dan membuat memo baru. Untuk mengakodomir ini perlu dibuat event dan action kustom. Berikut ini kode nya
function pesanan_event_info(){
return array(
'pesanan telah diinput' => array(
'#label'=>'Pesanan diinput',
'#arguments'=>array(
'pesanan' => array('#entity' => 'pesanan', '#label' => t('Pesanan yang masuk')),
),
'#module'=>t('Data Request'),
),
);
}
Kode di atas adalah kode event kustom yang renacanya akan di bangkitkan ketika pengguna mensubmit pesanannya. Selanjutnya pada fungsi submit form ditambahkan kode berikut:
function form_buat_pesanan_submit($form_id,$form_values){
$total = db_result(db_query('SELECT COUNT(*) FROM {pesanan}'));
$nextid=$total+1;
db_query("INSERT INTO {pesanan} (id,isi) VALUES (%d,'%s')",$nextid,$form_values['isi']);
$pesanan = new Pesanan($nextid,$form_values['isi']);
workflow_ng_invoke_event('pesanan telah diinput',$pesanan);
drupal_set_message('Laporan berhasil ditambahkan');
drupal_goto('pesanan/daftarpesanan');
}
Berikut adalah kode untuk acation yang akan dibangkitkan ketika event terjadi. Yang pertama harus dibuat adalah info tentang action, kodenya sbb:
function pesanan_action_info(){
return array(
'pesanan_action_statushold' => array(
'#label' => t('Ganti Status Pesanan menjadi hold'),
'#arguments' => array(
'pesanan' => array('#entity'=>'pesanan','#label'=>t('Pesanan'))
),
'#module'=>t('Data Request')
),
'buat_memo' =>array(
'#label' => t('Buat Memo'),
'#arguments' => array(
'pesanan' => array('#entity'=>'pesanan','#label'=>t('Pesanan'))
),
'#module'=>t('Data Request')
)
);
}
Untuk logika kode yang dilakukan action di atas berikut kode nya,
function pesanan_action_statushold($pesanan){
$pesanan->setAction("Hold");
}
function buat_memo($pesanan){
db_query("INSERT INTO {pesanan_memo} (no,isi,id_pesanan) VALUES ('%s','%s',%d)",'No-Memo','Berikut permintaan dari kami '.$pesanan->isi.'
',$pesanan->id);
}
Yang perlu diperhatikan adalah adanya argumen yang digunakan untuk memberikan informasi dari even kepada action. Argumen “pesanan” pada contoh di atas dibutuhkan oleh kode-kode aksi yang ada untuk menjalankan aksi nya.
Setelah selesai membuat event dan action yang mungkin dalam aliran kerja. Langkah berikutnya adalah mengkonfigurasi aturan, yaitu mengaitkan antara event dengan action. Atau dengan kata lain ketika event ini terjadi aksi-aksi apa saja yang akan terjadi. Mengkonfigurasi aturan ini bisa dengan programming ataupun menggunakan User Interface yang disediakan workflow-ng.
Berikut screenshot langkah-langkah nya,
Misal suatu saat proses bisnis di atas berubah, misal memo tidak perlu lagi dibuat, maka cukup dengan menghapus action “buat memo” dari konfigurasi rule.
Berikut kode lengkap modul drupa yang digunakan untuk contoh di atas:









harsya berkata,
April 26, 2009 pada 7:32 pm
Great tutorial, sebagai dasar memahami Workflow-ng sekaligus dasar pembuatan modul buat drupal.
fuad berkata,
April 27, 2009 pada 12:17 am
Terimakasih, ini juga baru belajar drupal n workflow-ng. Rencana ny workflow-ng ini mau dipake untuk apa?