jBPM 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). Before version 5, it was known as Drools Flow, part of the Drools system. It is released under the ASL (or LGPL in earlier versions) by the JBoss community. Despite the name change, it is still a component of the Drools system.
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 email 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 expanding process languages BPMN 2.0.
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.
During the development of version 4, JBoss decided it wouldn't offer support for it. As a result, the top developers on the project, Tom Baeyens and Joram Barrez, left the project and started the competing open-source project, Activiti.
As of version 5.0, jBPM also includes powerful business rules and event integration, and support for more advanced, flexible business processes.