jBPM is based on a simple principle called 'Graph Oriented Programming.' The basic ideas behind jBPM were coded in less than 120 lines, in the following classes:These are explained in detail in the user's guide, 'Graph Oriented Programming'. The sources are also linked from the documentation.
On top of this new model, we already have support for three languages:
- jPDL: a language with clean Java integration and superb task management features.
- BPEL: (alpha stage) a service orchestration language based on WSDL and XML.
- Pageflow: In JBoss SEAM, we have a simple graph based approach (with Eclipse plugin support) for defining pageflows.
- Asynchronous continuations (see user's guide, in 'Asynchronous continuations')
- Configuration framework (see user's guide, in 'Configuration')
- Task instance variables (see user's guide, 'Task Management' section 'Task controllers')
- Externalized the hibernate queries: (see user's guide, 'Customizing queries')
- Added support for JSF-like expressions in actions and assignments: (see user's guide, 'Expressions').
- TaskInstanceFactory replaced the task instance class configuration (see user's guide, 'Task Management' section 'Customizing task instances')