Subprocess dalam BPMN adalah bentuk pemodelan yang memungkinkan pengelompokan tugas-tugas yang lebih kecil dan terkait dalam suatu proses menjadi satu unit yang lebih besar. Subprocess juga memungkinkan tugas-tugas yang terkait dengan proses yang sama, dapat dilakukan dengan cara yang berbeda atau di dalam ruang lingkup yang lebih terbatas.
Dalam BPMN, sebuah Subprocess diwakili oleh sebuah bentuk persegi panjang dengan sudut-sudut yang membulat, dan biasanya memiliki deskripsi atau label yang menjelaskan tugas yang diperlukan di dalamnya. Subprocess dapat dibagi menjadi dua jenis, yaitu Embedded Subprocess dan Independent Subprocess.
Contoh penggunaan Subprocess adalah dalam proses bisnis pemesanan makanan di restoran. Subprocess dapat digunakan untuk menggabungkan tugas-tugas seperti memesan makanan, memproses pembayaran, dan pengiriman makanan menjadi satu unit yang lebih besar, yang memungkinkan restoran untuk memonitor keseluruhan proses secara lebih efisien.
Subprocess sangat berguna dalam pemodelan proses bisnis yang kompleks dan terstruktur, di mana beberapa tugas dan aktivitas terkait perlu dikelompokkan bersama dalam satu unit yang terkoordinasi dan mudah dipahami. Subprocess memungkinkan pemodelan proses bisnis yang lebih rapi dan terorganisir, serta mempermudah pemahaman dan pelacakan proses bisnis secara keseluruhan.
Embedded Sub Process adalah aktivitas yang terdiri dari aktivitas, gateway, event, dll yang membentuk sebuah proses sebagai bagian dari proses yang lebih besar. Subprocess didefinisikan di dalam sebuah parent process.
Subprocesses memiliki dua kegunaan yaitu:
Pemodelan subprocess adalah dengan menggunakan kotak yang diberi label Subprocess seperti contoh di bawah ini.
Perbedaan antara call activity dan embedded subprocess adalah call activity merujuk pada sebuah proses di luar definisi proses sedangkan embedded subprocess didefinisikan di dalam parent process. Manfaat utama dari call activity adalah reusability sehingga proses tersebut dapat dipanggil oleh sejumlah proses lainnya. Call activity divisualisasikan mirip dengan embedded subprocess namun dengan border yang lebih tebal.
Event subprocess adalah subprocess yang ditrigger oleh sebuah event. Event subprocess dapat ditambahkan di level process atau subprocess. Event subprocess dapat ditrigger dengan menggunakan message events, error events, signal events, timer events, atau compensation events. Event subprocess divisualisasikan mirip dengan embedded subprocess namun dengan border berupa garis putus-putus.
Transaction subprocess adalah subproses yang dapat digunakan untuk mengelompokkan beberapa aktivitas ke suatu transaksi. Transaksi adalah unit kerja logis yang memungkinkan pengelompokan serangkaian aktivitas individu, sehingga mereka bisa dikatakan berhasil atau gagal secara kolektif atau bersama-sama
Sebuah transaksi dapat memiliki tiga kemungkinan hasil:
Diagram berikut menggambarkan tiga hasil yang berbeda:
Sumber: Buku Tanya Jawab BPMN & Camunda (2023), Ditulis oleh Wisnu Manupraba & Novi Setiani