Tag Archives: status

Implementasi Proses Bisnis dengan Camunda (Bag. 1)

Dalam pengembangan suatu sistem informasi biasanya diawali dengan aktivitas requirement gathering. Di dalam aktivitas tersebut biasanya seorang analis, selain mengumpulkan informasi dari klien terkait kebutuhan sistem informasi, ia juga akan menggambar diagram alir (flowchart) proses bisnis yang akan diimplementasi nantinya.

Adanya flowchart ini dapat membantu menyamakan pemahaman antara pihak analis dan subject matter expert (SME) terkait. SME bisa memeriksa dan memastikan bahwa proses bisnis yang tergambar pada flowchart tersebut sudah sesuai.

Setelah diagram proses bisnis tersebut disetujui (sign-off) oleh pihak SME, biasanya developer bisa memulai membangun aplikasi — entah itu web, desktop, atau mobile based — dengan mengacu pada diagram tersebut.

Katakanlah aplikasi telah selesai dibuat. Pertanyaan berikutnya biasanya muncul. Bagaimanakah para stakeholder tahu bahwa aplikasi yang dibuat memang konsisten dengan proses bisnis yang sudah dirancang?

Dalam pemrograman biasa, kita biasanya akan membuat field status untuk menyatakan suatu proses bisnis sedang berada di task mana. Field status tersebut akan diperbaharui setiap kali suatu aksi — misalkan input data atau approval — dilakukan.

Dengan kata lain, status tersebut berperan dalam merepresentasikan suatu proses bisnis sedang berada di task mana. Pergantian status itu juga bisa kita gunakan dalam pengujian untuk memastikan ia telah sesuai dengan alur proses bisnis yang didefinisikan.

Pada kasus yang sederhana, field status tersebut cukup. Pada kasus yang sedikit lebih kompleks, misalkan ada beberapa parallel task yang harus dikerjakan sebelum aktor bisa melangkah ke task berikutnya, field status itu mungkin cukup tapi agak tricky untuk men-tracking status tiap parallel task tersebut. Kita perlu membuat field yang lain untuk menyimpan parallel task mana yang sudah dikerjakan.

Belum lagi kita perlu menyiapkan field untuk menyimpan waktu kapan tiap aksi dilakukan. Dengan kondisi yang demikian, tentunya akan terdapat banyak boilerplate code yang kita perlu implementasi.

Untungnya hal-hal tersebut dapat direduksi dengan memanfaatkan workflow engine yang sudah banyak bertebaran di sana. Untuk dapat menggunakannya kita perlu menggambarkan proses bisnis yang ingin kita implementasi dengan mengikuti standar BPMN (Business Process Model and Notation).

BPMN ini sepintas agak mirip dengan flowchart. BPMN memiliki lebih banyak notasi yang lebih detail dari segi kegunaannya. Untuk simbol gateway misalnya. Ada beberapa macam gateway di BPMN yang bisa digunakan seperti parallel gateway, inclusive gateway, dan exclusive gateway. Lalu ada simbol timer untuk menyatakan kapan suatu event akan dimulai atau selesai.

Contoh BPMN dengan melibatkan 3 aktor

Dari sisi programming, penggunaan workflow engine tentunya akan memudahkan, terutama untuk implementasi suatu proses bisnis yang kompleks dan panjang. Programmer bisa lebih fokus pada aliran data dalam proses bisni. Proses bisnis juga menjadi lebih auditable. Pihak analis dan SME juga dapat melihat sistem informasi yang diimplementasi memang konsisten dengan proses bisnis yang sudah dirancang dan disepakati di awal.

Ada banyak workflow engine yang bertebaran di luar sana. Salah satunya adalah Camunda, sesuai dengan judul tulisan ini. Camunda adalah Java-based workflow engine. Kita bisa menjalankan Camunda ini sebagai service yang terpisah atau embedded di dalam aplikasi Java kita. Namun sebetulnya sistem informasi yang kita bangun tidak harus menggunakan bahasa Java untuk dapat menggunakan Camunda ini karena Camunda menyediakan opsi REST API untuk integrasi.

Kenapa Camunda? Keputusan menggunakan Camunda ini sendiri sebetulnya karena rekomendasi dari partner kami. Kebetulan saya pribadi lebih banyak spend waktu sebagai Java developer jadi learning curve-nya tidak begitu curam untuk mempelajari bagaimana implementasi dengan menggunakan Camunda ini. Apalagi dibantu juga dengan dokumentasinya yang lengkap.

Selain itu Camunda juga memiliki fitur lain seperti menyediakan modeler untuk merancang proses BPMN. Lalu juga memiliki dashboard (cockpit) untuk visualisasi status process instanceprocess instance yang berjalan di dalam BPMN.

Saya sendiri sejujurnya agak telat mengetahui pasal BPMN ini. Mungkin baru sekitar 3 tahun yang lalu. Namun baru benar-benar memanfaatkannya untuk sebuah projek baru-baru ini.

Dahulu ketika kuliah Sistem Informasi sepertinya belum pernah disinggung pasal ini. Mungkin karena ketika itu belum terlalu populer. BPMN 2.0 sendiri baru diluncurkan pada Desember 2013.

Dalam tulisan berikutnya, saya akan mencoba membuat contoh sederhana bagaimana Camunda dapat diimplementasikan.

Aib

Sumber gambar: http://bit.ly/1fbkX0f

Sumber gambar: http://bit.ly/1fbkX0f

Beberapa hari yang lalu sempat beredar screenshot status seorang cewek di jejaring sosial Path. Status tersebut berisi mengenai keluhan dia terhadap seorang ibu hamil yang memintanya untuk memberikan tempat duduk di KRL.

Screenshot tersebut beredar secara masif di berbagai platform jejaring sosial, baik itu Path, Facebook, Twitter, Instagram, dan mungkin masih ada lagi yang lainnya. Banyak orang bereaksi negatif terhadap status tersebut.

Di sini saya tidak di sini saya tidak bermaksud untuk mengomentari isi status tersebut. Namun, secara konten saya setuju memang apa yang dia keluhkan itu menurut saya tidak bisa dibenarkan. Melalui tulisan ini saya ingin mengungkapkan keheranan saya bagaimana status tersebut bisa tersebar sedemikian hebohnya. Bahkan, sampai ada situs berita yang cukup populer — sering ada iklannya di Facebook — menjadikannya sebagai sebuah berita di halaman websitenya.

Setahu saya Path adalah jejaring sosial yang cukup menjamin privasi penggunanya. Path dimaksudkan sebagai media jejaring sosial tempat kita berbagi kabar — baik foto, teks, ataupun kegiatan kita — (seharusnya) hanya dengan teman-teman dekat kita. Karena itulah jumlah pengguna yang bisa menjadi teman dibatasi hingga 150 saja (terakhir yang saya tahu).

Makanya, ketika screenshot status dari Path ini tersebar, saya cukup terkesima. Kok ada ya seorang “teman” yang tega menyebarkan (sesuatu yang menurut saya adalah) aib dari temannya. Alhasil, temannya tersebut kemudian mendapatkan berbagai kecaman di dunia maya. Bahkan, banyak tangan-tangan kreatif yang sampai membuat meme-meme untuk menjadikannya sebagai sebuah lelucon.

Hmm… bagaimana ya perasaan sang pengambil screenshotKenapa dia tidak mengingatkan langsung temannya mengenai statusnya tersebut? Mungkin dewasa ini orang lebih suka menghukum kesalahan seseorang dengan menyebarkan kesalahannya sehingga publiklah yang menghukum (atau mem-bully) orang tersebut hingga ia akhirnya mengakui kesalahannya dan meminta maaf.

Well… saya bersyukur Islam memiliki ajaran yang sangat indah menurut saya. Kita diajarkan untuk tidak membuka aib orang lain. Jangankan aib orang lain, terhadap aib diri sendiri saja kita tidak dibenarkan untuk membukanya.

كُلُّ أُمَّتِي مُعَافًا إِلاَّ الْمُجَاهِرِيْنَ, وَإِنَّ مِنَ الْمُجَاهَرَةِ أَنْ يَعْمَلَ الرَّجُلُ باِللَّيْلِ عَمَلاً, ثُمَّ يُصْبِحُ وَقَدْ سَتَرَهُ اللهُ فَيَقُوْلُ: يَافُلاَنُ عَمِلْتُ الْبَارِحَةَ كَذَا وَكَذَا وَقَدْ بَاتَ سَتَرَهُ رَبُّهُ وَيُصْبِحُ يَكْشِفُ سِتْرَ اللهِ عَنْهُ

“Setiap umatku dimaafkan kecuali orang yang terang-terangan (melakukan maksiat). Dan termasuk terang-terangan adalah seseorang yang melakukan perbuatan maksiat di malam hari, kemudian di pagi harinya -padahal Allah SWT telah menutupnya-, ia berkata: wahai fulan, kemarin aku telah melakukan ini dan itu –padahal Allah SWT telah menutupnya- dan di pagi harinya ia membuka tutupan Allah SWT terhadapnya.”

Oke, saya tidak tahu bagaimana perasaan cewek pembuat status tersebut. Namun, saya membayangkan seandainya saya berada di pihak dia. Pertama, tentu saya akan merasa sangat malu. Dan kedua, saya akan merasa sangat kecewa dengan teman saya yang menyebarkannya. Sangat, sangat, sangat kecewa. Saya tentu akan sangat menghargai teman saya jika ia memberikan nasehat secara langsung bahwa apa yang saya katakan atau lakukan itu salah.

Sebagaimana hadits yang disebutkan pada gambar di bagian atas tulisan ini, keutamaan dari menutup aib orang lain ini adalah akan ditutupnya aib kita di dunia dan kelak di akhirat. Setiap orang pasti memiliki kekurangan, cela, dan dosa tertentu pada dirinya. Jika kita tanpa sengaja mengetahuinya, semoga hal tersebut dapat dijadikan pelajaran dan dapat memperbaiki diri agar tidak melakukan hal serupa.

Semoga kita bukan termasuk orang yang menyenangi tersebarnya kejelekan di tengah-tengah kita.

إِنَّ الَّذِيْنَ يُحِبُّوْنَ أَنْ تَشِيْعَ الْفَاحِشَةُ فِي الَّذِيْنَ آمَنُوا لَهُمْ عَذَابٌ أَلِيْمٌ فِي الدُّنْيَا وَاْلآخِرَةِ

“Sesungguhnya orang-orang yang menyenangi tersebarnya kekejian di tengah-tengah orang-orang yang beriman, mereka akan memperoleh azab yang pedih di dunia dan di akhirat.” (QS. An-Nur: 19)

Wallahu a’lam.