概述
用户配置文件是一个可以影响系统运行的参数集合,可以在不同层级(Site层、应用模块层、责任层、用户层)设置不同的值; 作用范围小的覆盖范围大的层,系统已经预设了很多user profile; 开发人员也可以定义User profile。通过改变User profile的值或选择在那个层设置User profile可以决定每个用户可以看到哪些数据。
User Profile Levels(用户配置文件级别)
层级的范围由小到大依次是:
用户层 < 职责层 < 应用层 < 地点层
Site Level(地点层)
地点层是作用范围最大,层级最低的层。它可以影响到正在运行的每一个应用程序。
Application Level(应用层)
应用层的设置只会影响到一个特定的应用程序的运行方式,比如这个应用程序只让某一个部门的人使用,可以在应用层给给程序设定该部门的值。
Responsibility Level(职责层)
职责层设定的值会影响到所有有该职责的用户。
User Level(用户层)
用户层是针对每个用户设定权限的层,作用范围最小、层级最高的层,所有的设置都只会影响这个用户,不会影响到其他用户。只要用户层设置了该用户配置文件的值,则会覆盖掉前面所有的层。比如其它层都设置了权限1,但是给A用户在用户层设置的权限是2,那么A用户就只有权限2,而没有权限1.
定义user profile 并使用
第一步:定义user profile (Nav:应用开发员责任->配置文件)
上例中定义了一个User profile : ORG_ID, SQL验证用于提供用户在设置该Profile值的时候提供LOV数据来源;
其中SQL验证的语法如下(参考120devg.pdf的259页):
SQL="SQL select statement" COLUMN="column1(length), column2(length),..." [TITLE="{title text|*application shortname:message name}"] [HEADING="{heading1(length), heading2(length),... |*application shortname:message name|N}"]
例如:
SQL=" SELECT SALES_REPRESENTATIVE_ID, SALES_REPRESENTATIVE_NAME INTOROFILE_OPTION_VALUE, :VISIBLE_OPTION_VALUE FROM OE_SALES_REPRESENTATIVES ORDER BY SALES_REPRESENTATIVE_NAME" COLUMN = "SALES_REPRESENTATIVE_ID(20),\"REP NAME\"(*)" TITLE ="职责" HEADING="SALE_REP_ID(20),SALE_REP_NAME(30)"
每部分所在LOV的位置如下
验证语法中注意事项:
a>如果列的别名是两个单词或更多,则需要用一个反斜杠和双引号括起来。
SQL=" SELECT SALES_REPRESENTATIVE_ID, SALES_REPRESENTATIVE_NAME "REP NAME\" INTOROFILE_OPTION_VALUE, :VISIBLE_OPTION_VALUE FROM OE_SALES_REPRESENTATIVES ORDER BY SALES_REPRESENTATIVE_NAME" COLUMN = "SALES_REPRESENTATIVE_ID(20),\"REP NAME\"(*)" TITLE ="职责" HEADING="SALE_REP_ID(20),SALE_REP_NAME(30)"
b>在HEADING中指定列的宽度会把在COLUMN中指定列的值给覆盖掉。所以在同时用COLUMN和HEADING时,一般建议把COLUMN中列的长度指定为动态宽度,即(*)
c>如果不明确指定TITLE和HEADING,则系统默认TITLE='user_profile_option_name' 和HEADING='N'.
d>
第二步:设置User Profile的值(Nav:系统管理员责任-> 配置文件-> 系统)
如果需要同时设置责任层和用户层的值,则把两者都勾选上。
上例中,责任 order Management user,… 和 用户Operations 层都设置了值; 且值是不一样的。 由于用户层的值可以覆盖责任层的值,所以当operations 用户登陆系统后以 order Management user,..责任进入Form界面,Form中取到的值是: Vision ADB;
三、 程序中获取User profile 值:
在程序中可以使用fnd_profile.value(‘ORG_ID’) 来获取 ORG_ID这个user profile的值;
有关用户配置文件的详细概念、内部生成的配置文件选项以及FND_PROFILE: User Profile APIs,请参考120devg.pdf 第249——262页。