第一步,创建数据库:
使用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,里面是有数据的.