FM 关于macro的操作

我想请教下 FM 宏的操作 及 session parameter、parameter map 的一些应用
主要是session变量,据说可以取到用户登录的ID,参数映射也应该有不小的用途
有弄过的朋友希望给些帮助。。。。。。。谢谢
参与7

7同行回答

zxgaozxgao软件开发工程师cnooc
回复 3# wujack     大好人,学习了显示全部
回复 3# wujack


    大好人,学习了收起
互联网服务 · 2011-09-05
浏览740
brightzhangbrightzhang信息分析/架构师中国电信莆田分公司
回复 2# xlhkeer     谢谢分享。。。显示全部
回复 2# xlhkeer


    谢谢分享。。。收起
电信运营商 · 2011-09-03
浏览703
我想请教下 FM 宏的操作 及 session parameter、parameter map 的一些应用主要是session变量,据说可以取到用户登录的ID,参数映射也应该有不小的用途有弄过的朋友希望给些帮助。。。。。。。谢谢 ...yumenhui 发表于 2010-1-19 10:53 首先如果你是对cognos做二次开发,希望...显示全部
我想请教下 FM 宏的操作 及 session parameter、parameter map 的一些应用
主要是session变量,据说可以取到用户登录的ID,参数映射也应该有不小的用途
有弄过的朋友希望给些帮助。。。。。。。谢谢 ...
yumenhui 发表于 2010-1-19 10:53


首先如果你是对cognos做二次开发,希望将自己的业务系统与cognos整合在一起。 FM和宏及 session parameter 可以一定程序的帮你解决数据权限的问题。(目前这种做法仅限于基于package的report, cube一般不这么做)。

试想一下,当你自己系统的一个用户登录后,自然希望将其所拥有的数据权限一并也传入到cognos中,这样只需要维护一套数据权限,即可解决问题。比如说,你现在有一张用户表:


用户ID  密码    所在机构
leo       leo       1001
...

当用户登录系统时,会将上述信息通过cognos的第三方权限集成全部存在 session parameter中。然后,你可以在FM中对你想操作的Query Subject设计时,加入filter。比如现在,你想通过“所在机构”来过滤数据,那么就可以:

user_org = # accout.session.parameter.userorg # (注:要想在session paramter中使用自定义的参数值,需要进行一些简单的设置,cognos甚至支持一个用户属于多机构的宏操作)

这样,刚用户登录成功后,cognos的宏会自动的将上述"filter"替换成实际的值,并追加到 "where " 语句之后。这样比直接通过cognos的权限来控制数据要好的多,至少,不用再频繁的通过发布包来解决权限问题了。

目前我主要是使用Sun one ldap来控制权限的,将来想自己实现一套比较实用的 java customer provider,专门用于cognos集成,那样 session patameter 可能会用的更多。收起
2010-01-30
浏览717
还没有遇到这样要使用FM中宏的需求显示全部
还没有遇到这样要使用FM中宏的需求收起
2010-01-29
浏览755
3# wujack 谢谢 很详细 基本可以着手研究啦显示全部
3# wujack


谢谢 很详细 基本可以着手研究啦收起
2010-01-19
浏览695
wujackwujack软件开发工程师IBM
曾經用session parameter作為data row security就是不同ID看不同資料在同一張報表簡單說明觀念:fact table schema:org_l3_id, date_id, product_id, amountorg table schema:org_l3_id, org_l3_name, org_l2_id, org_l2_name, org_l1_id, org_l1_namesecurity mapping t...显示全部
曾經用session parameter作為data row security
就是不同ID看不同資料在同一張報表
簡單說明觀念:
fact table schema:
org_l3_id, date_id, product_id, amount

org table schema:
org_l3_id, org_l3_name, org_l2_id, org_l2_name, org_l1_id, org_l1_name

security mapping table schema:
org_l3_id, login_id
此table是另外寫程式從AD取出的

將org table和security mapping table合併成新的org new table:
org_l3_id, org_l3_name, org_l2_id, org_l2_name, org_l1_id, org_l1_name, login_id
並在此query subject下filter:
[org new].[Login_ID]  =#sq($account.personalInfo.userName)#

只要你的報表資料有從org new table出來, 這filter就會作用
當然你也可以直接在RS中下此語法
那個sq()就macro function, 意思是:single quotation
##表示你在用macro function收起
系统集成 · 2010-01-19
浏览751
xlhkeerxlhkeer软件开发工程师上海新致软件有限公司
取到用户登录的IDaccount.defaultName ---   得到用户名全称,如 张三account.personalInfo.givenName  得到用户名 如 三account.personalInfo.surname      得到用户姓   如 张account.personalInfo.userName  &...显示全部
取到用户登录的ID
account.defaultName ---   得到用户名全称,如 张三
account.personalInfo.givenName  得到用户名 如 三
account.personalInfo.surname      得到用户姓   如 张
account.personalInfo.userName   得到用户id收起
互联网服务 · 2010-01-19
浏览709

提问者

相关问题

相关资料

问题状态

  • 发布时间:2010-01-19
  • 关注会员:0 人
  • 问题浏览:6941
  • 最近回答:2011-09-05
  • X社区推广