External Task
Integrasi AlurKerja dengan sistem eksternal untuk menjalankan tugas-tugas tertentu.
Gambaran Umum
External Task adalah fitur dalam AlurKerja yang memungkinkan integrasi dengan sistem eksternal untuk menjalankan tugas-tugas tertentu dalam alur kerja. Dengan menggunakan External Task, AlurKerja dapat terhubung dengan aplikasi atau layanan lain melalui protokol HTTP, sehingga memberikan fleksibilitas dalam pengelolaan proses bisnis.
Tahapan
Pendefinisian External Task
Dalam model BPMN, External Task dapat didefinisikan dengan menggunakan elemen External Task
.

Properti | Deskripsi |
---|---|
Type | External |
Topic | string Nama topik |
Priority | number Prioritas task. Semakin tinggi, semakin didahulukan untuk dikerjakan. |
Proses akan berhenti pada External Task sampai ada worker yang mengambil tugas tersebut.

Pengambilan External Task
Untuk mengambil External Task, worker eksternal harus melakukan HTTP GET request ke endpoint AlurKerja yang sesuai dengan topik yang telah didefinisikan. Endpoint ini akan mengembalikan detail tugas yang harus dikerjakan, termasuk ID tugas, topik, dan informasi lainnya.
POST /external-task/featchAndLock
Contoh response
[
{
"activityId": "anActivityId",
"activityInstanceId": "anActivityInstanceId",
"errorMessage": "anErrorMessage",
"errorDetails": "anErrorDetails",
"executionId": "anExecutionId",
"id": "anExternalTaskId",
"lockExpirationTime": "2015-10-06T16:34:42.000+0200",
"processDefinitionId": "aProcessDefinitionId",
"processDefinitionKey": "aProcessDefinitionKey",
"processInstanceId": "aProcessInstanceId",
"tenantId": null,
"retries": 3,
"workerId": "aWorkerId",
"priority": 4,
"topicName": "createOrder",
"variables": {
"orderId": {
"type": "String",
"value": "1234",
"valueInfo": {}
}
}
},
{
"activityId": "anActivityId",
"activityInstanceId": "anActivityInstanceId",
"errorMessage": "anErrorMessage",
"errorDetails": "anotherErrorDetails",
"executionId": "anExecutionId",
"id": "anExternalTaskId",
"lockExpirationTime": "2015-10-06T16:34:42.000+0200",
"processDefinitionId": "aProcessDefinitionId",
"processDefinitionKey": "aProcessDefinitionKey",
"processInstanceId": "aProcessInstanceId",
"tenantId": null,
"retries": 3,
"workerId": "aWorkerId",
"priority": 0,
"topicName": "createOrder",
"variables": {
"orderId": {
"type": "String",
"value": "3456",
"valueInfo": {}
}
}
}
]
Penyelesaian External Task
Setelah worker eksternal menyelesaikan tugas, mereka harus mengirimkan HTTP POST request ke endpoint AlurKerja untuk menyelesaikan tugas tersebut. Request ini harus mencakup ID tugas dan hasil dari tugas yang telah dikerjakan.
POST /external-task/{id}/complete
Content-Type: application/json
{
"variables": {
"result": "hasil dari tugas"
}
}
Penanganan Kegagalan
Jika worker eksternal mengalami kegagalan dalam menyelesaikan tugas, mereka dapat mengirimkan HTTP POST request ke endpoint AlurKerja untuk menandai tugas sebagai gagal. Request ini harus mencakup ID tugas dan alasan kegagalan.
POST /external-task/{id}/fail
Content-Type: application/json
{
"errorMessage": "Alasan kegagalan",
"variables": {
"errorDetails": "Detail kesalahan yang terjadi"
}
}
Demo
- Memulai proses: https://alurkerja.com/public/camunda/241/1257/start
- Simulasi worker eksternal: https://alurkerja-external-task-main-d063ku.laravel.cloud/
Kelebihan External Task
- Integrasi Mudah: AlurKerja dapat berkomunikasi dengan sistem eksternal melalui HTTP, memungkinkan integrasi yang fleksibel.
- Polyglot Architectures: Tugas spesifik dapat ditulis dalam berbagai bahasa pemrograman, sehingga dapat memanfaatkan alat dan teknologi yang paling sesuai.
- Skalabilitas: Tugas-tugas (tasks) dapat didistribusikan ke banyak worker secara paralel, sehingga memungkinkan sistem untuk melakukan skala horizontal. Hal ini bermanfaat ketika volume proses meningkat, karena kapasitas pemrosesan dapat ditingkatkan dengan menambahkan worker baru tanpa mengubah arsitektur utama.
- Ketahanan Sistem (Resilience): Worker eksternal berjalan secara independen dari engine BPMN, sehingga meningkatkan ketahanan sistem secara keseluruhan. Jika worker mengalami kegagalan, proses utama dalam workflow tidak langsung terpengaruh, dan worker dapat dimonitor atau direstart secara terpisah.
Kekurangan External Task
- Ketergantungan Eksternal: Mengandalkan sistem eksternal dapat menambah kompleksitas dan potensi titik kegagalan.
- Overhead Jaringan: Komunikasi melalui HTTP dapat menambah latensi, terutama jika sistem eksternal berada di lokasi yang jauh atau tidak stabil.