April 24, 2009

Perkenalan dengan workflow-ng

Posted in komputer, php tagged , pada 3:10 am oleh fuad

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("I
NSERT 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:

Download Kode

4 Komentar »

  1. harsya said,

    Great tutorial, sebagai dasar memahami Workflow-ng sekaligus dasar pembuatan modul buat drupal.

    • fuad said,

      Terimakasih, ini juga baru belajar drupal n workflow-ng. Rencana ny workflow-ng ini mau dipake untuk apa?

  2. Tantan said,

    Saya punya contoh kasus seperti ini :
    1. User input node,
    2. setelah submit maka user tersebut harus input node lagi, dan node (no 1) itu berkaitan sebagai parent node.
    Untuk menandakan parent node di node yang kedua saya pake CCK node reference.
    Misalnya node yang pertama type nodenya : nama perusahaan dan node yang kedua type nya alamat perusahaan yang alamatnya itu bisa banyak.
    Apa workflow ng apa bisa dipake seperti kasus diatas?
    Terimakasih

  3. […] Perkenalan dengan workflow-ng April 2009 3 comments […]


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

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: