This project aims at showcasing how the following technologies and architectural principles can be used together in an example application.
Here is a link to an article on Medium which references this repository.
- Camunda Platform 8 (self-managed)
- BPMN workflow
- Spring Boot
- Clean Architecture
- DDD
- Start the stack with
docker-compose up -d
- Deploy BPMN diagram
bpmn/trip-flow.bpmn
to Camunda using Simple Monitor interface - Run Spring Boot application (default profile) from the IDE
- TripFlow applicaiton: http://localhost:8080/trip (username:
customer1
orcustomer2
, password:demo
) - Camunda Self-Managed instance (with Hazelcast exporter): localhost, ports: 26500 (and others)
- Zeebe Simple Monitor: http://localhost:8082/
- Postgres database: localhost, port 5432, database:
tripflow
Special thanks to Camunda team who gave me some pointers about how to integrate Zeebe's Java client. This GitHub repo was especially helpful.
⭐ As I am writing this, CamundaCon 2022 is taking place! There is a great presentation by Luc Weinbrecht, speaking exactly about how to use Camunda and Clean Architecture together.
Here is the list of main references consulted while working on this project. Please, see JavaDoc in the relevant source code for more detailed references.
- Camunda Community Hub, Lowcode UI template example
- Luc Weinbrecht, GitHub, "Camunda DDD and Clean Architecture"
- Camunda Platform, Getting Started, Spring Boot client
- Camunda Platform 8, GraphQL API Tasklist, Java client
- "Ports & Adapters Architecture", Herberto Graça
- "Clean Architecture", Robert C. Martin
- Clean Domain-Driven Design
- Revisiting cargo tracking application using Clean DDD
- Bernd Rücker, "Navigating Technical Transactions with Camunda 8 and Spring"
To have somewhat realistic data samples for flights, hotels, etc., the following resources (publicly available).
- Google Travel
- Unsplash images, please, also consult Unsplash licence