Series MapLesson 14 / 60
Focus mode active/Press Alt+Shift+R to toggle/Esc to exit
Build CoreOrdered learning track

Camunda 7 Architecture Deep Dive

Arsitektur Camunda 7: process engine, process application, command context, job executor, public services API, database schema, history, Cockpit, Tasklist, dan operational implications.

17 min read3271 words
PrevNext
Lesson 1460 lesson track12–33 Build Core
#camunda#camunda-7#process-engine#java+6 more

Part 014 — Camunda 7 Architecture Deep Dive

Fokus part ini: memahami Camunda 7 sebagai Java-based, database-backed BPMN process engine yang bisa embedded/shared/standalone, bukan sebagai sekadar “tool gambar BPMN”.

Camunda 7 penting dipahami secara arsitektural karena modelnya sangat berbeda dari Camunda 8/Zeebe. Camunda 7 hidup dekat dengan JVM application architecture. Ia dapat embedded di aplikasi Java, berjalan sebagai shared engine di application server, atau diakses via REST sebagai remote engine. Ia menyimpan runtime state ke relational database dan menjalankan async work melalui job executor.

Dalam konteks enterprise Java/JAX-RS, pemahaman ini menentukan:

  • transaction boundary;
  • classloading delegate;
  • deployment model;
  • database pressure;
  • retry/incident lifecycle;
  • history retention;
  • operational debugging;
  • scaling pattern;
  • migration risk menuju Camunda 8.

1. Big Picture: Apa Itu Camunda 7?

Camunda 7 adalah process engine berbasis Java untuk mengeksekusi BPMN/DMN/CMMN model. Untuk seri ini, fokus kita adalah BPMN dan DMN.

Mental model:

BPMN/DMN files
   -> deployment repository
   -> process definition / decision definition
   -> process instance runtime
   -> execution/token/task/job/variable state
   -> async job executor / external task worker / Java delegate
   -> history and operational tooling

Camunda 7 bukan broker event. Bukan database bisnis. Bukan replacement untuk domain service. Ia adalah engine yang mengelola lifecycle process instance.


2. High-Level Architecture

flowchart TD Modeler[Camunda Modeler<br/>BPMN / DMN / Forms] --> Repo[RepositoryService<br/>Deployments & Definitions] API[JAX-RS / Java App / REST Client] --> Runtime[RuntimeService<br/>Start / Correlate / Query Runtime] API --> TaskSvc[TaskService<br/>Human Task Ops] API --> History[HistoryService<br/>Audit & History Query] API --> Mgmt[ManagementService<br/>Jobs / Incidents / Admin] Repo --> Engine[Camunda 7 Process Engine] Runtime --> Engine TaskSvc --> Engine History --> Engine Mgmt --> Engine Engine --> DB[(Relational DB<br/>ACT_RE / ACT_RU / ACT_HI / ACT_ID / ACT_GE)] Engine --> JobExec[Job Executor<br/>Timers / Async Continuations] Engine --> Delegate[Java Delegate / Listener] Engine --> ExternalTask[External Task Queue] ExternalTask --> Worker[External Task Worker<br/>Java/JAX-RS service] Engine --> Cockpit[Cockpit] Engine --> Tasklist[Tasklist] Engine --> Admin[Admin]

Arsitektur ini punya implikasi besar: process execution, public API, command context, persistence, job acquisition, delegate execution, dan history semuanya berhubungan erat dengan database dan transaction model.


3. Deployment Modes

Camunda 7 dapat dipakai dalam beberapa mode.

3.1 Embedded Engine

Process engine berada di dalam aplikasi Java.

JAX-RS application JVM
  ├─ REST resources
  ├─ domain services
  ├─ MyBatis/JDBC
  ├─ Camunda process engine
  ├─ Java delegates/listeners
  └─ job executor, jika aktif

Kelebihan:

  • integrasi Java mudah;
  • delegate bisa memanggil service internal langsung;
  • deployment sederhana untuk aplikasi kecil/menengah;
  • transaction integration bisa dekat dengan aplikasi.

Risiko:

  • process engine lifecycle mengikuti aplikasi;
  • job executor bisa aktif di banyak replica;
  • classloading dan deployment coupling tinggi;
  • BPMN change bisa ikut release aplikasi;
  • sulit memisahkan engine operation dari service operation;
  • scale process engine dan business API tidak bisa dipisah mudah.

3.2 Shared Engine

Engine dikontrol oleh runtime container seperti Tomcat/application server. Aplikasi process menggunakan engine yang sama.

Kelebihan:

  • engine lifecycle bisa dipisah dari app;
  • beberapa application bisa memakai engine yang sama;
  • deployment process application bisa lebih modular.

Risiko:

  • classloading lebih kompleks;
  • dependency version harus hati-hati;
  • shared resource contention;
  • operational ownership harus jelas;
  • kesalahan satu process application dapat memengaruhi engine bersama.

3.3 Standalone / Remote Engine via REST

Aplikasi mengakses Camunda 7 lewat REST API.

Kelebihan:

  • boundary lebih jelas;
  • engine bisa dioperasikan terpisah;
  • non-Java client bisa integrasi;
  • service tidak harus embed engine.

Risiko:

  • REST latency;
  • transaction tidak shared dengan business DB;
  • idempotency dan retry lebih penting;
  • API compatibility dan auth harus dikelola;
  • operational debugging perlu korelasi antar service/engine.

4. Process Engine Core Components

4.1 Public Services API

Camunda 7 mengekspos API service-oriented. Service yang umum:

ServiceTanggung jawab
RepositoryServiceDeployment, process definition, decision definition
RuntimeServiceStart/query process instance, correlate message, variable runtime
TaskServiceHuman task: claim, assign, complete, query
HistoryServiceQuery historical process/task/activity/variable/decision data
ManagementServiceJob, incident, deployment, metrics, admin/maintenance operations
ExternalTaskServiceFetch/lock/complete/fail external task
IdentityServiceUser/group identity jika digunakan
AuthorizationServiceAuthorization model jika enabled
DecisionServiceEvaluate DMN decision
FormServiceStart/task form data untuk model form tertentu

Dalam aplikasi JAX-RS, resource method biasanya tidak langsung memanipulasi table ACT_*; ia memanggil service API atau REST API.

4.2 BPMN Core Engine

BPMN engine bertugas:

  • parse BPMN XML;
  • membangun internal process definition;
  • menjalankan token/execution semantics;
  • mengeksekusi gateway, event, task, subprocess;
  • membuat job untuk async/timer;
  • membuat event subscription untuk message/signal;
  • membuat user task;
  • mengelola incident saat job gagal.

4.3 Command Context

Mayoritas operasi engine berjalan melalui command-style execution.

Mental model:

API call enters engine
  -> command interceptor chain
  -> command context created
  -> transaction resources attached
  -> engine reads/writes runtime state
  -> flush DB operations
  -> commit/rollback

Kenapa ini penting?

Karena delegate, listener, job executor, API call, dan task completion bisa berjalan dalam transaction boundary tertentu. Jika exception terjadi, state engine dan side effect bisa rollback atau tidak, tergantung letak boundary.


5. Process Application

Process application adalah packaging/deployment concept yang menghubungkan process definition dengan application code/resource.

Dalam Camunda 7 Java application, process application dapat menyediakan:

  • BPMN/DMN/forms artifact;
  • Java delegate classes;
  • listener classes;
  • expression-resolved beans;
  • deployment descriptor processes.xml;
  • process archive;
  • classloader context.

Operational concern:

  • apakah BPMN di-deploy saat startup;
  • apakah deployment duplicate terjadi di setiap pod;
  • apakah process application redeploy mengubah definition version;
  • apakah old process instance masih butuh class lama;
  • apakah job executor node bisa memuat delegate class yang benar.

6. Repository Layer

Repository layer menyimpan deployed artifact:

  • process definition;
  • decision definition;
  • case definition jika digunakan;
  • deployment metadata;
  • BPMN XML resource;
  • diagram/resource terkait.

Pertanyaan review:

  • Apakah deployment process dilakukan oleh aplikasi, pipeline, atau manual upload?
  • Apakah setiap release membuat version baru?
  • Apakah process key stabil?
  • Apakah version tag digunakan?
  • Apakah rollback process definition dipahami?
  • Apakah running instances tetap berjalan pada old version?

7. Runtime Layer

Runtime layer menyimpan process instance aktif.

Konsep utama:

  • process instance;
  • execution tree;
  • current activity;
  • variable;
  • event subscription;
  • job;
  • incident;
  • active user task.

Di database, runtime state berada di table ACT_RU_*.

Prinsip:

  • runtime table harus relatif kecil;
  • data runtime hilang dari runtime table saat process selesai;
  • audit pindah ke history table sesuai history level;
  • query runtime untuk product API high-QPS biasanya bukan ide baik;
  • gunakan read model jika user-facing status butuh scale tinggi.

8. Task Layer

User task di Camunda 7 dikelola oleh TaskService dan dapat terlihat di Tasklist.

Task data umumnya mencakup:

  • task id;
  • process instance id;
  • execution id;
  • assignee;
  • candidate group/user;
  • create time;
  • due date;
  • follow-up date;
  • task local variable;
  • form key/data;
  • delegation/claim state.

Failure mode:

  • task tidak muncul karena candidate group salah;
  • task completed dua kali oleh user/API berbeda;
  • task visible lintas tenant karena authorization salah;
  • task aging tidak ter-alert;
  • task form menyimpan PII tanpa retention/logging policy;
  • domain state sudah berubah tetapi task masih aktif.

9. History Layer

History layer menyimpan data historis berdasarkan historyLevel.

History penting untuk:

  • audit;
  • debugging;
  • SLA analysis;
  • process mining;
  • compliance evidence;
  • root cause incident;
  • user operation log.

Tetapi history juga menyebabkan:

  • table growth;
  • storage cost;
  • slow query;
  • sensitive data retention risk;
  • cleanup complexity;
  • migration/upgrade concern.

Review historyLevel:

LevelImplikasi umum
none/lowObservability dan audit terbatas
activityActivity history tersedia, variable detail mungkin terbatas
audit/fullDebugging dan audit lebih kaya, DB load dan retention risk lebih besar

Nama level dan capability spesifik perlu diverifikasi pada versi Camunda 7 yang digunakan.


10. Job Executor

Job executor adalah komponen yang mengambil dan menjalankan job asynchronous.

Job dibuat oleh:

  • timer event;
  • async before;
  • async after;
  • failed retry;
  • beberapa operation internal;
  • batch operation.

Lifecycle job:

Job created
  -> job due date reached
  -> job executor acquisition
  -> job locked by executor
  -> command execution
  -> success: job removed / process continues
  -> failure: retries decremented / due date recalculated
  -> retries exhausted: incident created

Kenapa async boundary penting?

Tanpa async boundary, beberapa step bisa berjalan dalam satu transaction. Jika step terakhir gagal, step sebelumnya bisa ikut rollback.

Dengan async boundary, engine menyimpan state sebelum/atau sesudah activity tertentu dan melanjutkan via job executor.

Contoh:

Start -> Validate Quote -> asyncBefore Publish Event -> End

Jika Publish Event gagal, process bisa berhenti di failed job/incident tanpa mengulang Validate Quote, tergantung boundary dan side effect design.

Failure mode job executor

  • job executor tidak aktif;
  • job acquisition lambat;
  • thread pool habis;
  • DB lock contention;
  • deployment-aware config salah;
  • delegate class tidak ditemukan;
  • retry storm;
  • timer backlog;
  • incident tidak dimonitor;
  • multiple pods mengambil job dengan topology yang tidak diharapkan.

11. Java Delegate and Listener Execution

Camunda 7 mendukung eksekusi custom Java code melalui:

  • JavaDelegate;
  • ExecutionListener;
  • TaskListener;
  • expression/bean method;
  • script task;
  • connector.

Arsitektur ini kuat, tetapi berbahaya jika tidak disiplin.

Risiko delegate

  • side effect terjadi dalam transaction yang tidak dipahami;
  • external API call dilakukan sinkron tanpa timeout;
  • exception technical dianggap business error;
  • retry menggandakan side effect;
  • delegate terlalu besar dan mengambil domain logic;
  • delegate bergantung classloader/dependency versi tertentu;
  • unit test tidak memadai;
  • log tidak memiliki process instance id/correlation id.

Prinsip delegate sehat

  • delegate tipis;
  • panggil domain/application service yang testable;
  • gunakan timeout untuk external call;
  • bedakan technical exception dan BPMN business error;
  • pastikan idempotency;
  • jangan simpan payload besar sebagai variable;
  • log process instance id, business key, tenant id, activity id.

12. External Task Service

External task pattern memindahkan work execution keluar dari engine JVM.

Camunda engine membuat external task dengan topic tertentu. Worker melakukan:

fetchAndLock(topic)
  -> execute work
  -> complete / handleFailure / handleBpmnError

Kelebihan:

  • worker bisa di-scale terpisah;
  • language-agnostic;
  • boundary service lebih jelas;
  • engine tidak menjalankan external API call langsung;
  • deployment worker tidak harus sama dengan engine.

Risiko:

  • lock duration salah;
  • worker crash setelah side effect;
  • duplicate execution saat lock expired;
  • retry policy tidak jelas;
  • topic naming tidak terkontrol;
  • worker tidak graceful shutdown;
  • no backoff/long polling tuning;
  • incident tidak dimonitor.

13. Database Architecture

Camunda 7 menggunakan relational database untuk runtime dan history.

Table prefix utama:

PrefixMeaningIsi umum
ACT_RE_*RepositoryDeployment, process definition, decision definition, resources
ACT_RU_*RuntimeExecution, task, variable, job, incident, event subscription
ACT_HI_*HistoryHistoric process/task/activity/variable/decision data
ACT_ID_*IdentityUser/group/identity data jika digunakan
ACT_GE_*GeneralByte arrays, properties, schema log, general data

Database performance concern

  • runtime table harus tetap kecil;
  • history cleanup wajib untuk high-volume process;
  • variable serialization dapat membengkakkan byte array table;
  • query Cockpit/Tasklist dapat menjadi berat;
  • job acquisition sensitif terhadap DB latency/lock;
  • process engine schema bukan public API untuk aplikasi bisnis;
  • upgrade schema harus dikelola sesuai versi engine.

PostgreSQL-specific awareness

Jika Camunda 7 memakai PostgreSQL:

  • monitor connection pool;
  • monitor locks dan deadlocks;
  • cek slow query pada ACT_RU_JOB, ACT_RU_EXECUTION, ACT_RU_VARIABLE, ACT_HI_*;
  • pastikan vacuum/autovacuum sehat;
  • pastikan history cleanup tidak mengganggu peak traffic;
  • jangan join langsung table Camunda untuk product API tanpa konsekuensi version/compatibility.

14. Deployment Cache

Camunda 7 memiliki deployment cache untuk process definition dan metadata.

Manfaat:

  • mengurangi DB read untuk definition;
  • mempercepat execution;
  • menyimpan parsed BPMN model.

Risiko:

  • memory pressure jika banyak definition/version;
  • cache stale perception saat deployment/rollback;
  • cluster node tidak punya resource/delegate sama;
  • process definition lama masih dibutuhkan running instances.

Review:

  • berapa banyak process definition version aktif;
  • apakah old versions dibersihkan sesuai policy;
  • apakah process application deployment konsisten di semua node;
  • apakah job executor deployment-aware jika topology membutuhkan.

15. Cockpit, Tasklist, Admin, Optimize

Cockpit

Dipakai untuk:

  • melihat process definition;
  • melihat process instance;
  • melihat failed jobs;
  • incident triage;
  • process modification/restart/migration;
  • operational inspection.

Risiko:

  • akses terlalu luas;
  • operator melakukan modification tanpa runbook;
  • data variable sensitif terlihat;
  • Cockpit dianggap monitoring lengkap padahal alerting belum ada.

Tasklist

Dipakai untuk:

  • user task inbox;
  • claim/complete task;
  • form interaction;
  • candidate group filtering.

Risiko:

  • authorization salah;
  • task stale;
  • task aging tidak termonitor;
  • form validation tidak sinkron dengan domain invariant.

Admin

Dipakai untuk user/group/authorization/tenant/system management jika fitur ini digunakan.

Optimize

Jika digunakan, Optimize membantu analytics/process intelligence, tetapi perlu verifikasi internal karena tidak semua deployment memakai Optimize.


16. Transaction Boundary in Camunda 7

Camunda 7 sangat sensitif terhadap transaction boundary.

Contoh synchronous path:

JAX-RS call
  -> runtimeService.startProcessInstanceByKey()
  -> start event
  -> service task JavaDelegate
  -> user task created
  -> DB commit

Jika JavaDelegate melempar exception sebelum commit, process start bisa rollback.

Contoh async path:

JAX-RS call
  -> runtimeService.startProcessInstanceByKey()
  -> reaches asyncBefore service task
  -> job created
  -> DB commit
  -> job executor later executes delegate

Async boundary membuat failure lebih observable sebagai failed job/incident, tetapi membutuhkan retry/idempotency design.

Rule of thumb

  • Gunakan async boundary sebelum external side effect yang riskan.
  • Gunakan domain idempotency untuk semua side effect yang bisa retry.
  • Jangan asumsikan Camunda transaction dan business DB transaction selalu sama, terutama jika engine remote/external task.
  • Jangan complete process/job sebelum side effect durable.

17. Cluster and Scaling Model

Camunda 7 scaling bergantung pada deployment mode.

Embedded multi-pod

Jika banyak pod menjalankan engine dan job executor:

  • semua pod berbagi Camunda DB;
  • job acquisition bisa dilakukan banyak node;
  • delegate class harus tersedia di node yang mengeksekusi job;
  • deployment-aware setting mungkin diperlukan;
  • rolling deployment bisa membuat old/new code coexist;
  • process instance lama mungkin memerlukan code lama.

Remote/shared engine

Jika engine cluster dipisah:

  • API service memanggil engine via REST/Java remote integration;
  • engine scale dan app scale lebih terpisah;
  • worker/external task scale terpisah;
  • transaction boundary lebih distributed.

Scaling concern

  • DB is central bottleneck;
  • job executor concurrency harus sesuai DB capacity;
  • history level memengaruhi write amplification;
  • Cockpit/Tasklist query load bisa memengaruhi DB;
  • process variable besar memperlambat execution.

18. Camunda 7 in Java/JAX-RS Systems

Pola integrasi umum:

Start process from API

POST /quotes/{quoteId}/submit
  -> validate command
  -> update quote state to SUBMITTED
  -> start process with businessKey=quoteId
  -> return 202 Accepted / current status

Perlu diputuskan:

  • start process sebelum atau sesudah DB commit?
  • apakah start process idempotent?
  • apakah quote status dan process instance bisa divergen?
  • apakah business key unique?
  • apakah process start menghasilkan duplicate instance saat retry API?

Complete task from API

POST /tasks/{taskId}/complete
  -> authorize user
  -> validate form/decision
  -> call TaskService.complete()
  -> worker/domain service applies state transition later or within same command

Perlu diputuskan:

  • apakah task completion langsung mengubah domain state?
  • apakah stale task dicegah?
  • apakah user masih authorized saat complete?
  • apakah optimistic lock domain entity dicek?

External task worker as service

Worker fetches topic "validate-order"
  -> loads order from PostgreSQL
  -> validates domain invariants
  -> writes result/audit
  -> completes external task

Perlu idempotency dan failure handling.


19. Failure Modes by Component

ComponentFailure modeDetectionMitigation
Repositorywrong process version deployedprocess definition version mismatchdeployment approval, version tag, tests
Runtimeprocess stuck at activityCockpit/current activityincident runbook, message/timer check
Job executorjob not acquiredjob backlog, acquisition logsexecutor config, DB health, thread pool
Delegateexception/retry stormfailed job, logsidempotency, timeout, classify errors
External tasklock expired duplicate workduplicate side effect, worker logslock duration, extend lock, idempotency
DBslow query/lock/deadlockDB metrics, slow query logsindexes, tuning, cleanup, pool sizing
Historytable bloatstorage growth, slow Cockpithistory TTL, cleanup, archive
Tasklisttask not visibletask query, auth logscandidate group/tenant/auth review
Cockpitoperator unsafe repairaudit/user operation logrunbook, RBAC, approval workflow

20. Observability Requirements

Minimal production signals:

  • process instances started/completed/failed per process key;
  • active process count;
  • incident count by process/activity;
  • failed jobs by exception type;
  • job acquisition latency;
  • job execution duration;
  • timer backlog;
  • external task backlog by topic;
  • worker success/failure rate;
  • task aging by candidate group;
  • database connection pool saturation;
  • Camunda table growth;
  • history cleanup duration;
  • business key/correlation ID in logs.

Debugging harus bisa menjawab:

Untuk quote/order X:
  - process instance id/key apa?
  - definition version apa?
  - current activity apa?
  - waiting task/job/message/timer apa?
  - variable penting apa?
  - incident/failure terakhir apa?
  - worker log trace id apa?
  - domain entity state apa?
  - event/outbox status apa?

21. Security and Privacy Concerns

Camunda 7 architecture dapat mengekspos data melalui:

  • process variable;
  • serialized object/JSON variable;
  • task form;
  • history table;
  • Cockpit variable view;
  • incident stacktrace/message;
  • job exception log;
  • user operation log;
  • Tasklist filters;
  • REST API.

Review:

  • apakah PII masuk variable/history;
  • apakah variable redaction strategy ada;
  • apakah authorization enabled dan benar;
  • apakah Tasklist/Cockpit access dibatasi;
  • apakah service account untuk worker aman;
  • apakah logs mengandung sensitive payload;
  • apakah history cleanup memenuhi retention/privacy policy.

22. Camunda 7 Architecture Review Checklist

Version and support

  • Versi Camunda 7 yang digunakan diketahui.
  • Support/EOL timeline diverifikasi dengan vendor/internal platform.
  • Migration awareness ke Camunda 8 sudah masuk roadmap jika relevan.

Deployment model

  • Embedded/shared/remote engine jelas.
  • Engine lifecycle owner jelas.
  • BPMN/DMN deployment pipeline jelas.
  • Duplicate deployment saat pod startup dicegah.
  • Running old instances dengan old code dipertimbangkan.

Engine configuration

  • Process engine config terdokumentasi.
  • Job executor aktif/tidak aktif jelas per node.
  • History level dan cleanup dikonfigurasi.
  • Metrics/reporting config diketahui.
  • Authorization/identity/tenant config diketahui.

Database

  • DB vendor dan version diverifikasi.
  • Camunda schema ownership jelas.
  • Connection pool sizing dicek.
  • Slow query dan lock monitoring ada.
  • History cleanup/retention ada.
  • Direct query ke ACT_* oleh aplikasi bisnis dicek dan dibatasi.

Process application

  • processes.xml / deployment descriptor dicek jika digunakan.
  • Classloading delegate/listener dipahami.
  • Deployment-aware job executor dipertimbangkan.
  • BPMN resource packaging jelas.
  • Old process definition compatibility dicek.

Java delegate / external task

  • Delegate tipis dan testable.
  • External task topic naming jelas.
  • Retry policy eksplisit.
  • Idempotency diterapkan.
  • Timeout dan exception classification jelas.

Operations

  • Cockpit access dan runbook ada.
  • Tasklist usage dan authorization dicek.
  • Incident dashboard ada.
  • Failed job retry procedure aman.
  • Manual repair approval path ada.

23. Internal Verification Checklist for CSG/Team

Karena detail internal tidak tersedia, semua item berikut harus diverifikasi di codebase, deployment repo, atau diskusi dengan team:

Codebase

  • Cari dependency org.camunda.bpm, camunda-engine, camunda-bpm-spring-boot-starter, external task client, atau REST client.
  • Cari file .bpmn, .dmn, .form, processes.xml, bpm-platform.xml.
  • Cari class JavaDelegate, ExecutionListener, TaskListener.
  • Cari penggunaan RuntimeService, RepositoryService, TaskService, HistoryService, ManagementService, ExternalTaskService.
  • Cari worker external task dengan fetchAndLock, topic, lock duration, handleFailure, handleBpmnError.

Runtime/deployment

  • Verifikasi apakah engine embedded di service Java/JAX-RS, shared di container, atau remote.
  • Verifikasi apakah job executor aktif di semua replica atau node tertentu.
  • Verifikasi deployment BPMN/DMN: startup, pipeline, manual, GitOps.
  • Verifikasi DB schema Camunda dan DB owner.
  • Verifikasi Cockpit/Tasklist/Admin/Optimize usage.

Operations

  • Verifikasi dashboard incident/failed job/task aging.
  • Verifikasi runbook retry/manual repair/process migration.
  • Verifikasi history cleanup dan retention.
  • Verifikasi alert untuk job backlog dan DB health.
  • Verifikasi audit trail untuk operation di Cockpit/Tasklist.

Architecture

  • Verifikasi boundary antara Camunda process state dan quote/order domain state.
  • Verifikasi apakah process variable menyimpan payload besar atau PII.
  • Verifikasi apakah domain state transition tetap dijaga domain service.
  • Verifikasi integration dengan PostgreSQL/MyBatis, Kafka, RabbitMQ, Redis.
  • Verifikasi migration roadmap jika ada Camunda 7 dependency jangka panjang.

24. Key Takeaways

  • Camunda 7 adalah Java-based, database-backed process engine.
  • Ia bisa embedded, shared, atau remote; setiap mode punya trade-off.
  • Public service API adalah cara normal aplikasi berinteraksi dengan engine.
  • Runtime state, job, task, variable, incident, dan history sangat bergantung pada relational database.
  • Job executor adalah komponen sentral untuk timer dan async continuation.
  • Java delegate powerful tetapi mudah menciptakan coupling dan side effect risk.
  • External task memberi boundary lebih baik tetapi membutuhkan idempotency discipline.
  • Cockpit/Tasklist membantu operasi, tetapi bukan pengganti alerting/runbook.
  • Untuk senior engineer, memahami Camunda 7 berarti memahami transaction, DB, job execution, deployment, classloading, observability, dan operational repair.

References

Lesson Recap

You just completed lesson 14 in build core. Use the series map if you want to review the broader track, or continue directly into the next lesson while the context is still warm.

Continue The Track

Keep the momentum while the lesson is still fresh. Move backward for review or continue forward into the next concept.