The bits were ready more than a week ago already (and looking at the download statistics quite a few of you already found them ;)), but a busy travel schedule made it difficult to complete the work and announce everything. But here it is !
API and JavaDocs:
So what's new?
We've added simulation capabilities to the web-based process designer, that allows you to simulate how a process might behave at runtime. This includes the addition of various simulation-related properties (like resources and duration-related attributes for tasks, and probabilities for diverging gateways etc.). Our implementation is based on the specification created by the BPSWG (Business Process Simulation Working Group).
Based on these properties, you can run a number of instances of your process and:
- Use the path finder to look at all identified paths
- Look at the generated charts containing information about minimal, maximum and average completion times, etc. using (horizontal and vertical barcharts, pie charts or tables.
- Check the timeline to get an overview of all the recorded events
Local task service
When human actors participate in a business process (also known as human workflow), a task service is used to manage the life cycle of the tasks (claiming, completing, task lists, etc.). While we supported the use of a centralized task service (using HornetQ for remoting), we now also support a local version that runs as a simple Java component next to the engine and all the work it does is synchronous and nicely integrated with the transaction of the process engine.
org.jbpm.task.service.TaskService taskService = new org.jbpm.task.service.TaskService( emf, SystemEventListenerFactory.getSystemEventListener()); LocalTaskService localTaskService = new LocalTaskService(taskService); LocalHTWorkItemHandler humanTaskHandler = new LocalHTWorkItemHandler( localTaskService, ksession, OnErrorAction.RETHROW); humanTaskHandler.connect(); ksession.getWorkItemManager().registerWorkItemHandler( "Human Task", humanTaskHandler);
We have improved our Spring support, where you can use a Spring configuration file to configure your environment and inject a ksession and/or task service into your application code. For transactions, it integrates with the Spring transaction manager, supporting both JTA and RESOURCE_LOCAL with shared entity manager factory (emf) or shared entity manager (em).
jBPM runtime persistence can now also use JPA2 for persistence. That means it is completely independent of the underlying persistence provider (we use Hibernate by default but other persistence providers should be possible as well). You can use Hibernate4 with JPA2 for even better performance. For all the details on how to do this, here's a link to a persistence configuration file for both JPA1 and JPA2.
Some of the other features
- Improvements on some of the BPMN 2.0 constructs in the core engine, related to error events, terminating end events in sub processes,
- Introduction of a business calendar related to timers etc.
- The ability to start a process by name, which will automatically start the latest version of that process.
- We created separate wars for EE6 (AS7) and EE5 (AS5) to avoid a lot of manual dependency management. JBoss AS 7.1.1 is now the new default application server in the installer.
- Improved support for invoking web services from inside your processes.
- A database-backed solution for managing which users are part of which group (UserGroupCallback).
- When configuring handlers for domain-specific services, the ksession is automatically injected as an optional constructor parameter in the handler configuration file.
jBPM 5.4.0.Final has been released in sync with the latest Drools 5.5.0.Final release.
If you have any questions / issues, let us know:
- Ask questions on IRC: chat.freenode.net:6667 #jbpm (there is a web-based client available here)
- Create a JIRA issue: https://issues.jboss.org/browse/JBPM
- Ask the community in the forum
The jBPM team