//任务类型:定制 importPackage(Packages.java.io); importPackage(Packages.java.lang); importPackage(Packages.java.util); importPackage(Packages.smartbi.usermanager); importPackage(Packages.smartbi.sdk); importPackage(Packages.smartbi.sdk.service.user); importPackage(Packages.smartbi.sdk.service.datasource); //授予的角色ID var roleId="I8a8a8f6c0193b9deb9de58ed0193ba0aae3b004a"; /** * 数据源的ID值。后面SQL语句都在该数据源下执行。 */ var dsId = "DS.test1"; /** * 该SQL语句获取用户名称,只需要返回smartbi的用户登录名称即可 */ var sql = "SELECT c_audit FROM t_audit_application"; //下面的代码不用修改 var usrManagerService = new UserManagerService(connector); var role = usrManagerService.getRoleById(roleId); if (role) { // 如果角色存在才执行 var datasrcService = new DataSourceService(connector); //执行sql var gridDataGroup = datasrcService.executeNoCacheable(dsId, sql); for (var i = 0; i < gridDataGroup.getRowsCount(); i++) { //获取用户名 var userName = gridDataGroup.get(i, 0).getValue(); var user = usrManagerService.getUserByName(userName); //如果用户存在才授予角色 if (user) { // 设置用户角色 var usrRoleIdList = [roleId]; //查询用户原有角色信息添加到角色列表中 var oldAssignedRoles = usrManagerService.getAssignedRolesOfUser(user.getId()); for (var m = 0; m < oldAssignedRoles.size(); m++) { var oldRoleId = oldAssignedRoles.get(m).getId(); if (usrRoleIdList.join("###").indexOf(oldRoleId) < 0) usrRoleIdList.push(oldRoleId); } logger.info("userName:"+userName); //授予角色 usrManagerService.assignRolesToUser(user.getId(), usrRoleIdList); } } }