工作流activiti入门(六):身份数据的相关操作

本文详细介绍用户与用户组管理的全面操作,包括用户及用户组的增删改查、权限设置、信息关联等核心功能,适用于各类系统管理员和技术开发者。

用户组操作

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());
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值