[Open Source] A Simple, Practical, and Easy-to-Use Workflow Engine Supporting Multi-Tenancy and Commercial Secondary Development
![[Open Source] A Simple, Practical, and Easy-to-Use Workflow Engine Supporting Multi-Tenancy and Commercial Secondary Development](https://yy123.ink/api/img/1782594851976-vogm0f.jpg)
1. Project Overview
warm-flow Workflow
This project is an extremely simple workflow engine with minimal design complexity and a small codebase. It has only 6 database tables, and you can understand the entire design in about an hour. It is easy to use.
2. Open Source License
Licensed under Apache-2.0
3. Screenshots
Workflow designer
Demonstration Picture
![]() |
![]() |
|
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Add New Definition
Process Code and Process Version: Ensure uniqueness.
Approval Form Path: Records the page path used to display pending task information. The path to the task details page is saved and retrieved when a pending task is clicked, allowing the page to be loaded dynamically.

Process Design
The front end uses logic-flow for diagram drawing. The resulting JSON is converted into the XML format required by the workflow components.
The backend parses the XML and saves the workflow definitions to the flow_definition, flow_node, and flow_skip tables.


Workflow Page Demo
Start Workflow Instance
The demo project includes five predefined workflows and code for starting them. Starting a workflow executes it directly to the node immediately following the start node.


Submit Workflow
After submission, the workflow proceeds to the designated task, which is handled by the corresponding authorized user configured in the workflow design.


Process Workflow
If the gateway is an exclusive gateway, the system checks whether the conditions are met.


Reject Workflow

Workflow Diagram
The workflow diagram is generated based on the node coordinates returned by the front end. The backend uses Graphics2D to render the diagram and returns the resulting image to the front end for display.


Conditional Expressions
Built-in operators currently include greater than, greater than or equal to, equal to, not equal to, less than, less than or equal to, contains, and does not contain. Additional operators can also be implemented.
To extend the functionality, implement ExpressionStrategy.java or inherit from ExpressionStrategyAbstract.java.
Then register it using this method: ExpressionUtil.setExpression


4. Feature Overview
-
Supports basic workflow transitions, such as jumping, rollback, and approval.
-
Supports permission configuration for roles, departments, users, and more.
-
The official project provides a simple workflow integration demo, which is very practical.
-
Supports multi-tenancy.
-
Supports pending and completed tasks, with data filtered by permission identifiers.
-
Supports exclusive and parallel gateways (countersignature and joint approval).
-
Can return to any previous node.
-
Supports extensible conditional expressions.
-
Supports both Spring and Solon.
-
Compatible with Java 8 and Java 17. Java 11 should theoretically also work.
-
Supports extensions for different ORM frameworks and databases.
5. Tech Stack
Quick Start
Before getting started, we assume that you already:
-
Are familiar with Java environment configuration and development.
-
Are familiar with relational databases such as MySQL.
-
Familiarity with Spring Boot or Solon and related frameworks is required.
-
Are familiar with Java build tools such as Maven.
Import SQL
Import the warm-flow.sql file from the component directory: warm_4/warm-flow/blob/master/sql/warm-flow.sql
Database Schema
warm_4/warm-flow/wikis/%E8%A1%A8%E7%BB%93%E6%9E%84?sort_id=9330548
Maven Dependencies
Spring Boot Project
Solon Project
Supported Database Types
-
mysql
-
oracle
-
sqlserver
-
......
Supported ORM Frameworks
-
MyBatis and its enhancement components
-
jpa
-
easy-query
-
wood
-
sqltoy
-
beetlsql
-
......
If you want to extend support for other ORM frameworks or databases, please contact the author.
Code Examples
For the following test code, please refer to the corresponding files in the hh-vue project. hh-vue/hh-admin/src/test/java/com/hh/test/service/impl/FlowTest.java
More content, please refer to README.md document














