activiti5.22切换数据库至postgresql

时间:2023-01-17 08:21:06

第一步,创建数据库:

使用psql -U postgres登录后执行下列命令

postgres=# create role activiti login password 'mima' superuser;
CREATE ROLE
postgres=# create database activiti with owner = activiti encoding='UTF8' tablespace=pg_default lc_collate='zh_CN.UTF-8' connection limit=-1 template template0;
CREATE DATABASE
postgres=# grant connect on database activiti to activiti;
GRANT
postgres=# create schema activiti;
CREATE SCHEMA
postgres=# alter database activiti set search_path to activiti;
ALTER DATABASE
postgres=# alter role activiti set search_path=activiti;
ALTER ROLE
postgres=# grant all privileges on schema activiti to activiti;
GRANT


换activiti登录授权(上面用postgres授权居然无效)

activiti=# create schema activiti;
CREATE SCHEMA
activiti=# grant usage on schema activiti to activiti;
GRANT
activiti=# grant create on schema activiti to activiti;
GRANT

(简单一点的授权语句也可以是grant all privileges on schema activiti to activiti;)


第二步,创建表

使用复制sql到命令行执行的方法貌似有问题(复制的sql居然有长度限制),所以使用命令

在Linux的CLI界面执行psql -U activiti </路径/activiti-5.22.0/database/create/activiti.postgres.create.engine.sql

同理导入其他两个文件


第三步,授权远程访问

首先centos7 的firewall打开

网上的教程说要授权访问是要修改pg_hba.conf文件,可是用locate是找不到这个文件的,只能找到pg_hba.conf.sample文件,但这是个例子不会生效.

那个配置文件在/var/lib/pgsql/9.6/data/pg_hba.conf 注意那个9.6是我的版本号,另外要在CLI界面下用su来访问

修改host 后面address栏为samenet method为trust

然后访问同目录下(这点和网上的说法不一致)修改postgresql.conf文件,将数据库服务器的监听模式修改为监听所有主机发出的连接请求。
定位到listen_addresses=’localhost’。PostgreSQL安装完成后,默认是只接受来在本机localhost的连接请 求。
然后调用service postgresql-9.6 restart重启生效

如果没有完成上面的远程授权会报错Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections

打开DBeaver用activiti登录activiti

第四步配置activiti.cfg.xml,

注意对于Junit测试时要修改test目录下的该文件

另外还有一个坑是注释掉下面的那行被注释的,否则每次都是新的数据库,就没有历史数据了

<?xml version="1.0" encoding="UTF-8"?>
<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.StandaloneInMemProcessEngineConfiguration">
	<!-- <property name="databaseSchemaUpdate" value="true"/>  -->	
    <property name="jdbcUrl" value="jdbc:postgresql://192.168.60.128:5432/activiti" />
    <property name="jdbcDriver" value="org.postgresql.Driver" />
    <property name="jdbcUsername" value="activiti" />
    <property name="jdbcPassword" value="mima" />

    <property name="databaseSchemaUpdate" value="true" />

    <property name="jobExecutorActivate" value="false" />
    <property name="asyncExecutorEnabled" value="true" />
    <property name="asyncExecutorActivate" value="false" />

    <property name="mailServerHost" value="mail.my-corp.com" />
    <property name="mailServerPort" value="5025" />
	</bean>
</beans>

运行一下下面的测试

@Test
	public void testUser(){
		IdentityService identityService=activitiRule.getIdentityService();
		User user=identityService.newUser("Qbit");
		user.setFirstName("Gogle");
		user.setLastName("Sinker");
		user.setEmail("123@123.com");
	//	identityService.saveUser(user);
		User userInDb=identityService.createUserQuery().userId("Qbit").singleResult();
		assertNotNull(userInDb);
		System.out.println(userInDb);
	}

第一次不要注释那行注释的,第二次注释掉运行一次,这就说明数据已经到数据库了,可以看下act_id_user,里面是有数据的.