Skip to content

bashizip/abada-engine

Repository files navigation

logo

πŸ¦„ Abada Engine

Abada Engine is a lightweight, embeddable, and cloud-native BPMN 2.0 workflow engine built in modern Java. Designed for developers and teams seeking a streamlined, flexible process automation core β€” without the bloat, lock-in, or complexity of legacy platforms.

Inspired by the mythical African unicorn Abada β€” rare, agile, and powerful.


πŸš€ What Makes It Different?

  • βœ… Lightweight and modular β€” no heavyweight runtimes
  • 🧠 Developer-first β€” clean Java API, simple embedding in any JVM-based application
  • 🌐 REST-first architecture β€” can also run fully standalone as a remote workflow service
  • πŸ“¦ Container-ready β€” easily deployed via Docker in modern CI/CD pipelines
  • ☁️ Cloud-native mindset β€” built for microservices, automation, and scale
  • βš™οΈ Standard BPMN 2.0 support β€” including user tasks, service tasks, and gateways
  • πŸ” Authentication agnostic β€” pluggable security handled by your host app
  • πŸ” Process persistence β€” reliable state recovery after reboot
  • πŸ§ͺ Battle-tested core β€” strong test coverage and deterministic behavior
  • πŸ“„ BPMN 2.0 compatible β€” fully interoperable with bpmn.io and Camunda Modeler

πŸ’‘ Usage Modes

1. Embedded SDK
Use it directly as a Java library inside your Spring Boot (or plain Java) application.

2. Standalone Engine
Run as a self-contained RESTful service. Ideal for frontend clients, no-code tools, or external systems that just need an HTTP interface.

3. Containerized
Deploy with Docker for maximum portability and cloud-native integration.


πŸ›  Tech Stack

  • Java 21
  • Spring Boot 3.4
  • H2 (default) β€” switchable to PostgreSQL or others
  • Maven
  • Camunda BPMN Model API (for parsing only)

πŸ§ͺ Current Capabilities

Feature Status
BPMN 2.0 Parsing βœ… Fully supported (Camunda-compatible)
User Tasks βœ… Implemented
Service Tasks βœ… Implemented
Exclusive Gateways βœ… Implemented
Conditional Gateways πŸ”„ In progress
Process & Task Persistence βœ… Implemented
REST API βœ… Available
BPMN Validation βœ… Schema + semantic
JWT Auth ❌ Delegated to host app for the embedded mode
Multi-tenancy 🚧 Planned

πŸ“¦ Quick Start (Standalone)

🐳 Run with Docker Compose

To run Abada Engine using Docker Compose:

  1. Create a docker-compose.yml file:
version: '3.8'

services:
  abada-engine:
    image: ghcr.io/bashizip/abada-engine:latest
    container_name: abada-engine
    ports:
      - "5601:5601"
    volumes:
      - .data:/app/data
    environment:
      - SPRING_PROFILES_ACTIVE=dev
      - SERVER_PORT=5601
    restart: unless-stopped

volumes:
  abada-data:

Then:

docker compose up -d

This will start the engine and expose the API at:

http://localhost:5601/abada/api/v1

Example Endpoints

  • Deploy a BPMN process

    POST /abada/api/v1/processes/deploy
    Content-Type: multipart/form-data
    Body: file=<your_bpmn_file>
  • Start a process instance

    POST /abada/api/v1/processes/start
    Content-Type: application/x-www-form-urlencoded
    Body: processId=recipeProcess
  • Get available tasks for the user

    GET /abada/api/v1/tasks
  • Claim a task

    POST /abada/api/v1/tasks/claim?taskId=choose-recipe
  • Complete a task

    POST /abada/api/v1/tasks/complete?taskId=choose-recipe

🧠 Philosophy

Build your own engine β€” not your own prison.

Abada Engine is built to be lightweight, hackable, and open. Whether you're building internal automation or selling workflow-driven platforms, Abada gives you full control β€” from task routing to UI integration.


πŸ“œ License

MIT License


πŸ¦„ Made with love by Patrick Bashizi