Flow — Aliran
Flow adalah elemen yang menghubungkan elemen-elemen lain dalam diagram BPMN. Tanpa Flow, diagram hanyalah kumpulan simbol yang tidak terhubung. Flow mendefinisikan urutan, arah, dan jenis komunikasi antar elemen.
BPMN memiliki tiga jenis Flow, masing-masing dengan tujuan yang berbeda dan aturan penggunaan yang ketat.
1. Sequence Flow
Tampilan: Panah solid dengan kepala panah terisi (→)
Warna: Biasanya hitam
Fungsi: Mendefinisikan urutan eksekusi aktivitas di dalam satu Pool. Sequence Flow menjawab pertanyaan: "Setelah ini, apa yang dilakukan selanjutnya?"
Aturan Sequence Flow
- Hanya bisa menghubungkan elemen di dalam Pool yang sama
- Tidak bisa melewati batas Pool
- Setiap Activity (kecuali End Event) harus memiliki Sequence Flow keluar
- Setiap Activity (kecuali Start Event) harus memiliki Sequence Flow masuk
Jenis Sequence Flow
Normal Flow
Panah biasa tanpa kondisi — selalu dieksekusi.
Conditional Flow
Panah dengan tanda berlian kecil di pangkalnya. Dieksekusi hanya jika kondisi terpenuhi. Digunakan keluar dari Activity (bukan dari Gateway).
Default Flow
Panah dengan tanda garis miring kecil di pangkalnya. Dieksekusi jika tidak ada kondisi lain yang terpenuhi. Harus selalu ada pada Exclusive dan Inclusive Gateway.
Contoh Penggunaan
[Start Event] → [Terima Permohonan] → [Verifikasi Data] → ◇ Gateway
◇ → [Data Lengkap] → [Proses Permohonan]
◇ → [Data Tidak Lengkap] → [Minta Kelengkapan] (conditional)
◇ → [Error] (default)
Kesalahan Umum
- Sequence Flow antar Pool: tidak valid. Gunakan Message Flow untuk komunikasi antar Pool.
- Task tanpa Sequence Flow keluar: diagram tidak lengkap (kecuali End Event).
- Kondisi di Sequence Flow tanpa Gateway: lebih baik gunakan Exclusive Gateway daripada conditional flow langsung dari Activity.
2. Message Flow
Tampilan: Panah putus-putus dengan lingkaran kecil di pangkal dan kepala panah terbuka (○- - - →)
Warna: Biasanya hitam atau abu-abu
Fungsi: Merepresentasikan komunikasi (pengiriman pesan) antara dua Pool yang berbeda. Message Flow menjawab: "Informasi apa yang dikirimkan dari peserta A ke peserta B?"
Aturan Message Flow
- Hanya bisa menghubungkan elemen di Pool yang berbeda
- Tidak bisa berada di dalam satu Pool yang sama
- Biasanya menghubungkan: Task/Event di Pool A → Task/Event di Pool B
Yang Bisa Dihubungkan dengan Message Flow
| Dari | Ke |
|---|---|
| Pool (sebagai pengirim) | Pool (sebagai penerima) |
| Send Task / Message Throwing Event | Receive Task / Message Start Event / Message Catching Event |
Memberi Nama pada Message Flow
Selalu beri nama pada Message Flow untuk menjelaskan isi pesan. Tanpa nama, orang yang membaca diagram tidak tahu pesan apa yang dikirim.
Format nama yang baik: Gunakan nama dokumen atau data yang dikirim:
- ✅ "Formulir Permohonan Kredit"
- ✅ "Konfirmasi Pembayaran"
- ✅ "Notifikasi Penolakan"
- ❌ "Data" (terlalu umum)
- ❌ "Pesan" (tidak informatif)
Contoh
Pool: Pelanggan Pool: Bank
[Kirim Formulir] ─── "Formulir Permohonan" ──→ [Terima Formulir]
...proses berjalan...
[Terima Keputusan] ←── "Surat Keputusan Kredit" ─── [Kirim Keputusan]
Perbedaan Mendasar: Sequence Flow vs. Message Flow
| Aspek | Sequence Flow | Message Flow |
|---|---|---|
| Tampilan | Panah solid → | Panah putus-putus ○→ |
| Arah komunikasi | Internal (dalam Pool) | Eksternal (antar Pool) |
| Maknanya | "Lanjut ke langkah berikutnya" | "Kirim informasi ke peserta lain" |
| Bisa melewati Pool? | ❌ | ✅ (hanya antar Pool) |
3. Association
Tampilan: Garis titik-titik (···) tanpa kepala panah, atau dengan kepala panah untuk menunjukkan arah
Warna: Biasanya abu-abu
Fungsi: Menghubungkan Artifact (Data Object, Annotation, Group) ke elemen Flow lainnya. Association tidak mempengaruhi alur eksekusi — ini murni informasi tambahan.
Tiga Jenis Association
| Jenis | Simbol | Artinya |
|---|---|---|
| Undirected Association | ··· | Hubungan tanpa arah spesifik |
| Directed Association | ···→ | Data/informasi mengalir ke arah tertentu |
| Bidirectional Association | ←···→ | Data mengalir dua arah |
Kapan Menggunakan Association
-
Menghubungkan Data Object ke Task
Menunjukkan bahwa Task menggunakan atau menghasilkan data/dokumen tertentu. -
Menghubungkan Text Annotation ke elemen
Menambahkan penjelasan teks pada elemen tertentu. -
Menghubungkan Compensation Task
Compensation Boundary Event dihubungkan ke Compensation Task menggunakan Association (bukan Sequence Flow).
Contoh
[Verifikasi KTP] ···→ 📄 Data Object: "KTP yang Diverifikasi"
↑
[Task] ··· Annotation: "Verifikasi menggunakan API Dukcapil"
Panduan Cepat: Flow Mana yang Harus Dipakai?
| Situasi | Flow yang Tepat |
|---|---|
| Menghubungkan dua Task dalam proses yang sama | Sequence Flow |
| Menghubungkan Task ke Gateway | Sequence Flow |
| Bank mengirim dokumen ke nasabah | Message Flow |
| Sistem A memulai proses di Sistem B | Message Flow + Message Start Event |
| Menambahkan catatan pada sebuah Task | Association + Text Annotation |
| Menunjukkan dokumen yang digunakan Task | Association + Data Object |
| Menghubungkan Compensation | Association |
Kesalahan yang Paling Sering Terjadi
Sequence Flow Melewati Pool
Ini adalah kesalahan nomor satu dalam diagram BPMN pemula. Jika pelanggan "menyerahkan formulir" ke bank, bukan Sequence Flow dari Pool Pelanggan ke Pool Bank — melainkan Message Flow.
Salah: [Pelanggan: Kirim Formulir] → [Bank: Terima Formulir] (satu panah melewati batas Pool)
Benar: [Pelanggan: Kirim Formulir] ─ Message Flow ─→ [Bank: Terima Formulir]
Message Flow Di Dalam Pool
Message Flow hanya untuk komunikasi antar Pool. Di dalam Pool, gunakan Sequence Flow.
Association untuk Alur Eksekusi
Association tidak mengeksekusi apapun — ia hanya menambahkan informasi. Jangan gunakan Association untuk menghubungkan Task ke Task.
Selanjutnya: Artifact →