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

Overview

Camunda Platform - The open source BPMN platform

Maven Central camunda manual latest License Forum

Camunda Platform is a flexible framework for workflow and process automation. It's core is a native BPMN 2.0 process engine that runs inside the Java Virtual Machine. It can be embedded inside any Java application and any Runtime Container. It integrates with Java EE 6 and is a perfect match for the Spring Framework. On top of the process engine, you can choose from a stack of tools for human workflow management, operations & monitoring.

Components

Camunda Platform provides a rich set of components centered around the BPM lifecycle.

Process Implementation and Execution

  • Camunda Engine - The core component responsible for executing BPMN 2.0 processes.
  • REST API - The REST API provides remote access to running processes.
  • Spring, CDI Integration - Programming model integration that allows developers to write Java Applications that interact with running processes.

Process Design

Process Operations

  • Camunda Engine - JMX and advanced Runtime Container Integration for process engine monitoring.
  • Camunda Cockpit - Web application tool for process operations.
  • Camunda Admin - Web application for managing users, groups, and their access permissions.

Human Task Management

  • Camunda Tasklist - Web application for managing and completing user tasks in the context of processes.

And there's more...

  • bpmn.io - Toolkits for BPMN, CMMN, and DMN in JavaScript (rendering, modeling)
  • Community Extensions - Extensions on top of Camunda Platform provided and maintained by our great open source community

A Framework

In contrast to other vendor BPM platforms, Camunda Platform strives to be highly integrable and embeddable. We seek to deliver a great experience to developers that want to use BPM technology in their projects.

Highly Integrable

Out of the box, Camunda Platform provides infrastructure-level integration with Java EE Application Servers and Servlet Containers.

Embeddable

Most of the components that make up the platform can even be completely embedded inside an application. For instance, you can add the process engine and the REST API as a library to your application and assemble your custom BPM platform configuration.

Contributing

Please see our contribution guidelines.

Tests

To run the tests in this repository, please see our testing tips and tricks.

License

The source files in this repository are made available under the Apache License Version 2.0.

Comments
  • [CAM-10748] feat(engine-cdi): add JobExecutor using managed threads

    [CAM-10748] feat(engine-cdi): add JobExecutor using managed threads

    CAM-10748

    Add a JobExecutor that can be configured for a ProcessEngine that uses managed threads provided by the application server. From Java EE 7 and up, a standardised API for interacting with the application servers scoped was introduced, providing access to the ManagedExecutorService and ManagedThreadFactory for use in applications.

    implements CAM-10748

    opened by tiesebarrell 21
  • Impl for TimerEventListener occur event.

    Impl for TimerEventListener occur event.

    Hello Roman,

    Please find the changes for the TimerEventListener occur event implementation and tests. Please let me know the changes I have make.

    Thanks, Subhro.

    opened by subhrajyotim 20
  • CAM-13714: Support DatabaseTablePrefix in create and drop sql

    CAM-13714: Support DatabaseTablePrefix in create and drop sql

    Related to CAM-13714

    By adding the following setting to process.xml, it is expected tables be created with this schema and prefix. But tables are created in default schema and no prefix applied.

    <property name="databaseTablePrefix">MY_SCHEMA.MY_PREFIX</property>
    

    I added several lines to DbSqlSession class to support schema and table prefix when running create and drop sql command.

    opened by mojtaba-khallash 18
  • Rest api additions

    Rest api additions

    Hi,

    we made contributions to the following Issues regarding the REST Api

    CAM-643 CAM-738 CAM-739

    You are welcome to have a look at our additions and integrate them in your project

    Regards, Matthias

    opened by magrossmann 18
  • CAM-10771 Improve BPMN Parser Exceptions

    CAM-10771 Improve BPMN Parser Exceptions

    Currently, the BPMN parser throws exceptions with an error code, a more or less helpful message and line number in the XML file.

    In order to locate the problem in a BPMN model, users (and tools) require BPMN element IDs in the exceptions. This pull request add those. I've also started working on getting multiple element IDs included because some errors are related to multiple elements and it's not always possible to derive that information outside the parser. The message format is parsable (pipe-separated values)

    Another issue addressed here, is that the current parser requires multiple runs to find all errors or warnings, i.e. after fixing the first errors, more will surface during the next deployment.

    Some error messages are wrong or at least misleading. So it would be helping to correct and improve the exception texts.

    Ideally, there is a REST endpoint for just parsing without deploying.

    This work started during Camunda Hackdays 2015 where we already demonstrated the value of this improvement by visualizing parser errors in Camunda Workbench.

    opened by falko 16
  • [CAM-9676] feat(engine): Implemented OR queries for ProcessInstanceQuery

    [CAM-9676] feat(engine): Implemented OR queries for ProcessInstanceQuery

    OR queries extension for ProcessInstanceQuery based on the already existing OR queries for tasks from tag 7.10.0. Also added a JUnit test for it and extended the query DTO for the REST API.

    See also CAM-9676 in Jira

    opened by funfried 16
  • Patch for the wildlfy subsystem for WF 14 (possibly 12 and 13)

    Patch for the wildlfy subsystem for WF 14 (possibly 12 and 13)

    The changes allow to build and run the Camunda BPM for a current Wildfly version. The actual wildfly subsystem won't compile with Wildfy 14 (probably 12 & 13 too), due to changes in the configuration model. This adresses CAM-8934 (https://app.camunda.com/jira/browse/CAM-8934)

    I assume the best way would be to have 2 wildfly subsystems, one covering the current supported versions and a second one for the newer Wildfly versions, but this would need more work to be spent in the current maven setup of the project - which I'm not sure if I understood it correctly.

    I've built and tested this with Wildfly 14 successfully.

    opened by kifj 15
  • Add FormFieldValidationException Catching in the API

    Add FormFieldValidationException Catching in the API

    Currently has no tests Looking for starter feedback before adding the tests.

    Throws a 400 because it is a form validation and not a actual server error (500). Aka: the server processed the input correctly, but the input did not pass the "form validations"

    Work was based on https://app.camunda.com/jira/browse/CAM-8276

    opened by StephenOTT 15
  • introduce history level auto, fixes #CAM-3444

    introduce history level auto, fixes #CAM-3444

    This addresses the problem that when you configure multiple engines against one db, you have to explicitly set the right (unique) history level value, otherwise engine setup fails. WIth the new level "auto", the engine tries to guess the

    • new string constant "auto"
    • allow configuration with level "auto" to init() without choosing a historyLevel, this will be done during build() to avoid lifecycle mixup (db init ...)
    • during construction of the ProcessEngineImpl, it checks the already configured value via the OverwriteHistoryLevelCmd and overwrites auto/null with for example
      full/HistoryLevelFull.
    • afterwards, engine generation goes on as usual.
    • when auto is used for the first engine that creates the schema, the default fallback is "audit"
    opened by jangalinski 15
  • [CAM-13974] Preparing External Task Action Listeners

    [CAM-13974] Preparing External Task Action Listeners

    Hello Team

    I hope your are doing well.

    According to our negotiation on JIRA, I have sent a pull request for the point.

    I have attached related story as below

    User Story (Required on creation):

    Following this post, preparing related actions (Listeners) will be important for the end-user client that need to work with Rest API (between External task and Engine). Actually, there are more than 10 Rest API that will call around the application and could be trigger related event that would be useful.

    Functional Requirements (Required before implementation):

    The main goal is to prepare module's listener for catching state of each. it should be corporate with an External Task and manage three state (on,done,fail).

    As we describe the point, it will be like a package for listeners and make the main interface.

    Thank you so much for your support and great feedbacks.

    I will appreciate if you could check the request and let me know if you have any points.

    Best Regards,

    Taha Arian

    P.S : please assign to Mr Tobias Metzke-Bernstein

    opened by tahaarian 14
  • CAM-4261 fix

    CAM-4261 fix

    Save the exception properties consistently.

    I modified the AuthorizationException so there is a consistent way of accessing the different number of Permissions.

    Should there be some tests for this?

    opened by filiphr 14
  • Log all message correlations in operations log

    Log all message correlations in operations log

    User Problem

    For legal reasons we need to audit which user triggered a message correlation which in turn compensates an erroneous process instance. Currently, message correlations need to be audited manually with the help of process variables.

    User Story (Required on creation):

    • As a developer, I want to see all message correlations logged per process instance in the operations log and displayed in the "Operation Log" and the process instance history "User Operations" tab. This allows me to create a complete audit report.

    Functional Requirements (Required before implementation)

    Technical Requirements (Required before implementation)

    Limitations of Scope

    Hints

    Links

    • https://jira.camunda.com/browse/SUPPORT-15382

    Breakdown

    Dev2QA handover

    • [ ] Does this ticket need a QA test and the testing goals are not clear from the description? Add a Dev2QA handover comment
    type:feature 
    opened by toco-cam 0
  • Update Support priority Level description in docs

    Update Support priority Level description in docs

    Acceptance Criteria (Required on creation)

    Change the description of Priority Levels in https://docs.camunda.org/enterprise/support/#priority-level. Currently, it says that L1 and L2 are only for Bug reports. Basically, EE customer should be able to create Help requests in SUPPORT project with L1 and L2 priority.

    For this, here are the changes that we are planning to do:

    • Replace "bug" with "issue" in the sentence "You can prioritize issues depending on the impact of a issue on your system"
    • Remove - "Please note that according to your SLA’s, a prioritization is only possible for bug tickets."
    • Remove "Bug Tickets only!" from "Important Notes" of L1 and L2 priorities.

    Hints

    Links

    Breakdown

    Dev2QA handover

    • [ ] Does this ticket need a QA test and the testing goals are not clear from the description? Add a Dev2QA handover comment
    type:task scope:documentation 
    opened by garima-camunda 2
  • Documentation for end execution listeners does not explicitly state that end listeners will always trigger at the end of the activity.

    Documentation for end execution listeners does not explicitly state that end listeners will always trigger at the end of the activity.

    Acceptance Criteria (Required on creation)

    Documentation for end execution listeners does not explicitly state that end listeners will always trigger at the end of the activity.

    For this specific use case, the customer creates an interrupting sub process that gets triggered, in addition, they add in a user task in the parent process with an end event execution listener. The confusion lies in the fact that the end execution listener fires even though the user task was not completed.

    This is working as intended but in the documentation we don’t state explicitly that the end listener will always kick off when the activity has ended, even if the activity was interrupted.

    Would it be possible to clarify this in the documentation for end execution listeners?

    Hints

    Here is what we have documented in our documentation specifically about end execution listeners.

    image

    Link to Documentation: https://docs.camunda.org/manual/7.18/user-guide/process-engine/delegation-code/#execution-listener:~:text=Java%20Delegates.-,Execution%20Listener,-Execution%20listeners%20allow

    Links

    https://jira.camunda.com/browse/SUPPORT-15500

    Breakdown

    Screenshot of simple BPMN breakdown of what is referenced up top.

    image

    Please let me know if you can provide any additional insight or if you have any questions.

    type:task 
    opened by alan-pilic-ca 0
  • Filtering for process instances by date variable does not show expected results

    Filtering for process instances by date variable does not show expected results

    Environment (Required on creation)

    Webapp cockpit search process instances by variable in camunda version from 7.17 (7.18, 7.19).

    Description (Required on creation; please attach any relevant screenshots, stacktraces, log files, etc. to the ticket)

    Process instance started with a date variable cannot be found in cockpit search by the same variable value because the saved date contains milliseconds and time zone too.

    Steps to reproduce (Required on creation)

    1. Start a process instance with a date variable (e.g. 2022-12-12T00:00:00)
    2. In the cockpit, go to the "search process instances" and search with the date variable with the same value

    Observed Behavior (Required on creation)

    Process instance is not found.

    Expected behavior (Required on creation)

    Process instance found.

    Root Cause (Required on prioritization)

    The date is saved in a different format than the input so the equality filter is not finding the instance: Input date: 2022-12-12T00:00:00 Saved date: 2022-12-12T00:00:00.000+0100 (if we filter for this the search works)

    Solution Ideas

    Some ideas:

    1. use like search by default for dates
    2. add a date picker in the variable search that sends the fully formatted date to the backend
    3. during process start only accept fully qualified date formats to get rid of the confusion

    Hints

    Links

    • https://jira.camunda.com/browse/SUPPORT-15530
    version:7.19.0 type:bug scope:cockpit scope:webapp 
    opened by danielkelemen 1
An app that weighs the pros and cons of a decision to help you make the best decision

An app that weighs the pros and cons of a decision to help you make the best decision

Mambo Bryan 5 Feb 2, 2022
Drools is a rule engine, DMN engine and complex event processing (CEP) engine for Java.

An open source rule engine, DMN engine and complex event processing (CEP) engine for Java™ and the JVM Platform. Drools is a business rule management

KIE (Drools, OptaPlanner and jBPM) 4.9k Dec 31, 2022
A web MVC action-based framework, on top of CDI, for fast and maintainable Java development.

A web MVC action-based framework, on top of CDI, for fast and maintainable Java development. Downloading For a quick start, you can use this snippet i

Caelum 347 Nov 15, 2022
A distributed data integration framework that simplifies common aspects of big data integration such as data ingestion, replication, organization and lifecycle management for both streaming and batch data ecosystems.

Apache Gobblin Apache Gobblin is a highly scalable data management solution for structured and byte-oriented data in heterogeneous data ecosystems. Ca

The Apache Software Foundation 2.1k Jan 4, 2023
该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的线上博客项目/企业大型商城系统/前后端分离实践项目等,摆脱各种 hello world 入门案例的束缚,真正的掌握 Spring Boot 开发。

Spring Boot Projects 该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的前

十三 4.5k Dec 30, 2022
Framework for automated integration tests with focus on messaging integration

Citrus Integration Testing Welcome to Citrus Citrus is a test framework written in Java that is able to create fully automated end-to-end use case tes

Citrus Framework 373 Dec 27, 2022
Spring Integration provides an extension of the Spring programming model to support the well-known Enterprise Integration Patterns (EIP)

Spring Integration Code of Conduct Please see our Code of conduct. Reporting Security Vulnerabilities Please see our Security policy. Checking out and

Spring 1.4k Dec 30, 2022
SpringBoot SpringSecurity Jpa mybatis-plus websocket Redis camunda Vue3 Vite ant-design VbenAdmin vxe-table bpmn.js

SpringBoot SpringSecurity Jpa mybatis-plus websocket Redis camunda Vue3 Vite ant-design VbenAdmin vxe-table bpmn.js

zsvg 16 Dec 13, 2022
DataFX - is a JavaFX frameworks that provides additional features to create MVC based applications in JavaFX by providing routing and a context for CDI.

What you’ve stumbled upon here is a project that intends to make retrieving, massaging, populating, viewing, and editing data in JavaFX UI controls ea

Guigarage 110 Dec 29, 2022
JavaFX with CDI example project

javafx-cdi-example JavaFX with CDI example. ⚠️ In case you have a hi-resolution display and want to run the application on Ubuntu, make sure to pass a

fuin.org 4 Aug 4, 2022
Docker-compose-integration-tstst - An exploration of how to run integration tests against an application that has inconvenient external dependencies (e.g. a SQL database).

Tstst? it was supposed to be docker-compose-integration-tests but i was too lazy to fix it at the outset, and now im trying to convince myself its fun

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

Flowable (V6) Maven Central: Docker Images: License: Homepage: https://www.flowable.org/ flowable / flowəb(ə)l / a compact and highly efficient workfl

Flowable 6k Jan 7, 2023
Workflow management system fully supporting low-code language Petriflow.

Netgrif Application Engine MySQL Create NETGRIF user: CREATE USER 'netgrif_nae'@'localhost' IDENTIFIED BY 'netgrif_nae'; GRANT ALL PRIVILEGES ON * . *

NETGRIF 17 Dec 23, 2022
Expo application with detox to run e2e using Github Workflow

Expo e2e Demo Application template to demonstrate how to run e2e in an Expo Managed application using Detox Tested using: MacOS 12.1 Monterrey, M1 Pro

Carlos Thurber 38 Oct 24, 2022
循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring Batch、Spring Cloud、Spring Cloud Alibaba、Spring Security & Spring Security OAuth2,博客Spring系列源码:https://mrbird.cc

Spring 系列教程 该仓库为个人博客https://mrbird.cc中Spring系列源码,包含Spring Boot、Spring Boot & Shiro、Spring Cloud,Spring Boot & Spring Security & Spring Security OAuth2

mrbird 24.8k Jan 6, 2023
Zero is a core test automation project that can be used as a basis for any kind of test automation project (API, Browser, Mobile)

Zero Zero is our feature rich, core test automation framework, that can be used as an underlying automation framework for any/and all kind of test aut

Pramod Kumar Yadav 10 Dec 16, 2022
The reliable, generic, fast and flexible logging framework for Java.

About logback Thank you for your interest in logback, the reliable, generic, fast and flexible logging library for Java. The Logback documentation can

QOS.CH Sarl 2.6k Jan 7, 2023
A flexible minigame framework for bukkit.

Oyster Subproject of Oni, a framework which focused on minigames. QQ Group What It is a flexible framework that attempts to reduce costs for developin

SaltedFish Club 7 Dec 25, 2022
A powerful, extendable, flexible yet simple to use commands annotation framework.

Lamp Background Building commands has always been a core concept in many applications, and, lots of times, a really boring and cumbersome one to pull

Revxrsal 95 Jan 5, 2023