Chapter 5. Configuring JDBC data sources for KIE Server
A data source is an object that enables a Java Database Connectivity (JDBC) client, such as an application server, to establish a connection with a database. Applications look up the data source on the Java Naming and Directory Interface (JNDI) tree or in the local application context and request a database connection to retrieve data. You must configure data sources for KIE Server to ensure correct data exchange between the servers and the designated database.
Typically, solutions using Red Hat Process Automation Manager manage several resources within a single transaction. JMS for asynchronous jobs, events, and timers, for example. Red Hat Process Automation Manager requires an XA driver in the datasource when possible to ensure data atomicity and consistent results. If transactional code for different schemas exists inside listeners or derives from hooks provided by the jBPM engine, an XA driver is also required.
Do not use non-XA datasources unless you are positive you do not have multiple resources participating in single transactions.
For production environments, specify an actual data source. Do not use the example data source in production environments.
Prerequisites
- The JDBC providers that you want to use to create database connections are configured on all servers on which you want to deploy KIE Server, as described in the "Creating Datasources" and "JDBC Drivers" sections of the Red Hat JBoss Enterprise Application Server Configuration Guide.
-
The Red Hat Process Automation Manager 7.13.5 Add Ons (
rhpam-7.13.5-add-ons.zip
) file is downloaded from the Software Downloads page in the Red Hat Customer Portal.
Procedure
Complete the following steps to prepare your database:
-
Extract
rhpam-7.13.5-add-ons.zip
in a temporary directory, for exampleTEMP_DIR
. -
Extract
TEMP_DIR/rhpam-7.13.5-migration-tool.zip
. -
Change your current directory to the
TEMP_DIR/rhpam-7.13.5-migration-tool/ddl-scripts
directory. This directory contains DDL scripts for several database types. Import the DDL script for your database type into the database that you want to use.
- The following example creates jBPM database structures in PostreSQL
psql jbpm < /ddl-scripts/postgresql/postgresql-jbpm-schema.sql
NoteIf you are using PostgreSQL or Oracle in conjunction with Spring Boot, you must import the respective Spring Boot DDL script, for example
/ddl-scripts/oracle/oracle-springboot-jbpm-schema.sql
or/ddl-scripts/postgresql/postgresql-springboot-jbpm-schema.sql
.NoteThe PostgreSQL DDL scripts create the PostgreSQL schema with auto-incrementing integer value (OID) columns for entity attributes annotated with
@LOB
. To use other binary column types such as BYTEA instead of OID, you must create the PostgreSQL schema with thepostgresql-bytea-jbpm-schema.sql
script and set the Red Hat Process Automation Managerorg.kie.persistence.postgresql.useText=true
andorg.kie.persistence.postgresql.useBytea=true
flags. Do not use thepostgresql-jbpm-lo-trigger-clob.sql
script when creating a BYTEA-based schema. Red Hat Process Automation Manager does not provide a migration tool to change from an OID-based to a BYTEA-based schema.
-
Extract
-
Open
EAP_HOME/standalone/configuration/standalone-full.xml
in a text editor and locate the<system-properties>
tag. Add the following properties to the
<system-properties>
tag where<DATASOURCE>
is the JNDI name of your data source and<HIBERNATE_DIALECT>
is the hibernate dialect for your database.NoteThe default value of the
org.kie.server.persistence.ds
property isjava:jboss/datasources/ExampleDS
. The default value of theorg.kie.server.persistence.dialect
property isorg.hibernate.dialect.H2Dialect
.<property name="org.kie.server.persistence.ds" value="<DATASOURCE>"/> <property name="org.kie.server.persistence.dialect" value="<HIBERNATE_DIALECT>"/>
The following example shows how to configure a datasource for the PostgreSQL hibernate dialect:
<system-properties> <property name="org.kie.server.repo" value="${jboss.server.data.dir}"/> <property name="org.kie.example" value="true"/> <property name="org.jbpm.designer.perspective" value="full"/> <property name="designerdataobjects" value="false"/> <property name="org.kie.server.user" value="rhpamUser"/> <property name="org.kie.server.pwd" value="rhpam123!"/> <property name="org.kie.server.location" value="http://localhost:8080/kie-server/services/rest/server"/> <property name="org.kie.server.controller" value="http://localhost:8080/business-central/rest/controller"/> <property name="org.kie.server.controller.user" value="kieserver"/> <property name="org.kie.server.controller.pwd" value="kieserver1!"/> <property name="org.kie.server.id" value="local-server-123"/> <!-- Data source properties. --> <property name="org.kie.server.persistence.ds" value="java:jboss/datasources/KieServerDS"/> <property name="org.kie.server.persistence.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> </system-properties>
The following dialects are supported:
-
DB2:
org.hibernate.dialect.DB2Dialect
-
MSSQL:
org.hibernate.dialect.SQLServer2012Dialect
-
MySQL:
org.hibernate.dialect.MySQL5InnoDBDialect
-
MariaDB:
org.hibernate.dialect.MySQL5InnoDBDialect
-
Oracle:
org.hibernate.dialect.Oracle10gDialect
-
PostgreSQL:
org.hibernate.dialect.PostgreSQL82Dialect
-
PostgreSQL plus:
org.hibernate.dialect.PostgresPlusDialect
-
Sybase:
org.hibernate.dialect.SybaseASE157Dialect