Java Business Process Management

jBPM is a toolkit for building business applications to help automate business processes and decisions.

jBPM


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 (BPMN2)
  • Case management (BPMN2 and CMMN)
  • Decision management (DMN)
  • Business rules (DRL)
  • Business optimisation (Solver)

  • jBPM can be used as 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
  • What does jBPM do?

    The core of jBPM is a light-weight, extensible workflow engine written in pure Java that allows you to execute business processes using the latest BPMN 2.0 specification. It can run in any Java environment, embedded in your application or as a service.


    On top of the core engine, a lot of features and tools are offered to support business processes throughout their entire life cycle:

  • Eclipse-based and web-based editor to support the graphical creation of your business processes and case definitions (drag & drop).
  • Pluggable persistence and transactions based on JPA / JTA.
  • Pluggable human task service based on WS-HumanTask for including tasks that need to be performed by human actors.
  • Management console supporting process instance management, task lists and task form management, and reporting.
  • History logging (for querying / monitoring / analysis).
  • Integration with various frameworks such as CDI/EJB, Spring(Boot), OSGi, etc.

  • jBPM supports adaptive and dynamic processes that require flexibility to model complex, real-life situations that cannot easily be described using a rigid process. We bring control back to the end users by allowing them to control which parts of the process should be executed, to dynamically deviate from the process, etc.