目的:对cube进行权限控制,不局限方式。由于权限控制做的非常细,希望用程序自动读取配置文件控制权限。如果有好的实现方式,可以完全忽略下面给出的脚本方式。
限制:必须使用Access Manager + SunOne的方式管理用户。权限控制的基准是AM里的角色,所有现存的配置信息均基于这些角色。用户和角色数据是从旧系统中继承的,不可更改object class,也不能迁移到LDAP登陆方式。
环境:Cognos 版本是10.1, SDK已经安装。操作系统 Win 2008 R2, SunOne和AM装在另一台Win 2003上。
目前的解决方案:
Cognos Transformer支持脚本刷新权限(例子在最后),其作用是给myCube这个文件的Org这个维度刷新权限控制,指定Org_Example这个角色能看TreeNode_Example节点以下的数据。红色的CAMID那段即这个角色的CAMID。该脚本已经测试通过
我打算用.net或Java动态生成这样的脚本,对于这段脚本中的大部分参数我都可以通过数据库获得,但是角色对应的CAMID暂时无法获取。
目前我是直接在Cognos console里手工查看角色的属性,得到这个camid的。
也曾尝试在Cognos metadata里查询,只找到了Access Manager的root role(就是那个叫Root User Class的),administrator用户的CAMID也能找到,但是其他role都无法找到。
因此,我需要在Cognos10中获取AccessManager的角色的CAMID。看到IBM官方文档里说到Cognos 10 SDK可以获得AM里用户的CAMID,但是一直没找到获得角色CAMID的接口。
再重复一次,这个脚本只是一种尝试,如果有更好的解决方案,能满足现在的限制条件,欢迎。
=========以下是脚本,仅供参考==========OpenMDL "myCube.mdl" SecurityNameSpaceMake "s7" SecurityNamespaceCAMID 'CAMID("s7")'SecurityNameSpaceUpdate "s7" SecurityNamespaceCAMID 'CAMID("s7")'ViewMake "Example~User view" Dimension "Org" ViewSecurity "Org_Example" Apex "TreeNode_Example" CustomViewMake "Example" DimensionView "Org" "Example~User view" SecurityObjectMake "CAMID("s7:r:authid=2948495323")"SecurityNamespace "s7" SecurityObjectDisplayName "Org" SecurityObjectType SecurityType_Role CustomViewList "Example" EndListPowerCubeCustomViewListUpdate Cube "myCube" StartList"Example"EndListsavemdl "myCube.mdl"
附件:
获取accessmanager中各个用户组的camid.rar (1.59 KB)
收起