[Open-source] Open-source Dingding workflow designer source code, front-end based on wflow project creation, 100% open-source
![[Open-source] Open-source Dingding workflow designer source code, front-end based on wflow project creation, 100% open-source](https://yy123.ink/api/img/1782585039777-58dfc1.jpg)
1. Project Overview
Flowable Activiti DINGDING-MID Open-source Dingding-style workflow designer source code Front-end based on wflow project creation Compatible with wflow commercial version project I open-source it without charge 100% open-source Back-end can be based on Flowable 56 and Activiti 567 versions
2. Open Source License
Licensed under GPL-3.0
3. Screenshots
Open-source version overview
Work area panel


Form management
Workflow form management, supports grouped and single form drag-and-drop sorting


Form basic settings

Form designer
Supports column layout, detail table, and multiple basic components, supports custom component development


Workflow designer
Arbitrary condition hierarchical approval process design, approval nodes support multiple business type settings, supports process validation

Custom approval conditions

Custom complex transfer conditions
Visualized process logic branching conditions

Supports multiple types of business nodes, supports configuration validation, flexible configuration

Supports unlimited nested levels

Automatic validation settings, list all error prompts

Condition node priority dynamic drag-and-drop, real-time refresh

4. Feature Overview
The following content is the original text quoted by dingding-mid author:
DINGDING-MID Chinese-style traditional workflow engine open-source benchmark (Activiti 567 Flowable 56, Camunda7)
Before introducing this project, I want to discuss with everyone the business framework and technical framework problems, as well as the many problems of workflow
I think these words are more useful than this project's source code
That's a long time ago...
Recalling in the past few years of JavaEE journey, my teacher when explaining Struts2 framework (that was still SSH's era) mentioned a concept, which I remember vividly
What is software? What is a framework?
Software (i.e. various systems made for companies) = Application components (unchanged) + Business components (changing)
Application components form the framework, i.e. the framework is a half-finished software!
Define a concept first Frameworks are divided into technical frameworks and business frameworks
List several frameworks in the Java field
SpringBoot Spring MyBatis SpringMVC Hibernate
This type of framework can be understood as a pure technical framework
Download it from GitHub It has no relationship with the business logic of any system we will do in the future
At the same time, they can only be considered as a certain layer in system layer development, for example, MyBatis is only the persistence layer (Manager, Dao) SpringMVC (Action, Controller)
However, you need to understand that
Work flow frameworks (JBPM, Activiti, Flowable, Camunda, Zeebe)
are not just technical frameworks, but can also be considered as business frameworks from another angle
Why do you say so? Because work flow has indeed solved some difficult problems in approval and business arrangement
In the approval flow field:
Work flow frameworks provide the core code for the entire process diagram to run, which is more flexible than traditional state machines
In addition, it directly solves some common business code implementation in work flow systems
For example: process jump and rejection, withdrawal, approval transfer, delegation, approval process add signature, subtract signature, process migration, my pending, my completed, I initiated, etc. common pain points and demands
And work flow is not a certain layer in system layer development, it connects dozens of tables by itself, it is a complete project that solves the pain points of approval field/business arrangement system
Like us doing business systems, the possibility of secondary development frameworks is very small in general
For example, like Spring, we can only define some BeanFactory FactoryBean and some Processor
For example, like MyBatis, we can only define some Plugin Interceptor
However, these things do not change the original source code, but only add some things
But like work flow frameworks, it is different, for example, Activiti 567
Its framework has not implemented the Chinese-style dynamic approval jump and rejection (note: not through the flowchart drawing to jump and reject, I mean it is not connected and can jump, want to jump where to jump)
Can imagine, we ourselves to implement the process jump and rejection is quite difficult, need to be familiar with the Activiti underlying use of some classes
Such as ExecutionEntity TaskEntity CommandContext XXXAgenda and so on
Above I want to express the meaning is
- Workflow framework is a technical framework + business framework
- Secondary development of workflow framework is quite technically challenging
This has caused
Various Spring MyBatis source code videos are numerous as stars, while in-depth explanation of workflow videos are few in China (mainly because it is quite technically challenging, and because workflow and business will produce relationships)
Second, Chinese-style process basically belongs to the demand in mainland China, there is no such demand in foreign countries, such as process jump, rejection, so in Activiti, JBPM era, it is more painful
Previous frameworks had issues, we could search for solutions on StackOverFlow, but this method wouldn't work in workflow frameworks.
Thirdly, workflow frameworks themselves require operation on dozens of tables, their internal logic is a black box to us.
However, other systems with our own business code are white boxes (because we wrote them ourselves).
Once there's an issue within the workflow, we have to read its source code, which is another reason why workflow frameworks are complex.
Therefore, there are currently no good open-source workflow systems in China. Under this background, this system is intentionally open-sourced for everyone to learn and use.
Finally, give several suggestions to Java developers of the learning process engine framework (Activiti567, Flowable56, Camunda7, Zeebe8)
1> Absolutely do not think that Activiti has not provided the corresponding table query API, so it cannot be completed
We can write out all his table Mappers by ourselves, and check them by ourselves, but we need to pay attention to, we need to look at how Activiti's index is built first,
to prevent ourselves from writing causing the index to be invalid, causing the query efficiency to be slow (do not write update SQL by ourselves, can be updated through CMD, because he has optimistic lock version column, the Mapper written by ourselves is only used for query, recommended)2> We must definitely print out his execution SQL, so we can know how to optimize, because the workflow itself, for example, a very small function,
will at least operate on dozens of tables such as start workflow, so it must be noted that its performance optimization, for those who are not strong in SQL, can look at how it performs multi-table join after understanding the table structure of Activiti.
do not think that querying data from the database represents the advancement of workflow, such as this kind of data queried from the database, it is only the entry of Activiti, and it does not meet the requirements of the product at all.
for example, a slightly more difficult function of Activiti (Chinese-style process) such as arbitrary process jump, function, it is equivalent to a very difficult function, to complete this function, most of the operations are not tables, but some advanced classes.
only the data is finally transferred to the database after being processed.
5. Tech Stack
development
please visit the detailed documentation at wflow documentation.
special note: the paths where the source code, JDK, MySQL, Redis, etc. are stored are prohibited from containing Chinese characters, spaces, special characters, etc.
Environment Requirements
official recommendation: JDK version should not be lower than 1.8.0_281Version, can be usedOpenJDK 8、Alibaba Dragonwell 8、BiShengJDK 8
Project
Recommended version
Description
JDK
1.8.0_281
JAVA environment dependency (need to configure environment variables)
Maven
3.6.3
Project build (need to configure environment variables)
Redis
3.2.100(Windows)/6.0.x(Linux,Mac)
MySQL
5.7.x+
Database, choose one (default)
SQLServer
2012+
Database, choose one
Oracle
11g+
Database, choose one
PostgreSQL
12+
Database, choose one
Tool Recommendation
To prevent Maven from failing to download, please use the following IDE version
IDE Version
Maven Version
IDEA 2020 and above versions
Maven 3.6.3 and above versions
IDE Plugin
- Lombok
- Alibaba Java Coding Guidelines
- MybatisX
Environment Configuration
- Opendingding-mid\src\main\resources\application.yml
Environment Variables
dev development environment test test environment preview pre-release environment pro production environment
# Environment dev|test|pro|preview profiles: active: dev
- Openapplication-x.yml(xIndicates environment variables, need to configure the following server port (port) Database connection Redis
Start the Project
- dingding-mid\src\main\java\com\dingding\mid\DingDingAdminApplication.java, right-click to run
Project Release
- Click on the right sideIDEAClick on the right sideMaven-dingding-mid(root)-LifecycleDouble-click in the middlecleanClear the items below
- Double ClickpackagePack Project
- Open Project Directory, Open in Turndingding-mid\target, will be openeddingding-mid-{version}-RELEASE.jarUpload to server
swagger interface documentation
- http://localhost:10000/swagger-ui/