用户组操作
1、添加用户组
/**
* @description 添加用户组
* @param identityService 身份服务组件
*/
private static void saveGroup(IdentityService identityService) {
for (int i = 0; i < 10; i++) {
String groupId = UUID.randomUUID().toString();
Group group = identityService.newGroup(groupId);
group.setName("Group_" + i);
group.setType("TYPE_" + i);
identityService.saveGroup(group);
}
}
2、修改用户组
/**
* @description 修改用户组
* @param identityService 身份服务组件
* @param oldName 修改前用户组的名称
* @param newName 修改后用户组的名称
*/
private static void updateGroup(IdentityService identityService,String oldName,String newName) {
Group group = identityService.createGroupQuery().groupName(oldName).singleResult();
group.setName(newName);
identityService.saveGroup(group);
}
3、删除用户组
/**
* @description 删除用户组
* @param identityService
*/
private static void removeGroup(IdentityService identityService,String groupId) {
identityService.deleteGroup(groupId);
}
4、查询用户组
/**
* @description 原生sql查询
* @param identityService
* @param sql 查询sql语句
* @param paramKey 查询参数的key值
* @param paramValue 查询参数的value值
*/
private static void queryGroupByNativeSQL(IdentityService identityService,String sql,String paramKey,String paramValue) {
List<Group> list = identityService.createNativeGroupQuery().sql(sql)
.parameter(paramKey, paramValue).list();
for (Group group2 : list) {
System.out.println(group2.getId() + "---" + group2.getName() + "---" + group2.getType());
}
}
/**
* @description 条件查询
* @param identityService
* @param groupName 用户组名称
* @param groupType 用户组类型
*/
private static void queryGroupByName(IdentityService identityService,String groupName,String groupType) {
Group group = identityService.createGroupQuery().groupName(groupName).singleResult();
System.out.println(group.getId() + "---" + group.getName() + "---" + group.getType());
List<Group> list = identityService.createGroupQuery().groupName(groupName).groupType(groupType).list();
for (Group group1 : list) {
System.out.println(group1.getId() + "---" + group1.getName() + "---" + group1.getType());
}
}
/**
* @description 用户组数据排序
* @param identityService
*/
private static void orderGroup(IdentityService identityService) {
List<Group> list = identityService.createGroupQuery().orderByGroupName().asc().orderByGroupId().desc().list();
for (Group group : list) {
System.out.println(group.getId() + "---" + group.getName() + "---" + group.getType());
}
}
/**
* @description 分页查询
* @param identityService
* @param firstResult 查询结果的第一条数据的索引
* @param maxResult 查询结果的数量
*/
private static void pagingQuery(IdentityService identityService,int firstResult,int maxResult) {
List<Group> list = identityService.createGroupQuery().listPage(firstResult, maxResult);
for (Group group : list) {
System.out.println(group.getId() + "---" + group.getName() + "---" + group.getType());
}
}
/**
* @description 查询所有用户组
* @param identityService
*/
private static void queryGroup(IdentityService identityService) {
List<Group> list = identityService.createGroupQuery().list();
for (Group group : list) {
System.out.println(group.getId() + "---" + group.getName() + "---" + group.getType());
}
}
用户相关操作
1、添加用户
/**
* @description 添加用户
* @param identityService
* @param userId 用户的id
* @param firstName 用户名
* @param lastName 用户的姓
* @param email 用户的邮箱
* @param passwd 用户密码
*/
private static void saveUser(IdentityService identityService, String userId, String firstName, String lastName, String email, String passwd) {
// 使用newUser方法创建User实例
User user = identityService.newUser(userId);
// 设置用户的各个属性
user.setFirstName(firstName);
user.setLastName(lastName);
user.setEmail(email);
user.setPassword(passwd);
// 使用saveUser方法保存用户
identityService.saveUser(user);
}
2、修改用户
/**
* @description 修改用户
* @param identityService
* @param userId 用户的id
*/
private static void updateUser(IdentityService identityService,String userId) {
// 查询用户
User user = identityService.createUserQuery().userId(userId).singleResult();
user.setPassword("123456");
// 执行保存
identityService.saveUser(user);
}
3、删除用户
/**
* @description 删除用户
* @param identityService
* @param userId
*/
private static void removeUser(IdentityService identityService,String userId) {
// 删除用户
identityService.deleteUser(userId);
}
4、查询用户
/**
* @description 查询用户
* @param identityService
*/
private static void queryUser(IdentityService identityService) {
List<User> users = identityService.createUserQuery().list();
System.out.println("user count:" + users.size());
// userEmailLike
users = identityService.createUserQuery().userEmailLike("%163.com").list();
System.out.println("userEmailLike:" + users.size());
// 使用NativeQuery
users = identityService.createNativeUserQuery()
.sql("select * from ACT_ID_USER where EMAIL_ = #{email}")
.parameter("email", "qifanyuanhang@163.com").list();
System.out.println("native query:" + users.get(0).getEmail());
}
5、用户密码验证
/**
* @description 验证用户密码
* @param identityService
* @param userId 用户id
*/
private static void checkPasswd(IdentityService identityService,String userId) {
boolean flag = identityService.checkPassword(userId, "abc");
System.out.println("验证密码结果为:" + flag);
flag = identityService.checkPassword(userId, "123456");
System.out.println("验证密码结果为:" + flag);
}
6、用户权限设置
/**
* @description 设置用户的权限
* @param engine
*/
private static void authenticatedUser(ProcessEngine engine) {
// 得到身份服务组件实例
final IdentityService identityService = engine.getIdentityService();
// 设置当前线程的userId为1
identityService.setAuthenticatedUserId("3");
System.out.println("当前线程usreId:" + Authentication.getAuthenticatedUserId());
// 启动两条线程
new Thread() {
public void run() {
try {
identityService.setAuthenticatedUserId("1");
Thread.sleep(5000);
System.out.println("线程1的userId:" + Authentication.getAuthenticatedUserId());
} catch (Exception e) {
}
}
}.start();
new Thread() {
public void run() {
identityService.setAuthenticatedUserId("2");
System.out.println("线程2的usrId:" + Authentication.getAuthenticatedUserId());
}
}.start();
}
用户信息相关操作
1、添加用户信息
/**
* @description 添加用户信息
* @param identityService
* @param userId
*/
private static void saveUserInfo(IdentityService identityService, String userId) {
// 创建用户
saveUser(identityService, userId, "yuanhang", "qiafan", "qifanyuanhang@163.com", "123456");
// 创建一个用户信息
identityService.setUserInfo(userId, "age", "30");
// 创建第二个用户信息
identityService.setUserInfo(userId, "weight", "60KG");
}
3、删除用户信息
/**
* @description 删除用户信息
* @param identityService
* @param userId
* @param key
*/
private static void removeuserInfo(IdentityService identityService, String userId, String key) {
// 删除用户年龄信息
identityService.deleteUserInfo(userId, key);
}
4、查询用户信息
/**
* @description 查询用户信息
* @param identityService
* @param userId
* @param key
*/
private static void queryUserInfo(IdentityService identityService, String userId, String key) {
// 查询用户信息
String value = identityService.getUserInfo(userId, key);
System.out.println("用户年龄为:" + value);
}
5、设置用户图片
/**
* @description 设置用户图片
* @param identityService
* @param userId
*/
private static void setUserPicture(IdentityService identityService, String userId) {
try {
// 读取图片并转换为byte数组
java.net.URL url = UserInfoOperate.class.getClassLoader().getResource("logo.png");
FileInputStream fis = new FileInputStream(
new File(url.toString().substring(url.toString().indexOf("/") + 1)));
BufferedImage img = ImageIO.read(fis);
ByteArrayOutputStream output = new ByteArrayOutputStream();
ImageIO.write(img, "png", output);
// 获取图片的byte数组
byte[] picArray = output.toByteArray();
// 创建Picture实例
Picture picture = new Picture(picArray, "logo image");
// 为用户设置图片
identityService.setUserPicture(userId, picture);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
用户组和用户之前关系
添加和删除用户组与用户关系
/**
* @description 添加和删除用户组与用户关系
* @param identityService
*/
private static void addAndDelMembership(IdentityService identityService) {
// 保存一个用户
User user = creatUser(identityService, "1", "yuanhang", "qifan", "qifanyuanhang@163.com", "123456");
// 保存一个用户组
Group group = createGroup(identityService, "2", "经理组", "manager");
// 绑定关系
identityService.createMembership(user.getId(), group.getId());
// 删除绑定关系
identityService.deleteMembership(user.getId(), group.getId());
}
// 创建用户方法
private static User creatUser(IdentityService identityService, String id, String first, String last, String email,
String passwd) {
// 使用newUser方法创建User实例
User user = identityService.newUser(id);
// 设置用户的各个属性
user.setFirstName(first);
user.setLastName(last);
user.setEmail(email);
user.setPassword(passwd);
// 使用saveUser方法保存用户
identityService.saveUser(user);
return identityService.createUserQuery().userId(id).singleResult();
}
// 将用户组数据保存到数据库中
private static Group createGroup(IdentityService identityService, String id, String name, String type) {
// 调用newGroup方法创建Group实例
Group group = identityService.newGroup(id);
group.setName(name);
group.setType(type);
identityService.saveGroup(group);
return identityService.createGroupQuery().groupId(id).singleResult();
}
根据用户查询对应的用户组
/**
* @description 根据用户查询对应的用户组
* @param identityService
*/
private static void QueryGroupsByUser(IdentityService identityService) {
// 创建一个用户
User user = creatUser(identityService, UUID.randomUUID().toString(), "yuanhang", "qifan",
"qifanyuanhang@163.com", "123456");
// 创建两个用户组
Group group1 = createGroup(identityService, UUID.randomUUID().toString(), "经理组", "manager");
Group group2 = createGroup(identityService, UUID.randomUUID().toString(), "员工组", "manager");
// 将用户与两个用户组绑定关系
identityService.createMembership(user.getId(), group1.getId());
identityService.createMembership(user.getId(), group2.getId());
// 调用memberOfGroup方法查询用户所在的用户组
List<Group> groups = identityService.createGroupQuery().groupMember(user.getId()).list();
System.out.println("张三属于的用户组有:");
for (Group group : groups) {
System.out.println(group.getName());
}
}
根据用户组查询对应的用户
/**
* @description 根据用户组查询对应的用户
* @param identityService
*/
private static void QueryUsersByGroup(IdentityService identityService) {
// 保存两个用户
User user1 = creatUser(identityService, UUID.randomUUID().toString(), "zhangsan", "young",
"qifanyuanhang@163.com", "123456");
User user2 = creatUser(identityService, UUID.randomUUID().toString(), "lisi", "young", "qifanyuanhang@163.com",
"123456");
// 保存一个用户组
Group group = createGroup(identityService, UUID.randomUUID().toString(), "经理组", "manager");
// 将两个用户分配到用户组下
identityService.createMembership(user1.getId(), group.getId());
identityService.createMembership(user2.getId(), group.getId());
List<User> users = identityService.createUserQuery().memberOfGroup(group.getId()).list();
System.out.println("经理组有如下人员:");
for (User user : users) {
System.out.println(user.getFirstName());
}
}