jBPM is a flexible Business Process Management (BPM) Suite. It is light-weight,
fully open-source (distributed under Apache license) and written in Java. It allows
you to model, execute, and monitor business processes throughout their life cycle.
A business process allows you to model your business goals by describing the steps
that need to be executed to achieve those goals, and the order of those goals are depicted
using a flow chart. This process greatly improves the visibility and agility of your business logic.
jBPM focuses on executable business processes, which are business processes that contain enough detail
so they can actually be executed on a BPM engine. Executable business processes bridge
the gap between business users and developers as they are higher-level and use
domain-specific concepts that are understood by business users but can also be executed
directly.
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 (drag and 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.
- Complete BPM life cycle management web console that allows:
- Model - author your processes, rules, forms and other assets
- Execute - build and deploy packages to runtime engine
- Work - work on assigned task, manage process instances, etc
- Monitor - keep track of the execution using Business Activity Monitoring capabilities
- Integration with Maven, Spring, OSGi, etc.
BPM creates the bridge between business analysts, developers and end users
by offering process management features and tools in a way that both business
users and developers like. Domain-specific nodes can be plugged into the
palette, making the processes more easily understood by business users.
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; this allows dynamic deviation from the process.
jBPM is not just an isolated process engine. Complex business logic can
be modeled as a combination of business processes with business rules and complex
event processing. jBPM can be combined with the Drools project to support one unified
environment that integrates these paradigms where you model your business logic as a
combination of processes, rules and events.
Apart from the core engine itself, there are quite a few additional (optional)
components that you can use, like an Eclipse-based or web-based designer and a
management console.
This figure gives an overview of the different components of the jBPM project. jBPM can
integrate with a lot of other services (and we've shown a few using grey boxes on the figure),
but here we focus on the components that are part of the jBPM project itself.
- The process engine is the core of the project and is required if you want to
execute business processes (all other components are optional, as indicated by the dashed
border). Your application services typically invoke the core engine (to start processes or to
signal events) whenever necessary.
- An optional core service is the history log; this will log all information
about the current and previous state of all your process instances.
- Another optional core service is the human task service that will take care of
the human task life cycle if human actors participate in the process.
- Two types of graphical editors are supported for defining your business processes:
- The Eclipse plugin is an extension to the Eclipse IDE, targeted towards developers,
and allows you to create business processes using drag and drop, advanced debugging, etc.
- The web-based designer allows business users to manage business processes in
a web-based environment. A web-based form builder also allows you to create, generate or
edit forms related to those processes (to start the process or to complete one of the
user tasks).
- The Guvnor repository is an optional component that can be used to store all your
business processes. It supports collaboration, versioning, etc. There is integration
with both the Eclipse plugin and web-based designer, supporting round-tripping between
the different tools.
- The web-based management console allows business users to manage
their runtime (manage business processes like start new processes, inspect running instances, etc.),
to manage their task list and to perform Business Activity Monitoring (BAM) and see reports.
Each of the components are described in more detail below.
The core jBPM engine is the heart of the project. It's a light-weight workflow
engine that executes your business processes. It can be embedded as part of your application
or deployed as a service (possibly on the cloud). Its most important features are the following:
- Solid, stable core engine for executing your process instances.
- Native support for the latest BPMN 2.0 specification for modeling and
executing business processes.
- Strong focus on performance and scalability.
- Light-weight (can be deployed on almost any device that supports
a simple Java Runtime Environment; does not require any web container at all).
- (Optional) pluggable persistence with a default JPA implementation.
- Pluggable transaction support with a default JTA implementation.
- Implemented as a generic process engine, so it can be extended to support
new node types or other process languages.
- Listeners to be notified of various events.
- Ability to migrate running process instances to a new version of their
process definition
The core engine can also be integrated with a few other (independent) core services:
- The human task service can be used to manage human tasks when human
actors need to participate in the process. It is fully pluggable and the default
implementation is based on the WS-HumanTask specification and manages the life
cycle of the tasks, task lists, task forms, and some more advanced features like
escalation, delegation, rule-based assignments, etc.
- The history log can store all information about the execution of all the
processes in the engine. This is necessary if you need access to historic information
as runtime persistence only stores the current state of all active process instances.
The history log can be used to store all current and historic states of active and completed
process instances. It can be used to query for any information related to the execution
of process instances, for monitoring, analysis, etc.
The Eclipse editor is a plugin to the Eclipse IDE and allows you to integrate your
business processes in your development environment. It is targeted towards developers and
has some wizards to get started, a graphical editor for creating your business processes
(using drag and drop) and a lot of advanced testing and debugging capabilities.
It includes the following features:
- Wizard for creating a new jBPM project
- A graphical editor for BPMN 2.0 processes
- The ability to plug in your own domain-specific nodes
- Validation
- Runtime support (so you can select which version of jBPM you would like to use)
- Graphical debugging to see all running process instances of a selected session,
to visualize the current state of one specific process instance, etc.
1.5. Workbench web application
Optionally, you can use one or more knowledge repositories to store your business processes
(and other related artefacts). The web-based designer is integrated in the Guvnor repository,
which is targeted towards business users and allows you to manage your processes separately
from your application. It supports the following:
- A repository service to store your business processes and related artefacts,
using a GIT repository, which supports versioning, remote accessing (as a file system),
and using REST services.
- A web-based user interface to manage your business processes, targeted towards
business users; it also supports the visualization (and editing) of your processes (the web-based
designer is integrated here), but also categorisation, scenario testing, and deployment.
- Collaboration features to have multiple actors (for example business users and
developers) work together on the same process definition.
Workbench application covers complete life cycle of BPM projects starting at authoring phase, going through
implementation, execution and monitoring.
The web-based designer allows you to model your business processes in a web-based
environment. It is targeted towards business users and offers a graphical editor
for viewing and editing your business processes (using drag and drop), similar to the
Eclipse plugin. It supports round-tripping between the Eclipse editor and the
web-based designer.
A web-based form modeler allows you to create, generate and/or edit your form
(both for starting a process or completing a user task) using a WYSIWYG editor. By
dragging and dropping various form elements into a panel and filling in the necessary
details, task forms can be created by non-technical experts. It provides advanced capabilities
for data mapping including complex type support (e.g. map form data to POJO)
1.5.3. Process and Task management
Business processes can be managed through a web-based management console. It is targeted towards
business users and its main features are the following:
- Process instance management: the ability to start new process instances,
get a list of running process instances, visually inspect the state of a specific
process instances.
- Human task management: being able to get a list of all your current tasks
(either assigned to you or that you might be able to claim), and completing tasks on
your task list (using customizable task forms).
1.5.4. Business Activity Monitoring
Business Activity Monitoring (BAM) and Reporting allows to get an overview of the state of your
application and/or system using dynamically generated (customizable) reports, that give you an overview of
your key performance indicators (KPIs). To name few:
- Process instance charts: illustrates what process instances are active in the system
process instances.
- Human task charts: illustrates human interaction within the system (who has been working on what,
how long it took to complete particular tasks, etc)
- and much more