14.3. 为 KIE 服务器配置 JDBC 数据源
数据源是一个对象,它允许 Java 数据库连接(JDBC)客户端(如应用服务器)与数据库建立连接。应用程序在 Java 命名和目录接口(JNDI)树或本地应用程序上下文中查找数据源,并请求数据库连接来检索数据。您必须为 KIE 服务器配置数据源,以确保在服务器和指定数据库之间进行正确的数据交换。
通常,使用 Red Hat Process Automation Manager 的解决方案在单个事务中管理多个资源。用于异步作业、事件和计时器的 JMS,例如:在确保数据原子性和一致性结果时,Red Hat Process Automation Manager 需要数据源中的 XA 驱动程序。如果监听器内存在针对不同架构的事务代码,或者从 jBPM 引擎提供的 hook 派生出来,则还需要一个 XA 驱动程序。
不要使用非 XA 数据源,除非您正面没有参与单一事务的多个资源。
对于生产环境,请指定实际的数据源。不要在生产环境中使用示例数据源。
先决条件
- 您希望用于创建数据库连接的 JDBC 供应商在您要在其上部署 KIE 服务器的所有服务器上配置,如红帽 JBoss 企业应用服务器配置指南 的"Creating Datasources"和"JDBC 驱动程序"部分中所述。
-
Red Hat Process Automation Manager 7.13.5 Add Ons (
rhpam-7.13.5-add-ons.zip
)文件从红帽客户门户中的 软件下载页面 下载。
流程
完成以下步骤以准备数据库:
-
在临时目录中提取
rhpam-7.13.5-add-ons.zip
,如TEMP_DIR
。 -
提取
TEMP_DIR/rhpam-7.13.5-migration-tool.zip
。 -
将您的当前目录更改为
TEMP_DIR/rhpam-7.13.5-migration-tool/ddl-scripts
目录。此目录包含多种数据库类型的 DDL 脚本。 将您的数据库类型的 DDL 脚本导入到您要使用的数据库。
- 以下示例在 PostreSQL 中创建 jBPM 数据库结构
psql jbpm < /ddl-scripts/postgresql/postgresql-jbpm-schema.sql
注意如果您与 Spring Boot 结合使用 PostgreSQL 或 Oracle,则必须导入对应的 Spring Boot DDL 脚本,如
/ddl-scripts/oracle/oracle-springboot-jbpm-schema.sql
或/ddl-scripts/postgresql/postgresql-springboot-jbpm-schema.sql
。注意PostgreSQL DDL 脚本创建 PostgreSQL 模式,其自动递增带有
@LOB
的实体属性的整数值(OID)列。要使用其他二进制列,如 BYTEA 而不是 OID,您必须使用postgresql-bytea-jbpm-schema.sql
脚本创建 PostgreSQL 模式,并设置 Red Hat Process Automation Managerorg.kie.persistence.postgresql.useText=true
和org.kie.persistence.postgresql.useBytea=true
标志。在创建基于 BYTEA 的 schema 时,不要使用postgresql-jbpm-lo-trigger-clob.sql
脚本。Red Hat Process Automation Manager 不提供从基于 OID 到基于 BYTEA 的 schema 的迁移工具。
-
在临时目录中提取
-
在文本编辑器中打开
EAP_HOME/standalone/configuration/standalone-full.xml
,并找到 <system-properties>
标签。 在 <
system-properties
> 标签中添加以下属性,其中 <DATASOURCE
> 是数据源的 JNDI 名称,<HIBERNATE_DIALECT
> 是您的数据库休眠状态。注意org.kie.server.persistence.ds
属性的默认值是java:jboss/datasources/ExampleDS
。org.kie.server.persistence.dialect
属性的默认值是org.hibernate.dialect.H2Dialect
。<property name="org.kie.server.persistence.ds" value="<DATASOURCE>"/> <property name="org.kie.server.persistence.dialect" value="<HIBERNATE_DIALECT>"/>
以下示例演示了如何为 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>
支持以下分区:
-
DB2:
org.hibernate.dialect.DB2Dialect
-
MSSQL:
org.hibernate.SQLServer 2012Dialect
-
MySQL:
org.hibernate.dialect.MySQL5InnoDBDialect
-
MariaDB:
org.hibernate.dialect.MySQL5InnoDBDialect
-
Oracle:
org.hibernate.dialect.Oracle10gDialect
-
PostgreSQL:
org.hibernate.dialect.PostgreSQL82Dialect
-
PostgreSQL 加上:
org.hibernate.dialect.PostgresPlusPlusDialect
-
Sybase:
org.hibernate.dialect.SybaseASE157Dialect