flowable-engine
A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.
Top Related Projects
Flexible framework for workflow and decision automation with BPMN and DMN. Integration with Quarkus, Spring, Spring Boot, CDI.
Activiti is a light-weight workflow and Business Process Management (BPM) Platform targeted at business people, developers and system admins. Its core is a super-fast and rock-solid BPMN 2 process engine for Java. It's open-source and distributed under the Apache license. Activiti runs in any Java application, on a server, on a cluster or in the cloud. It integrates perfectly with Spring, it is extremely lightweight and based on simple concepts.
Process Orchestration Framework
Quick Overview
Flowable Engine is an open-source Business Process Management (BPM) and workflow engine written in Java. It provides a lightweight, embeddable workflow and Business Process Management platform that can be integrated into Java applications or run as a standalone service. Flowable Engine supports BPMN 2.0, CMMN 1.1, and DMN 1.1 standards.
Pros
- Lightweight and highly performant workflow engine
- Supports multiple process modeling standards (BPMN, CMMN, DMN)
- Easily embeddable in Java applications
- Active community and regular updates
Cons
- Steeper learning curve for beginners
- Documentation can be inconsistent or outdated in some areas
- Limited out-of-the-box UI components compared to some competitors
- Some advanced features require commercial licensing
Code Examples
- Starting a process instance:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");
- Completing a user task:
TaskService taskService = processEngine.getTaskService();
Task task = taskService.createTaskQuery().taskCandidateGroup("managers").singleResult();
taskService.complete(task.getId());
- Deploying a process definition:
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("processes/myProcess.bpmn20.xml")
.deploy();
Getting Started
To get started with Flowable Engine, add the following dependency to your Maven pom.xml
:
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-engine</artifactId>
<version>6.7.2</version>
</dependency>
Then, create a configuration file named flowable.cfg.xml
in your classpath:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcUrl" value="jdbc:h2:mem:flowable;DB_CLOSE_DELAY=-1" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />
<property name="databaseSchemaUpdate" value="true" />
</bean>
</beans>
Now you can create and use a ProcessEngine in your Java code:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
Competitor Comparisons
Flexible framework for workflow and decision automation with BPMN and DMN. Integration with Quarkus, Spring, Spring Boot, CDI.
Pros of Camunda BPM Platform
- More extensive documentation and community support
- Offers a robust enterprise edition with additional features
- Provides a user-friendly modeler tool for process design
Cons of Camunda BPM Platform
- Steeper learning curve for beginners
- Larger footprint and potentially higher resource consumption
- Less flexible licensing options compared to Flowable Engine
Code Comparison
Camunda BPM Platform:
@Deployment(resources = "process.bpmn")
public void testProcess() {
runtimeService.startProcessInstanceByKey("myProcess");
Task task = taskService.createTaskQuery().singleResult();
taskService.complete(task.getId());
}
Flowable Engine:
@Deployment(resources = "process.bpmn20.xml")
public void testProcess() {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
taskService.complete(task.getId());
}
Both frameworks use similar APIs for process deployment, execution, and task management. The main differences lie in the specific method names and the way process instances are handled. Camunda BPM Platform tends to have a more concise syntax, while Flowable Engine offers more explicit control over process instance management.
Activiti is a light-weight workflow and Business Process Management (BPM) Platform targeted at business people, developers and system admins. Its core is a super-fast and rock-solid BPMN 2 process engine for Java. It's open-source and distributed under the Apache license. Activiti runs in any Java application, on a server, on a cluster or in the cloud. It integrates perfectly with Spring, it is extremely lightweight and based on simple concepts.
Pros of Activiti
- Longer history and established community support
- More extensive documentation and tutorials
- Better integration with Spring Framework
Cons of Activiti
- Slower release cycle and feature updates
- Less focus on cloud-native and microservices architecture
- More complex configuration for advanced use cases
Code Comparison
Activiti process definition:
<process id="myProcess" name="My Process">
<startEvent id="start" />
<userTask id="userTask" name="User Task" />
<endEvent id="end" />
<sequenceFlow sourceRef="start" targetRef="userTask" />
<sequenceFlow sourceRef="userTask" targetRef="end" />
</process>
Flowable process definition:
<process id="myProcess" name="My Process">
<startEvent id="start" />
<userTask id="userTask" name="User Task" />
<endEvent id="end" />
<sequenceFlow sourceRef="start" targetRef="userTask" />
<sequenceFlow sourceRef="userTask" targetRef="end" />
</process>
The process definitions are nearly identical, as Flowable was forked from Activiti. The main differences lie in the surrounding ecosystem, API implementations, and additional features provided by each project.
Both Activiti and Flowable offer robust business process management capabilities, with Flowable focusing more on modern, cloud-native architectures and Activiti maintaining a strong connection to traditional enterprise environments. The choice between the two often depends on specific project requirements and existing technology stacks.
Process Orchestration Framework
Pros of Camunda
- More extensive documentation and community support
- Offers a wider range of tools and integrations, including Camunda Modeler
- Better suited for large-scale enterprise deployments
Cons of Camunda
- Steeper learning curve for beginners
- Can be more resource-intensive, especially for smaller projects
- Licensing model may be less flexible for some use cases
Code Comparison
Camunda (Java):
@Deployment(resources = "process.bpmn")
public void testProcess() {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");
Task task = taskService.createTaskQuery().singleResult();
taskService.complete(task.getId());
assertProcessEnded(processInstance.getId());
}
Flowable (Java):
@Test
@Deployment(resources = "process.bpmn20.xml")
public void testProcess() {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");
Task task = taskService.createTaskQuery().singleResult();
taskService.complete(task.getId());
assertProcessEnded(processInstance.getProcessInstanceId());
}
Both examples demonstrate similar process execution and task completion, with minor syntax differences. Camunda uses assertProcessEnded
directly, while Flowable requires getProcessInstanceId()
for the assertion.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Flowable (V7)
Homepage: https://www.flowable.org/
flowable / flowÉb(É)l /
- a compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.
- a lightning fast, tried and tested BPMN 2 process engine written in Java. It is Apache 2.0 licensed open source, with a committed community.
- can run embedded in a Java application, or as a service on a server, a cluster, and in the cloud. It integrates perfectly with Spring. With a rich Java and REST API, it is the ideal engine for orchestrating human or system activities.
Introduction
License
Flowable is distributed under the Apache V2 license (http://www.apache.org/licenses/LICENSE-2.0.html).
Download
The Flowable downloads can be found on https://www.flowable.org/downloads.html.
Sources
The distribution contains most of the sources as jar files. The source code of Flowable can be found on https://github.com/flowable/flowable-engine.
JDK 17+
Flowable V7 runs on a Java higher than or equal to version 17. Use the JDK packaged with your Linux distribution or go to adoptium.net and click on the Latest LTS Release button. There are installation instructions on that page as well. To verify that your installation was successful, run java -version
on the command line. That should print the installed version of your JDK.
Flowable V6 is still maintained and supports Java 8+.
Flowable Design
Flowable offers a free to use Flowable Cloud Design application, which you can use to model CMMN, BPMN, DMN and other model types. You can register via the Flowable account registration page to get started https://www.flowable.com/account/open-source.
Contributing
Contributing to Flowable: https://github.com/flowable/flowable-engine/wiki.
Reporting problems
Every self-respecting developer should have read this link on how to ask smart questions: http://www.catb.org/~esr/faqs/smart-questions.html.
After you've done that you can post questions and comments on https://forum.flowable.org and create issues in https://github.com/flowable/flowable-engine/issues.
Top Related Projects
Flexible framework for workflow and decision automation with BPMN and DMN. Integration with Quarkus, Spring, Spring Boot, CDI.
Activiti is a light-weight workflow and Business Process Management (BPM) Platform targeted at business people, developers and system admins. Its core is a super-fast and rock-solid BPMN 2 process engine for Java. It's open-source and distributed under the Apache license. Activiti runs in any Java application, on a server, on a cluster or in the cloud. It integrates perfectly with Spring, it is extremely lightweight and based on simple concepts.
Process Orchestration Framework
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot