Workflow adalah aliran proses dari state di openERP. Digunakan agar status pada transaksi dapat dimonitor dan sesuai dengan alur proses yang telah ditentukan.

Contoh kasus pada pembelian, dimana memiliki alur :

draft -> verifikasi/batal (stop) -> setuju/batal (stop)  -> pesan/batal (stop)  -> batal (stop)

Proses batal dapat dilakukan pada state verifikasi, setuju dan pesan

 

*1) View (button yang menjalankan workflow)

<button name=”button_verifikasi” states=”draft” string=”Verifikasi” icon=”gtk-yes” colspan=”2″/>

<button name=”button_setuju” states=”verifikasi” string=”Setuju” icon=”gtk-yes” colspan=”2″/>

<button name=”button_pesan” states=”setuju” string=”Pesan” icon=”gtk-yes” colspan=”2″/>

<button name=”button_batal” states=”verifikasi,setuju,pesan” string=”Batal” icon=”gtk-no” colspan=”2″/>

*2) workflow_PermintaanPembelian.xml
<?xml version=”1.0″ encoding=”utf-8″?>

<openerp>

<data>

<!– Workflow–>

<record id=”workflow_purchase_PermintaanPembelian” model=”workflow”>

<field name=”name”>Workflow Permintaan Pembelian</field>

<field name=”osv”>purchase.permintaan_pembelian</field>

<field name=”on_create”>True</field>

</record>

<!– Action : draft –>

<record id=”actwkf_purchase_PermintaanPembelian_Draft” model=”workflow.activity”>

<field name=”wkf_id” ref=”workflow_purchase_PermintaanPembelian”/>

<field name=”flow_start”>True</field>

<field name=”name”>draft</field>

</record>

<!– Action : verifikasi –>

<record id=”actwkf_purchase_PermintaanPembelian_Verifikasi” model=”workflow.activity”>

<field name=”wkf_id” ref=”workflow_purchase_PermintaanPembelian”/>

<field name=”name”>verifikasi</field>

<field name=”kind”>function</field>

<field name=”action”>workflow_action_Verifikasi()</field>

</record>

<!– Action : setuju –>

<record id=”actwkf_purchase_PermintaanPembelian_Setuju” model=”workflow.activity”>

<field name=”wkf_id” ref=”workflow_purchase_PermintaanPembelian”/>

<field name=”name”>setuju</field>

<field name=”kind”>function</field>

<field name=”action”>workflow_action_Setuju()</field>

</record>

<!– Action : pesan –>

<record id=”actwkf_purchase_PermintaanPembelian_Pesan” model=”workflow.activity”>

<field name=”wkf_id” ref=”workflow_purchase_PermintaanPembelian”/>

<field name=”name”>pesan</field>

<field name=”kind”>function</field>

<field name=”action”>workflow_action_Pesan()</field>

</record>

<!– Action : batal –>

<record id=”actwkf_purchase_PermintaanPembelian_Batal” model=”workflow.activity”>

<field name=”wkf_id” ref=”workflow_purchase_PermintaanPembelian”/>

<field name=”name”>batal</field>

<field name=”flow_stop”>True</field>

<field name=”kind”>function</field>

<field name=”action”>workflow_action_Batal()</field>

</record>

<!– Transisi –>

<!– Transisi Draft – Verifikasi  –>

<record id=”transition_purchase_PermintaanPembelian_Draft_Verifikasi” model=”workflow.transition”>

<field name=”act_from” ref=”actwkf_purchase_PermintaanPembelian_Draft”/>

<field name=”act_to” ref=”actwkf_purchase_PermintaanPembelian_Verifikasi”/>

<field name=”signal”>button_verifikasi</field>

</record>

<!– Transisi Verifikasi – Setuju  –>

<record id=”transition_purchase_PermintaanPembelian_Verifikasi_Setuju” model=”workflow.transition”>

<field name=”act_from” ref=”actwkf_purchase_PermintaanPembelian_Verifikasi”/>

<field name=”act_to” ref=”actwkf_purchase_PermintaanPembelian_Setuju”/>

<field name=”signal”>button_setuju</field>

</record>

<!– Transisi Verifikasi – Batal  –>

<record id=”transition_purchase_PermintaanPembelian_Verifikasi_Batal” model=”workflow.transition”>

<field name=”act_from” ref=”actwkf_purchase_PermintaanPembelian_Verifikasi”/>

<field name=”act_to” ref=”actwkf_purchase_PermintaanPembelian_Batal”/>

<field name=”signal”>button_batal</field>

</record>

<!– Transisi Setuju – Pesan  –>

<record id=”transition_purchase_PermintaanPembelian_Setuju_Pesan” model=”workflow.transition”>

<field name=”act_from” ref=”actwkf_purchase_PermintaanPembelian_Setuju”/>

<field name=”act_to” ref=”actwkf_purchase_PermintaanPembelian_Pesan”/>

<field name=”signal”>button_pesan</field>

</record>

<!– Transisi Setuju – Batal  –>

<record id=”transition_purchase_PermintaanPembelian_Setuju_Batal” model=”workflow.transition”>

<field name=”act_from” ref=”actwkf_purchase_PermintaanPembelian_Setuju”/>

<field name=”act_to” ref=”actwkf_purchase_PermintaanPembelian_Batal”/>

<field name=”signal”>button_batal</field>

</record>

<!– Transisi Pesan – Batal  –>

<record id=”transition_purchase_PermintaanPembelian_Pesan_Batal” model=”workflow.transition”>

<field name=”act_from” ref=”actwkf_purchase_PermintaanPembelian_Pesan”/>

<field name=”act_to” ref=”actwkf_purchase_PermintaanPembelian_Batal”/>

<field name=”signal”>button_batal</field>

</record>

</data>

</openerp>

*3) permintaan_pembelian.py

def workflow_action_Verifikasi(self,cr,uid,ids,context={}):

for id in ids:

self.write(cr,uid,[id],{‘state’ : ‘verifikasi’})

self.write(cr,uid,[id],{‘user_verifikasi_id’ : uid})

self.write(cr,uid,[id],{‘tanggal_verifikasi’ : time.strftime(‘%Y-%m-%d’)})

return True

def workflow_action_Setuju(self,cr,uid,ids,context={}):

for id in ids:

self.write(cr,uid,[id],{‘state’ : ‘setuju’})

self.write(cr,uid,[id],{‘user_setuju_id’ : uid})

self.write(cr,uid,[id],{‘tanggal_setuju’ : time.strftime(‘%Y-%m-%d’)})

return True

def workflow_action_Pesan(self,cr,uid,ids,context={}):

for id in ids:

self.write(cr,uid,[id],{‘state’ : ‘pesan’})

return True

def workflow_action_Batal(self,cr,uid,ids,context={}):

for id in ids:

self.write(cr,uid,[id],{‘state’ : ‘batal’})

return True

*4) Daftarkan pada __terp__