Form

Membuat Form untuk Proses SOP

Setelah SOP (BPMN) selesai didokumentasikan, langkah berikutnya adalah mendigitalisasikan proses dengan menambahkan Form pada activity yang membutuhkan input pengguna (misalnya User Task). Setiap komponen form terhubung ke process variable. Value dari komponen ini akan dikirim sebagai variabel proses saat submit dan dapat dipakai di gateway/condition, listener, service task, maupun laporan.

Prinsip penting:

  1. Satu komponen = satu variabel (melalui key/variable name). Pastikan penamaan konsisten dan unik per form.
  2. Tipedata mengikuti kebutuhan proses (string, number, boolean, date/time). Ini mempermudah validasi dan perhitungan.
  3. Keterlihatan & perilaku dinamis (tampil/sembunyi, aktif/non-aktif) dapat dikontrol oleh ekspresi berbasis data form.
  4. Kalkulasi mendukung otomasi nilai numerik menggunakan FEEL expression sehingga pengguna tidak perlu menghitung manual.

Komponen Form

Komponen field yang dapat digunakan saat ini adalah

Properties

Properti mengatur perilaku tiap komponen form. Di form.js Camunda tersedia tiga kelompok utama—General, Condition, Validation—dan di sistem ini ditambahkan Calculation untuk kebutuhan hitung angka dengan FEEL.

General

Atur identitas dan dasar komponen:

  1. Label: judul yang terlihat pengguna.
  2. Key (Variable Name): nama variabel proses (wajib unik dalam form).
  3. Description/Help text: petunjuk singkat di bawah field.
  4. Type: tipedata (Text, Number, Boolean, Date/Time, Select, dsb.).
  5. Default value / Placeholder: nilai awal atau contoh input.
  6. Read-only / Disabled: mencegah pengubahan manual (sering dipakai untuk field hasil kalkulasi).

Best Practice: Gunakan format snake_case atau camelCase ketika membuat Key (mis. jumlah_item, harga_satuan, subTotal).

Condition

Mengatur visibilitas komponen secara dinamis berbasis data form. Ekspresi dievaluasi saat nilai field lain berubah.

Contoh umum (FEEL):

status = "Ditolak" jumlah_item > 0 exists(diskon_persen) and diskon_persen > 0 metode_pembayaran in ["Transfer", "Kartu Kredit"]

Validation

Menjamin data memenuhi aturan yang dibutuhkan proses. Terdiri dari built-in constraints dan (opsional) ekspresi kustom.

  1. Required: wajib diisi.
  2. Min/Max (Number/Date): jumlah_item >= 1, tgl_mulai => tgl_selesai
  3. Pattern (Text): regex untuk email, nomor, dsb.

Calculation

Menghitung nilai Number secara otomatis dengan FEEL expression. Dipakai untuk subtotal, pajak, total, skor, dsb. Biasanya field ber-Calculation dibuat read-only agar tidak menimpa hasil hitung.

Contoh:

  1. Subtotal : harga_satuan * jumlah_item
  2. Diskon (rupiah) dari persen : (harga_satuan * jumlah_item) * (diskon_persen / 100)
  3. PPN 11% : (harga_satuan * jumlah_item - ((harga_satuan * jumlah_item) * (diskon_persen / 100))) * 0.11
  4. Total bayar (harga_satuan * jumlah_item) - ((harga_satuan * jumlah_item) * (diskon_persen / 100)) + ongkir