一、目的
这次我使用配置回写,主要是为了能够更新BIEE的外部用户表。配置方式与11g时一样,只是12C的版本,各个文件位置不一样了。
二、回写配置官方文档
ORACLE官方文档 章节 17.8
三、配置RPD文件
1、将需要回写的表导入RPD文件中,在物理层, 去掉勾选 可高速缓存
2、在逻辑层,将需要回写的字段,设置可写 (我这里是做外部用户表,所以我将所有字段都设置成可写)
3、在表示层,设置表的权限, 选择 读/写
4、自此,RPD文件已经设置完成,更新至BI服务。
上传更新命令,请查看 seng总 blog OBIEE12c rpd文件更新及rpd所在目录介绍
四、配置回写模板文件
回写模板有以下两种,主要区别是sql语句中 变量的获取方式不一样。
1、使用column ID 的配置文件
<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
<WebMessage name="SetQuotaUseID"> <!-- 此处的name 是模板名, 在answer中配置时需要用到 -->
<XML>
<writeBack connectionPool="Supplier"> <!-- 此处的connectionPool 是使用的RPD中的连接池名称 PS.必须是把表导入RPD中使用的那个连接池 -->
<insert>INSERT INTO regiontypequota VALUES(@{c0},@{c1},'@{c2}','@{c3}',@{c4})</insert> <!-- 此处的c1 c2 是 column ID-->
<update>UPDATE regiontypequota SET Dollars=@{c4} WHERE YR=@{c0} AND Quarter=@{c1} AND Region='@{c2}' AND ItemType='@{c3}'</update>
</writeBack>
</XML>
</WebMessage>
</WebMessageTable>
</WebMessageTables>
column ID 是 answer编辑页面-高级 中的,获取方式如下:
2、使用位置序号 的 配置文件 (以下是我使用的)
<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
<WebMessage name="SetQuota">
<XML>
<writeBack connectionPool="连接池">
<insert> INSERT INTO bi_user_auth VALUES('@1','@2',FN_GETMD5('@3'),'@4','@5') </insert>
<update> UPDATE bi_user_auth SET username='@2',userpwd='@3',userrole='@4',property='@5' WHERE userid='@1' </update>
</writeBack>
</XML>
</WebMessage>
</WebMessageTable>
</WebMessageTables>
PS.@1 表示 第一个字段,@2 表示第二个字段,以此类推, 此顺序是answer中字段顺序。我这边加单引号'' 是由于字段是字符类型, 如果是数字类型的,可以省略单引号。
3、上传模板配置文件
1) 根据文档中所说,模板配置文件是放在 SDD/components/OBIPS/customMessages 文件夹下的;
2) SSD 在DOMAIN_HOME/bidata下。
但是在我实际使用中,上传至这个路径下的配置文件, BI服务没有正确读取到。在google上查找,是在另一个路径下,
原文链接 这里面把几个重要的BIEE 文件夹与文件的位置给标出来了,大家可以收藏一下。
# Write-Back template files
file=<obiee_home>/user_projects/domains/{your_domain}/bidata/service_instances/{your_instance}/metadata/content/msgd/l_en/customMessages/my_writeback_template.xml
#writeback.xml
文档中的路径:
/DATA/Middleware/user_projects/domains/bi/bidata/components/OBIPS
实际有效的路径:
/DATA/Middleware/user_projects/domains/bi/bidata/service_instances/ssi/metadata/content/msgdb/l_en/
PS. customMessages 文件夹 是需要自己创建的, 模板文件是xml格式,名字自定义,可以随便取。
五、配置 LightWriteback
在 instanceconfig.xml 文件中 配置 LightWriteback 为true
文件路径:
/DATA/Middleware/user_projects/domains/bi/config/fmwconfig/biconfig/OBIPS
在 instanceconfig.xml 文件中添加
<LightWriteback>true</LightWriteback>
如下:
配置保存完后,重启BIEE服务。
六、配置前端页面
1、打开回写权限
在BIEE页面中,管理-管理权限-最下面,配置回写的权限。
2、在分析编辑器-标准页面,设置字段列属性,启用回写。
PS.此处的文本字段宽度,是控制在会后回写页面时,输入框的长度,如果要输入的字符长度比较大,可在此处设置大一点。
3、在分析编辑器-结果页面,设置表属性中,开启回写,并写入模板名。
PS. 此处的模板名,就是刚刚在模板配置文件中 name 配置的名称。
3、保存分析,然后打开分析,最下面点击更新后,就可以更新与插入了。
PS.update 可以直接在原来的基础上进行更新,如果要insert,需要表中有一个空行,才可以插入。