Skip to main content

Start Proses atau Simpan Data

Pada umumnya setiap form memiliki 2 tombol untuk menyimpan data:

  • Simpan Draft, hanya menyimpan data ke database.
  • Simpan dan Proses, menyimpan data dan melakukan start process pada cumunda.

Fungsi startOrCreate()

Agar memudahkan untuk melakukan 2 proses tersebut dalam 1 fungsi sekali panggil. Terdapat fungsi startOrCreate pada class BpmnService pada bagian Frontend React.

  static startOrCreate = async (
probis: {
module: string;
table: string;
},
body: {
data: any;
withFile?: boolean;
},
kasatgasType?: string
) => {
if (body.data.status === DefaultStatus.DRAFT) {
const url = `/api/${probis?.module}/${probis?.table}`;

await axios.post(url, body.data);
} else {
const { data: responseData } = await this.start(probis, body.data, body.withFile);

if (kasatgasType) {
this.assignTaskKasatgas(responseData.data.id, kasatgasType, probis);
}
}
};

Sama seperti fungsi start() yang membedakan adalah kemampuan untuk memilah data yang mana akan disimpan sebagai Draft atau Instance dari Camunda berdasarkan status yang dikirimkan.

body.data.status === DefaultStatus.DRAFT;

Dan juga secara otomatis akan melakukan assignment ke kasatgas jika tipe kasatgas di inputkan kedalam paremeter.

if (kasatgasType) {
this.assignTaskKasatgas(responseData.data.id, kasatgasType, probis);
}

Contoh Implementasi

Adapun contoh dari pengimplemntasian fungsi tersebut ada di file src/pages/Penyidikan/Kpm203/Kpm203Create.tsx.

if (!id && !businessKey) {
await BpmnService.startOrCreate({ module, table }, { data: postData }, KasatgasType.PENYIDIKAN);
}