flowable中用户相关api
springboot引入flowable:高版本mysql报错
<!-- https://mvnrepository.com/artifact/org.flowable/flowable-spring-boot-starter -->
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter</artifactId>
<version>6.7.2</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
配置文件
# 应用服务 WEB 访问端口
server.port=8081
spring.datasource.username=root
spring.datasource.password=root1234
# nullCatalogMeansCurrent
spring.datasource.url=jdbc:mysql:///flowable_idm?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&nullCatalogMeansCurrent=true
logging.level.org.flowable = debug
flowable会自动生成需要的表,,跟用户相关的表:
ACT_ID_USER
: 用户表ACT_ID_GROUP
: 角色表ACT_ID_MEMBERSHIP
: 用户角色关联表ACT_ID_PROPERTY
: 自定义属性表
flowable里面用的乐观锁,每次修改版本都会+1,,如果要修改需要先获取,得到当前版本,,然后再进行更新,,,如果需要新增,需要将revision
设置为0
- IdentityService : 和用户的相关操作
新增用户:
UserEntityImpl user = new UserEntityImpl();
user.setId("cc");
user.setDisplayName("陈杰");
user.setPassword("123");
user.setFirstName("j");
user.setLastName("c1");
user.setEmail("121113@qq.com");
// revision默认为1 ,,, ,,修改需要设置revision,,,每次修改这个revision字段都会+1
// 第一次刚好数据库里面是1,,代码中默认是1
// 修改的时候需要先查询,,,查完之后再去修改
// user.setRevision(0);
identityService.saveUser(user);
User cc = identityService.createUserQuery().userId("cc").singleResult();
cc.setEmail("hehe@qq.com");
cc.setPassword("888");
// 修改用户密码
identityService.updateUserPassword(cc);
查找:
List<User> userList = identityService.createUserQuery().userDisplayNameLike("%c%").list();
List<Group> groups = identityService.createGroupQuery().groupMember("cc").list();
groups.stream().forEach(item->{
System.out.println(item.getName());
});
自定义sql: flowable底层是mybatis
User user = identityService.createNativeUserQuery().sql("select * from act_id_user where email_=#{email}").parameter("email", "hehe@qq.com").singleResult();
System.out.println(user.getId()+user.getPassword());
System.out.println("user = " + user);
删除组:
// ACT_ID_MEMBERSHIP 用户id和组之间的关联关系
// ACT_ID_GROUP 组
// 删除的时候会删除这两个表
identityService.deleteGroup("leader");
- IdmManagementService :获取系统属性
获取表ACT_ID_PROPERTY
的属性值
Map<String, String> properties = idmManagementService.getProperties();
for (String s : properties.keySet()) {
System.out.println(s+"="+properties.get(s));
}
可以根据指定的类,获取这个类对应的表名,字段名,等:
// 获取表信息
String tableName = idmManagementService.getTableName(Group.class);
System.out.println("tableName = " + tableName);
TableMetaData tableMetaData = idmManagementService.getTableMetaData(tableName);
System.out.println("列名 = " + tableMetaData.getColumnNames());
System.out.println("列类型 = " + tableMetaData.getColumnTypes());
System.out.println("表名 ="+tableMetaData.getTableName());