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);
}