Convert Figma logo to code with AI

flowable logoflowable-engine

A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.

7,789
2,585
7,789
359

Top Related Projects

Flexible framework for workflow and decision automation with BPMN and DMN. Integration with Quarkus, Spring, Spring Boot, CDI.

10,068

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.

3,214

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

  1. Starting a process instance:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");
  1. Completing a user task:
TaskService taskService = processEngine.getTaskService();
Task task = taskService.createTaskQuery().taskCandidateGroup("managers").singleResult();
taskService.complete(task.getId());
  1. 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.

10,068

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.

3,214

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Flowable (V7)

Maven Central:
Maven Central

Docker Images:
Docker Hub

License:
license

Flowable Actions CI

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.