页面树结构
转至元数据结尾
转至元数据起始

问题

从V8.5等历史版本升级到V10.5及之后的版本,会发现用户原本可查看的报表、目录、数据集等突然间看不到了。

这是因为在V10.5版本中,升级了权限体系,区分开引用权限和查看权限。详情可参考:【升级注意事项】V8.5➜V10.5


解决方案

在系统中角色、权限配置较简单时,可以采用直接对角色修改资源权限,勾选上资源的“查看”权限来解决。

但是在系统中角色较多、权限配置较复杂时,通过修改角色的资源权限的方案所需要的时间、精力都非常大。那么可以通过脚本方式进行批量修改。

新建任务,类型选择“定制”。拷贝以下脚本,保存任务后执行任务即可。

注:运行前请先备份知识库!

importPackage(Packages.java.io);
importPackage(Packages.java.lang);
importPackage(Packages.java.util);
importPackage(Packages.smartbi.connectionpool);
importPackage(Packages.smartbi.util);
importPackage(Packages.smartbi.oltp);

var conn = null;
var state = null;
try {
    var connectionPool = ConnectionPool.getInstance();
    conn = connectionPool.getConnection("DS.SYSTEM知识库");
    var updateSql = "update t_permission_detail p left join t_restree r on p.c_resid = r.c_resid set p.c_type = 'READ' where p. c_type = 'REF' and p.c_assigneetype = 'ROLE' and r.c_restype='DEFAULT_TREENODE'";
    state = conn.createStatement();
    var deleteCount = state.executeUpdate(updateSql);
    logger.info("EPPR-63157 Update SQL==>" + updateSql);
    logger.info("EPPR-63157 Delete Count==>" + deleteCount);
    state.close();
    state = null;
    conn.close();
    conn = null;
    
   logger.info("EPPR-63157 Script Execute End");
   connector.remoteInvoke('CompositeService', 'clearCache', []);
} catch (e) {
    var p = org.apache.commons.lang.reflect.FieldUtils.readDeclaredField(e, "stackProvider", true);
    var ex = org.apache.commons.lang.reflect.FieldUtils.readDeclaredField(p, "exception", true);
    logger.error("EPPR-63157 Script Execute Error", ex);
} finally {
    if (state) {
        state.close();
    }
    if (conn) {
        conn.close();
    }
}
  • 无标签