}
}
System.out.println(remoteEx.getMessage()); remoteEx.printStackTrace(); } }
return reportSpec;
权限管理
权限是指一个经过认证的用户所具有的权利。用户可以是个人,应用程序或者设备。可以控制用户是否有访问系统中特定数据或者执行某种操作的权限,例如某个应用提供的某种功能。 可以通过以下方式来进行Cognos 8的权限管理: ? 可以修改用户,用户组和角色,但不能创建用户。
? 可以控制内容库content store中对象的访问权限,例如文件夹,报表,数据源。
? 可以给用户,用户组和角色授权使用Cognos 8中特定的功能。 管理Cognos 8 的权限,必须有以下的权限:
目的 使用管理工具 使用目录工具修改组和角色的关系 使用功能工具修改功能的使用权限 Capabilities功能的执行权限 所需的权限 Administration管理的执行权限 Directory目录的执行权限 修改对象的访问权限 访问子对象 新增组或角色 新增组或角色的成员 对象的setPolicy设置权限 父对象的读和遍历权限 父名称空间的写权限 对象的写权限,父名称空间的便利权限 Cognos 8权限使用用户,用户组和角色。可以使用第三方认证源的用户,用户组和角色,也可以使用Cognos 8中创建的用户组和角色。但不能在Cognos 8中创建用户。
可以通过BI Bus API来创建删除Cognos用户组和角色,添加删除Cognos用户组和角色的成员。示例代码如下,GroupsAndRoles.java:
/**
* GroupsAndRoles.java *
* Copyright 2005 Cognos Incorporated. All Rights Reserved.
* Cognos and the Cognos logo are trademarks of Cognos Incorporated. *
* Description: This file contains methods for handling groups and roles * using the Cognos 8 SDK * */
import com.cognos.developer.schemas.bibus._3.BaseClass;
import com.cognos.developer.schemas.bibus._3.BaseClassArrayProp; import com.cognos.developer.schemas.bibus._3.Group; import com.cognos.developer.schemas.bibus._3.Locale;
import com.cognos.developer.schemas.bibus._3.MultilingualToken; import com.cognos.developer.schemas.bibus._3.MultilingualTokenProp; import com.cognos.developer.schemas.bibus._3.PropEnum; import com.cognos.developer.schemas.bibus._3.QueryOptions; import com.cognos.developer.schemas.bibus._3.Role;
import com.cognos.developer.schemas.bibus._3.SearchPathMultipleObject; import com.cognos.developer.schemas.bibus._3.Sort;
import com.cognos.developer.schemas.bibus._3.StringProp;
public class GroupsAndRoles {
//内容库content store操作类
CSHandlers csHandler = new CSHandlers();
/**
* Create a new Cognos group. 创建一个新的Cognos用户组 *
* @param connection Cognos 8 连接实例 * @param groupName 新用户组的名称
* @param selectedNamespace 新用户组所在的名称空间 * @return 返回添加成功的信息. * */
public String createGroup(CRNConnect connection, String groupName, String selectedNamespace) throws java.rmi.RemoteException { // Create a new group. BaseClass对象 BaseClass group = new Group(); //新用户组所在的名称空间 String path = selectedNamespace; //设置名称属性 // Note that the defaultName of the new object will be set to // the first (in this case, only) name token. MultilingualToken[] names = new MultilingualToken[1]; names[0] = new MultilingualToken(); Locale[] locales = csHandler.getConfiguration(connection); names[0].setLocale(locales[0].getLocale()); names[0].setValue(groupName); group.setName(new MultilingualTokenProp()); group.getName().setValue(names); // 往内容库content store中添加新用户组. csHandler.addObjectToCS(connection, group, path); return ( \ + groupName + \ }
/**
* Create a new Cognos role. 新增一个Cognos角色 *
* @param connection Cognos 8 连接对象 * @return 返回添加成功的信息.. * */
public String createRole(CRNConnect connection, String roleName, String nameSpace) throws java.rmi.RemoteException { // 新角色,BaseClass类. BaseClass role = new Role(); //名称空间 String path = nameSpace; //设置名称属性 // Note that the defaultName of the new object will be set to // the first (in this case, only) name token. MultilingualToken[] names = new MultilingualToken[1]; names[0] = new MultilingualToken(); Locale[] locales = csHandler.getConfiguration(connection); names[0].setLocale(locales[0].getLocale()); names[0].setValue(roleName); role.setName(new MultilingualTokenProp()); role.getName().setValue(names); // 往内容库content store中添加新角色. csHandler.addObjectToCS(connection, role, path); return ( \ + roleName + \ }
/**
* 将用户添加到指定用户组下. *
* @param connection Cognos 8 连接实例
* @param pathOfUser 要添加用户的搜索路径 * @param pathOfGroup 用户组的搜索路径 *
* @return 返回添加成功的信息. *
*/
public String addUserToGroup( CRNConnect connection, String pathOfUser, String pathOfGroup) throws java.rmi.RemoteException { // 根据搜索路径在内容库中查找对应的用户 BaseClass user[] = csHandler.queryObjectInCS(connection, pathOfUser); try { //添加进用户组 addToGroup(connection, pathOfGroup, user); } catch (java.rmi.RemoteException remoteEx) { remoteEx.printStackTrace(); return \ } return \ + \}
/**
*将用户添加到指定的角色下. *
* @param connection Cognos 8 连接实例
* @param pathOfUser 被添加的用户对象的搜索路径. * @param pathOfRole 角色对象的搜索路径. *
* @return 返回添加成功的信息. * */
public String addUserToRole( CRNConnect connection, String pathOfUser, String pathOfRole) throws java.rmi.RemoteException { // 根据用户对象的搜索路径得到用户对象 BaseClass user[] = csHandler.queryObjectInCS(connection, pathOfUser);