# JBPM

jBPM (Java Business Process Model) is an open-source workflow engine written in Java that can execute business processes described in BPMN 2.0 (or its own process definition language jPDL in earlier versions). jBPM is a toolkit for building business applications to help automate business processes and decisions. It's sponsored by Red Hat, part of the JBoss community and closely related to the Drools and OptaPlanner projects in the KIE group. It is released under the ASL (or LGPL in earlier versions) by the JBoss company.

## Overview

In essence, jBPM takes graphical process descriptions as input. A process is composed of tasks that are connected with sequence flows. Processes represent an execution flow. The graphical diagram (flow chart) of a process is used as the basis for the communication between non-technical users and developers.
Each execution of a process definition is called a "process instance". jBPM manages the process instances. Some activities are automatic like sending an e-mail or invoking a service. Some activities act as wait states, like for example human tasks or waiting for an external service to return results. jBPM will manage and persist the state of the process instances at all times.
jBPM is based on the Process Virtual Machine (PVM) which is the JBoss community's foundation to support multiple process languages natively. The JBoss community currently focuses on using the BPMN 2.0 specification for defining business processes.
jBPM also provides various tools, both for developers (Eclipse) and end users (web-based) to create, deploy, execute and manage business processes throughout their life cycle.

## Capabilities

jBPM originates from BPM (Business Process Management) but it has evolved to enable users to pick their own path in business automation. It provides various capabilities that simplify and externalize business logic into reusable assets such as cases, processes, decision tables and more.
* Business processes (BPMN 2.0)
* Case management (BPMN 2.0 and CMMN)
* Decision management (DMN)
* Business rules (DRL)
* Business optimisation (Solver)
jBPM can be used as a standalone service or embedded in custom service. It does not mandate any of the frameworks to be used, it can be successfully used in
* Traditional JEE applications - war/ear deployments
* SpringBoot or Thorntail (formerly known as WildFly Swarm) - uberjar deployments
* Standalone java programs
Additionally the jBPM offers open source business process execution and management capabilities, including:
* An embeddable, lightweight process engine in Java, supporting native BPMN 2.0 execution
* BPMN 2.0 process modeling, both in Eclipse (developers) and web-based (business users)
* Process authoring, collaboration, monitoring and management through the jBPM console
* An web-based authoring environment capable of managing the many assets that compose a business project, including BPMN models, Rules, Forms, Data Objects and more.
* Human interaction using an independent WS-HT human task service
* Strong and powerful integration with business rules and event processing
* Pluggable persistence and transactions based on JPA / JTA.
* History logging (for querying / monitoring / analysis).

## History

jBPM version 5.0 was the result of a merge of the jBPM project with Drools Flow, a sub-project of the Drools system. Therefore, as of version 5, it also includes powerful business rules and event integration, and support for more advanced, flexible business processes.