Chào bạn,
Trong bài học trước, chúng ta đã đi sâu vào sự khác biệt mang tính kiến trúc giữa Camunda 7 và Camunda 8. Chúng ta đã quyết định sẽ bắt đầu hành trình này với Camunda 7 và mô hình embedded engine, tích hợp chặt chẽ với Spring Boot. Đây là một lựa chọn tuyệt vời để xây dựng nền tảng vững chắc và tận dụng bộ công cụ toàn diện mà phiên bản Community cung cấp.
Hôm nay, chúng ta sẽ chuyển từ lý thuyết sang thực hành. Mục tiêu của bài học này là tạo một project Spring Boot tích hợp Camunda Engine (embedded). Đây sẽ là dự án "xương sống" cho toàn bộ khóa học. Chúng ta sẽ xây dựng, triển khai và thực thi các quy trình nghiệp vụ trên chính project này.
Với nền tảng là một software developer, bạn sẽ thấy quá trình này khá quen thuộc. Chúng ta sẽ khám phá hai cách tiếp cận:
- Sử dụng Camunda Platform Initializr: Công cụ tự động giúp khởi tạo dự án nhanh chóng.
- Cấu hình thủ công: Thêm các dependency cần thiết vào một project Spring Boot có sẵn để hiểu rõ hơn "dưới nắp ca-pô" có những gì.
Hãy cùng nhau xây dựng viên gạch đầu tiên cho giải pháp BPM của bạn!
1. Cách tiếp cận nhanh: Sử dụng Camunda Platform Initializr
Giống như cách start.spring.io giúp bạn khởi tạo một project Spring Boot, Camunda cũng cung cấp một công cụ tương tự là start.camunda.com. Đây là cách nhanh nhất và được khuyến nghị để bắt đầu một dự án mới, đảm bảo các phiên bản tương thích với nhau.
Để xem quy trình này một cách trực quan, hãy xem video hướng dẫn từ chính đội ngũ Camunda.
Camunda Platform 7 Tutorial: How to Build an Application with Spring Boot
Video "Camunda Platform 7 Tutorial: How to Build an Application with Spring Boot" sẽ hướng dẫn bạn từng bước sử dụng Camunda Initializr để tạo và khám phá cấu trúc của một dự án.
Hãy xem các phần sau: Tạo dự án (02:36 - 04:05): Chú ý đến các lựa chọn quan trọng như phiên bản Camunda, cơ sở dữ liệu (chọn H2 để bắt đầu dễ dàng), và đặc biệt là các modules "REST API" và "Webapps". Mở dự án trong IDE (04:05 - 05:23): Phần này cho thấy cách import dự án đã tạo vào IntelliJ. Khám phá cấu trúc dự án (05:23 - 07:31): Phần này giải thích vai trò của các file quan trọng được tạo ra.
Sau khi xem video và tự mình tạo ra một project, bạn sẽ có một file .zip chứa toàn bộ mã nguồn. Hãy giải nén và mở nó bằng IDE yêu thích của bạn.
Dưới đây là tóm tắt về những thành phần quan trọng nhất mà Initializr đã tạo ra cho bạn:
-
pom.xml(File quản lý dependency):- Đây là trái tim của việc tích hợp. Nó chứa các dependency quan trọng.
camunda-bpm-spring-boot-starter-rest: Tích hợp Camunda engine và cung cấp các REST API.camunda-bpm-spring-boot-starter-webapp: Đây là gói "tất cả trong một", bao gồm engine, REST API và các ứng dụng web của Camunda (Cockpit, Tasklist, Admin).h2database: Dependency cho cơ sở dữ liệu H2, một CSDL nhẹ, lưu trong bộ nhớ hoặc file, rất tiện cho việc phát triển và thử nghiệm. Camunda cần một CSDL để lưu trữ trạng thái của các quy trình đang chạy, lịch sử, v.v.
-
src/main/resources/application.yaml(File cấu hình):- File này chứa các cấu hình cho ứng dụng Spring Boot và Camunda.
- Quan trọng nhất là cấu hình
camunda.bpm.admin-user. Đây là tài khoản quản trị viên bạn sẽ dùng để đăng nhập vào các ứng dụng web của Camunda.
-
src/main/java/.../Application.java(Lớp chính):- Đây là một lớp Spring Boot tiêu chuẩn, điểm khởi đầu của ứng dụng. Nó không có gì đặc biệt liên quan đến Camunda, điều này cho thấy sự tích hợp liền mạch.
-
src/main/resources/process.bpmn(File quy trình mẫu):- Initializr cũng tạo sẵn một file BPMN rỗng. Đây là nơi chúng ta sẽ thiết kế quy trình của mình trong các bài học sau.

2. Cách tiếp cận thủ công: Hiểu rõ các thành phần
Mặc dù Initializr rất tiện lợi, việc hiểu cách cấu hình thủ công sẽ giúp bạn có kiến thức sâu hơn về kiến trúc và dễ dàng tùy chỉnh dự án sau này. Giả sử bạn có một project Spring Boot trống, đây là những gì bạn cần làm.
Bài viết sau đây từ Baeldung giải thích rất rõ cả hai cách, nhưng chúng ta sẽ tập trung vào phần cấu hình thủ công.
Running Spring Boot Applications with the Embedded Camunda ...
Bài viết "Running Spring Boot Applications with the Embedded Camunda Engine" cung cấp hướng dẫn chi tiết về việc thêm các dependency và cấu hình cần thiết.
Hãy đọc mục "4. Creating the Application with Spring Boot". Tập trung vào phần "4.1. Maven Dependencies" để xem chính xác những dependency nào cần được thêm vào file pom.xml.
Tóm lại, để tích hợp Camunda 7 vào một project Spring Boot có sẵn, bạn chỉ cần thực hiện hai bước chính:
-
Thêm Dependencies vào
pom.xml:
Dependency quan trọng nhất làcamunda-bpm-spring-boot-starter-webapp. Nó sẽ tự động kéo theo engine, API và các thành phần cần thiết khác.<dependency> <groupId>org.camunda.bpm.springboot</groupId> <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId> <version>7.18.0</version> <!-- Sử dụng phiên bản bạn mong muốn --> </dependency>Bạn cũng cần một dependency cho cơ sở dữ liệu. Ví dụ với H2:
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> -
Cấu hình
application.yaml(hoặc.properties):
Tối thiểu, bạn cần cung cấp thông tin đăng nhập cho người dùng quản trị.camunda: bpm: admin-user: id: demo password: demo
Như bạn thấy, nhờ có Spring Boot Starters, việc tích hợp Camunda thực sự rất đơn giản.
3. Chạy và xác minh ứng dụng
Bây giờ là lúc kiểm tra thành quả. Dù bạn tạo dự án bằng Initializr hay cấu hình thủ công, các bước tiếp theo đều giống nhau.
Hãy xem một video khác cũng của Camunda, phần này tập trung vào việc chạy ứng dụng và truy cập giao diện web.
Get Started With Camunda and Spring boot
Video "Get Started With Camunda and Spring boot" sẽ cho bạn thấy cách khởi động ứng dụng và xác nhận rằng mọi thứ đã hoạt động chính xác.
Hãy xem các phần sau: Chạy ứng dụng (05:55 - 06:26): Xem cách tác giả chạy ứng dụng Spring Boot từ IDE. Truy cập Webapps (06:26 - 06:46): Chú ý cách truy cập vào localhost:8080 và đăng nhập bằng tài khoản demo/demo.
Các bước thực hiện:
- Mở project của bạn trong IDE (IntelliJ, Eclipse, VS Code,...).
- Tìm đến lớp
Application.java. - Chạy ứng dụng như một ứng dụng Java bình thường (thường là click chuột phải -> Run).
- Mở trình duyệt web và truy cập vào địa chỉ:
http://localhost:8080. - Bạn sẽ thấy trang đăng nhập của Camunda. Hãy sử dụng tài khoản bạn đã cấu hình (ví dụ:
demo/demo). - Sau khi đăng nhập thành công, bạn sẽ được chào đón bởi trang chính của Camunda, nơi cung cấp quyền truy cập vào ba ứng dụng web cốt lõi:
- Cockpit: Công cụ để giám sát, vận hành và gỡ lỗi các quy trình đang chạy và đã hoàn thành. Đây là công cụ quan trọng nhất dành cho developer và quản trị viên.
- Tasklist: Giao diện dành cho người dùng cuối, nơi họ có thể xem và xử lý các công việc (user tasks) được giao cho họ.
- Admin: Khu vực quản trị người dùng, nhóm và phân quyền.
Nếu bạn thấy được màn hình này, xin chúc mừng! Bạn đã khởi tạo thành công một project Spring Boot với Camunda embedded engine.
Tổng kết bài học
Trong bài học thực hành đầu tiên này, chúng ta đã hoàn thành một bước tiến quan trọng:
- Tạo dự án: Chúng ta đã học cách tạo một project Spring Boot tích hợp Camunda 7 bằng cả hai phương pháp: tự động qua Camunda Initializr và thủ công bằng cách thêm Maven dependencies.
- Hiểu các thành phần cốt lõi: Bạn đã biết vai trò của
camunda-bpm-spring-boot-starter-webapp, fileapplication.yamlvà CSDL trong một dự án Camunda. - Khởi chạy và xác minh: Bạn đã tự tay khởi chạy engine và truy cập thành công vào các ứng dụng web của Camunda (Cockpit, Tasklist, Admin).
Bạn hiện đang có một nền tảng vững chắc, một "nhà máy" đã sẵn sàng hoạt động.
Xem trước bài học tiếp theo
Nhà máy của chúng ta đã có, nhưng nó chưa sản xuất gì cả. Trong bài học tiếp theo, "Deploy và chạy một quy trình nghiệp vụ đơn giản trên Camunda", chúng ta sẽ đưa "dây chuyền sản xuất" đầu tiên vào hoạt động. Chúng ta sẽ lấy file process.bpmn mẫu, deploy nó lên engine vừa khởi tạo, và sau đó khởi chạy một thực thể quy trình (process instance) đầu tiên. Bạn sẽ được tận mắt chứng kiến quy trình của mình "sống lại" trong Camunda Cockpit.