Pada alurkerja terdapat BpmnModel yang dapat diimplementasikan ke model yang menjadi awal dari bisnis proses.
Dari BpmnModel kita bisa mendapatkan list user task dari BPMN yang berkaitan dengan model tersebut.
Namun, jika BPMN anda memiliki sub process dan anda ingin mengambil user task dari sub process tersebut, anda perlu meng-override fungsi getUserTask.
public function getUserTask(): array
{
//get user task from main bpmn
$userTask = parent::getUserTask();
//get user task from sub process
$userTaskSubProcess = $this->pareseBpmnFromProcessDefinition('sub_process_name');
//merge user task from main bpmn and sub process
$userTask = array_merge($userTask, $userTaskSubProcess);
return $userTask->toArray();
}
Kode di atas merupakan contoh dari implementasi fungsi getUserTask yang telah di-override.
Awalnya kita mendapatkan user task dari BPMN utama dengan parent::getUserTask.
Kemudian anda bisa mendapatkan user task dari sub process dengan menggunakan fungsi pareseBpmnFromProcessDefinition().
Untuk sub_process_name silahkan disesuaikan dengan sub process ID dari yang anda gunakan.
Setelah mendapatkan semua user task yang diinginkan, selanjutnya anda gabungkan user task tersebut, disini menggunakan array_merge.
Dengan cara ini, anda bisa mendapatkan semua user task yang terkait dengan BPMN anda, baik yang utama maupun yang sub proceess.