jBPM is a business process engine that manages several types of processes:
Workflow (User to User) - Workflow processes are those that have tasks for individuals or groups.
Business Process Management (BPM) - BPM processes have tasks for systems as well as individuals or groups.
Orchestration - Orchestration processes involve managing web services. Generally, this is used when enterprises have exposed several web services, and now need a way to coordinate, or orchestrate those web services. If an orchestration process language is used (such as BPEL), then web services are the standard interaction with the process.
jBPM provides complete process management functionality through the following features:
Lightweight Architecture - jBPM can run in any environment that has a JVM and JDBC connection. It can run well in both a non J2EE app server environment, and any J2EE environment. It also runs in clustered J2EE environments.
Multiple Process Language support - jBPM supports two XML based process languages: JPDL and BPEL. JPDL is a flexible process language that ties process to Java Plain Old Java Objects (POJOs). BPEL is a web service orchestration language. jBPM has a process language abstraction layer, so other process languages can be added as standards progress without losing functionality.
Visual Process Modeler -- jBPM provides a visual process modeler that is a plug-in to the Eclipse IDE. This visual process modeler provides the ability to create and modify processes, and tie processes to Java business logic. Processes can also be edited directly in XML format.
Powerful and Flexible Process Modeling using Graph Oriented Programming with JPDL - Graph Oriented Programming is a powerful technique to create processes with JPDL. This allows for the following features:
Flexible Nodes - Nodes by default are a wait state. Nodes can easily be tied to Java business classes, so that a Node can do anything that the business class can do. These business classes can affect processes, by creating forks, joins, and tasks dynamically.
Actions - Actions are pieces of business logic that don't need their own node (for instance, send a notification to a system or individual).
Timers - Timers can be added to processes to start an action(such as a reminder), or to move the process to an escalation path.
Process Variables - Process variables can be associated with a process instance, and accessed by the individual or group working with that process. Any serializable object can be a process variable
Execution Management - jBPM keeps track of where all instances of processes are and calculates the next state for processes when tasks are completed.
Task Management - jBPM keeps track of all tasks assigned to systems, individuals, or groups.
Audit Trails - Process logs are created of how long processes are taking, and who is interacting with them. It is very easy to create business process logs along with the existing jBPM Process logs.
Persistence -- The process definitions, execution information, process variables, tasks, and logs are persisted in a database so that long running processes (hours, days, months) can be handled in a lightweight manner.
Process Versioning - Processes are versioned in the database. Long running process instances can continue with their version of the process definition even after a new version of the process has been deployed. New instances of the process will use the latest process definition.
Interfacing to jBPM
Simple API - Task information can be accessed or modified through a simple API. Systems, individuals, or groups can retrieve their current tasks, reassign tasks, and notify jBPM when a task is completed.
No Code Generation -- jBPM does not need to do code generation. Processes are created in XML, then deployed to jBPM and stored in a database. jBPM uses this information to manage the execution of the process.