Configuring Activiti Database
In this example we will learn how to configure Activiti to use another Relational Database. We will switch from the default H2 database to PostgreSQL.
You can configure a different database using two main strategies:
Programmatic configuration
Using a Programmatic configuration, you will define the ProcessEngineConfiguration and set JDBC parameters as follows:
ProcessEngineConfiguration config = (StandaloneProcessEngineConfiguration)ProcessEngineConfiguration
.createStandaloneProcessEngineConfiguration();
config.setJdbcDriver(JDBC_DRIVER);
config.setJdbcPassword(JDBC_PWD);
config.setJdbcUrl(JDBC_URL);
config.setJdbcUsername(JDBC_USERNAME);
config.setDatabaseType(DB_TYPE);
config.setDatabaseSchemaUpdate("true");
ProcessEngine processEngine = config.buildProcessEngine();
Declarative configuration in activiti.cxf.xml
On the other hand, you can use the main Activiti configuration file and define the JDBC settings in the StandaloneProcessEngineConfiguration Bean as in the following example:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="databaseType" value="postgres" />
<property name="jdbcUrl" value="jdbc:postgresql://localhost:5432/activiti" />
<property name="jdbcDriver" value="org.postgresql.Driver" />
<property name="jdbcUsername" value="postgres" />
<property name="jdbcPassword" value="postgres" />
<!-- <property name="dataSource" ref="dataSource" /> -->
<!-- Database configurations -->
<property name="databaseSchemaUpdate" value="create-drop" />
<!-- job executor configurations -->
<property name="jobExecutorActivate" value="true" />
<property name="createDiagramOnDeploy" value="false" />
</bean>
</beans>
In terms of code, you will need to configure the RespositoryService to use the configuration provided by Activiti configuration as follows:
final RepositoryService repositoryService = processEngine.getRepositoryService();
Here is where you can place the activiti.cfg.xml in the DemoActiviti project that we have uploaded on github at: https://github.com/fmarchioni/mastertheboss/tree/master/activiti/standalone/DemoActiviti
DemoActiviti
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── mastertheboss
│ │ ├── activiti
│ │ │ └── DemoActiviti
│ │ │ └── App.java
│ │ └── task
│ │ └── JavaService1.java
│ └── resources
│ ├── activiti.cfg.xml
│ └── DemoProcess.bpmn
Adding the JDBC Driver in the pom.xml
Finally, whahever is your approach to configuring JDBC, you have to include the driver libraries in your application. If you are using Maven, then include the database JDBC driver in the pom.xml
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>
</dependency>
Recommended Articles
Configure jBPM to Use PostgreSQL Database - A Step-by-Step Guide
Learn how to switch from H2 database to PostgreSQL in your jBPM setup. Get started with a simple configuration guide and example Docker commands.
Design and Run Simple BPMN Processes with Activiti Core in Java
Learn how to design simple BPMN processes using Activiti Core in a Java application. Includes installation of Activiti Process Designer.
Deploy Activiti BPMN Platform on JBoss AS 7 with MySQL Database - Tutorial
Learn how to install, configure, and deploy Activiti BPMN platform on JBoss AS 7 using MySQL database. Includes step-by-step guide for beginners.
Configure jBPM to use MySQL as Database | Enterprise Java Tutorials
Learn how to configure jBPM to use MySQL as database for storing process data. A step-by-step guide on setting up jBPM with MySQL.