jBPM runs on any database that is supported by hibernate.
The example configuration files in jBPM (src/config.files
) specify
the use of the hypersonic in-memory database. That database is ideal during development and
for testing. The hypersonic in-memory database keeps all its data in memory and doesn't
store it on disk.
Make sure that the database isolation level that you configure for your JDBC connection is at least READ_COMMITTED.
Almost all features run OK even with READ_UNCOMMITTED (isolation level 0 and the only isolation level supported by HSQLDB). But race conditions might occur in the job executor and with synchronizing multiple tokens.
Following is an indicative list of things to do when changing jBPM to use a different database:
The jbpm.db subproject, contains a number of drivers, instructions and scripts to help you getting started on your database of choice. Please, refer to the readme.html in the root of the jbpm.db project for more information.
While jBPM is capable of generating DDL scripts for all database, these schemas are not always optimized. So you might want to have your DBA review the DDL that is generated to optimize the column types and use of indexes.
In development you might be interested in the following hibernate configuration: If you set hibernate configuration property 'hibernate.hbm2ddl.auto' to 'create-drop' (e.g. in the hibernate.cfg.xml), the schema will be automatically created in the database the first time it is used in an application. When the application closes down, the schema will be dropped.
The schema generation can also be invoked programmatically with
jbpmConfiguration.createSchema()
and
jbpmConfiguration.dropSchema()
.