[Java][activiti]同步或者重构activiti identify用户数据的方法(二)

2014-11-23 21:39:24 · 作者: · 浏览: 23
etEnName()); } } /** * 更新工作流用户以及角色 * @param user 用户对象{@link User} * @param roleIds 用户拥有的角色ID集合 * @param activitiUser Activiti引擎的用户对象,{@link org.activiti.engine.identity.User} */ privatevoid updateActivitiData(User user, List roleIds, org.activiti.engine.identity.User activitiUser) { String userId = user.getId().toString(); // 更新用户主体信息 cloneAndSaveActivitiUser(user, activitiUser); // 删除用户的membership List activitiGroups = identityService.createGroupQuery().groupMember(userId).list(); for(Group group : activitiGroups) { logger.debug(delete group from activit: {}, ToStringBuilder.reflectionToString(group)); identityService.deleteMembership(userId, group.getId()); } // 添加membership addMembershipToIdentify(roleIds, userId); } /** * 使用系统用户对象属性设置到Activiti User对象中 * @param user 系统用户对象 * @param activitiUser Activiti User */ privatevoid cloneAndSaveActivitiUser(User user, org.activiti.engine.identity.User activitiUser) { activitiUser.setFirstName(user.getName()); activitiUser.setLastName(StringUtils.EMPTY); activitiUser.setPassword(StringUtils.EMPTY); activitiUser.setEmail(user.getEmail()); identityService.saveUser(activitiUser); } @Override publicvoid delete(Long userId, booleansynToActiviti, booleansynToChecking) throwsServiceException, Exception { // 查询需要删除的用户对象 User user = accountManager.getEntity(userId); if(user == null) { thrownew ServiceException(删除用户时,找不到ID为+ userId + 的用户); } /** * 同步删除Activiti User Group */ if(synToActiviti) { // 同步删除Activiti User List roleList = user.getRoleList(); for(Role role : roleList) { identityService.deleteMembership(userId.toString(), role.getEnName()); } // 同步删除Activiti User identityService.deleteUser(userId.toString()); } // 删除本系统用户 accountManager.deleteUser(userId); // 删除考勤机用户 if(synToChecking) { checkingAccountManager.deleteEntity(userId); } } }
同步全部数据接口实现片段:

同步全部数据步骤:

删除Activiti的User、Group、Membership数据

复制Role对象数据到Group

复制用户数据以及Membership数据

ActivitiIdentifyCommonDao.java
publicclass ActivitiIdentifyCommonDao {
 
    protectedLogger logger = LoggerFactory.getLogger(getClass());
     
    @Autowired
    privateJdbcTemplate jdbcTemplate;
 
    /**
     * 删除用户和组的关系
     */
    publicvoid deleteAllUser() {
        String sql = delete from ACT_ID_USER;
        jdbcTemplate.execute(sql);
        logger.debug(deleted from activiti user.);
    }
 
    /**
     * 删除用户和组的关系
     */
    publicvoid deleteAllRole() {
        String sql = delete from ACT_ID_GROUP;
        jdbcTemplate.execute(sql);
        logger.debug(deleted from activiti group.);
    }
 
    /**
     * 删除用户和组的关系
     */
    publicvoid deleteAllMemerShip() {
        String sql = delete from ACT_ID_MEMBERSHIP;
        jdbcTemplate.execute(sql);
        logger.debug(deleted from activiti membership.);
    }
 
}


ActivitiIdentifyService.java
publicclass ActivitiIdentifyService extendsAbstractBaseService {
     
    @Autowired
    protectedActivitiIdentifyCommonDao activitiIdentifyCommonDao;
     
    /**
     * 删除用户和组的关系
     */
    publicvoid deleteAllUser() {
        activitiIdentifyCommonDao.deleteAllUser();
    }
     
    /**
     * 删除用户和组的关系
     */
    publicvoid deleteAllRole() {
        activitiIdentifyCommonDao.deleteAllRole();
    }
     
    /**
     * 删除用户和组的关系
     */
    publicvoid deleteAllMemerShip() {
        activitiIdentifyCommonDao.deleteAllMemerShip();
    }
}


AccountServiceImpl.java
publicclass AccountServiceImpl implementsAccountService {
@Override
    publicvoid synAllUserAndRoleToActiviti() throwsExcep