描述:我的需求只是把系統的角色用戶同步到activiti的角色用戶表并且生成角色用户关联关系。
1.rest接口:
@RequestMapping(value = "/updateUser" , method = RequestMethod.GET) @ResponseBody @ApiOperation(value="用户列表信息",produces="application/json",httpMethod="GET") public ResponseEntity<?> updateUser() { List<TSRoleUser> listUsers=userService.getList(TSRoleUser.class); for (TSRoleUser tsUser : listUsers) { TSUser user = tsUser.getTSUser(); TSRole role = tsUser.getTSRole(); String roleName = role.getRoleName(); String roleCode = role.getRoleCode(); String userName = user.getUserName(); String realName = user.getRealName(); //同步数据到表 accountService.saveUser(userName, userName,realName, roleCode,roleName); try{Thread.sleep(1000);}catch(Exception e){} } JSONObject o = new JSONObject(); o.put("flag", true); o.put("msg", "用户角色同步到工作流完成。"); return new ResponseEntity(o, HttpStatus.OK); }
2.接口:
public interface AccountService { //userName, userName,realName, roleCode,roleName public void saveUser(String userId,String userName,String realName,String roleIds,String roleName); }
3.接口实现:
@Service @Transactional public class AccountServiceImpl implements AccountService{ private static final Logger logger = Logger.getLogger(AccountServiceImpl.class); @Autowired protected IdentityService identityService; public void saveUser(String userId,String userName,String realName,String roleIds,String roleName) { UserQuery userQuery = identityService.createUserQuery(); List<org.activiti.engine.identity.User> activitiUsers = userQuery.userId(userId).list(); if(activitiUsers.size() == 1) { updateActivitiData(userId,userName,realName, roleIds,roleName,activitiUsers.get(0)); }else if (activitiUsers.size() > 1) { String errorMsg = "发现重复用户:id="+ userId; logger.error(errorMsg); throw new RuntimeException(errorMsg); }else{ newActivitiUser(userId,userName,realName, roleIds,roleName); } } private void newActivitiUser(String userId,String userName,String realName,String roleIds,String roleName) { // 添加用户 saveActivitiUser(userId,userName,realName, roleIds,roleName); } private void saveActivitiUser(String userId,String userName,String realName,String roleIds,String roleName) { org.activiti.engine.identity.User activitiUser = identityService.newUser(userId); cloneAndSaveActivitiUser(userName,realName, activitiUser); logger.debug("add activiti user: "+ ToStringBuilder.reflectionToString(activitiUser)); } private void cloneAndSaveActivitiUser(String userName,String realName, org.activiti.engine.identity.User activitiUser) { activitiUser.setFirstName(realName); activitiUser.setLastName(realName); identityService.saveUser(activitiUser); } private void updateActivitiData(String userId,String userName,String realName,String roleIds,String roleName,org.activiti.engine.identity.User activitiUser) { // 更新用户主体信息 cloneAndSaveActivitiUser(userName, realName,activitiUser); // 删除用户的membership List<Group> activitiGroups = identityService.createGroupQuery().groupId(roleIds).list();//.groupMember(userId).list(); if(activitiGroups.size() == 0) { Group group = identityService.newGroup(roleIds); group.setName(roleName); identityService.saveGroup(group); } // 添加membership addMembershipToIdentify(roleIds, userId); } private void addMembershipToIdentify(String roleIds, String userId) { identityService.deleteMembership(userId, roleIds); identityService.createMembership(userId, roleIds); } }