第十章 其他注意事项
1. BIP报表常见运行异常
BIP报表需要调用“输出处理提交程序”来完成数据源和模板的结合。
一般BIP报表运行完成后,状态为warning,其原因大概有以下3类:
1."输出提交处理程序"(Output Post Processor)未运行(状态为非active),或者请求未生成结果;
2."输出提交处理程序"(Output Post Processor)正在运行(状态为active),请求未生成结果;
3.并发管理器延时等待"输出提交处理程序"(Output Post Processor)完成该请求;
提示内容:
1. +————- 1) PUBLISH ————-+
Unable to find an Output Post Processor service to post-process request [request_id].
Check that the Output Post Processor service is running.
+————————————–+
…;
2. +————- 1) PUBLISH ————-+
The Output Post-processor is running but has not picked up
this request.No further attempts will be made to post-process
this request, and the request will be marked with Warning status.
Setting the profile option Concurrent: OPP Response Timeout
to a higher value may be necessary.
+————————————–+
3.+————- 1) PUBLISH ————-+
The concurrent manager has timed out waiting for the Output Post-processor
to finish this request.
Check that there are enough Output Post-processor service processes running.
More information may be found in the service process logfile.
+————————————–+
…;
解决思路:
首先,在并发管理器中确认"输出提交处理程序"(Output Post Processor)的状态为有效(enable/active);
其次,如果确认"输出提交处理程序"状态为有效,选择"并发"-->"管理器"-->"管理"-->选择"输出提交处理程序"(Output Post Processor)-->点击"处理"按钮察看请求状态是否为有效(ACTIVE),对于"输出提交处理程序"从"并发管理器"处理过程中获取请求而言,一般至少需要花费120秒(默认)所以*将配置"文件并发:OPP回应超时"(Concurrent:OPP Response Timeout)的值增大;
再次,并发管理器运行成功后调用OPP,但OPP花费太多时间处理该job,一般而言,该延时时间一般取决于XML数据文件的大小、模版的负载程度、服务器的执行时间等因素,对于BIP引擎生成输出文件,其默认的处理延时时间至少为300秒,所以如果遇到上面第3种的报错,*请增加配置文件"并发:OPP处理超时"("Concurrent:OPP Process Timeout")的值;
最后,如果设置都没有问题,则需要取得OOP的log文件来分析。
2. 程序中提交BIP输出的请求
若要利用程序提交XML Publisher输出的请求,之前要先用Fnd_Request.Add_Layout添加并发程序对应的模版(实际将写入表fnd_conc_pp_actions,action_type为6的记录就是),再调用Fnd_Request.Submit。
示例:
DECLARE
l_request_id NUMBER;
l_result BOOLEAN;
BEGIN
fnd_global.apps_initialize(user_id => 12493, resp_id => 50599, resp_appl_id => 660);
MO_GLOBAL.init('ONT');
l_result := fnd_request.add_layout(template_appl_name => 'ONT', --Short Name
template_code => 'CUX_WX_OMRPT01', --Short Name
template_language => 'zh',--fnd_natural_languages_vl.language_code
template_territory => '00', --
output_format => 'PDF'
--lookup_type = 'XDO_TEMPLATE_TYPE');
l_request_id := fnd_request.submit_request(application => 'ONT',
program => 'CUX_WX_OMRPT01',
description => '',
start_time => '',
sub_request => false,
argument1 => chr(29480),
argument2 => chr(29485));
dbms_output.put_line(l_request_id);
END;
Ø 设计时:
1) 安装字体比如条码字体到Windows,这样Word和BIP Desktop都可以使用。
操作:直接拷贝到X:\WINDOWS\Fonts下。
2) 配置BI Publisher,加入上一步的字体名称和字体路径。
操作:创建配置文件:X:\Program Files (x86)\Oracle\BI Publisher\BI Publisher Desktop\Template Builder for Word\config\xdo.cfg(复制xdo example.cfg)
样例:
<font family="3 of 9 Barcode" style="normal" weight="normal">
<truetype path="C:\WINDOWS\fonts\3of9.ttf" />
</font>
Ø 运行时:
1) 中文字体
默认情况下,XMLP不支持中文,原因仅仅是缺少字体。因为XMLP采用Java编写,理论上Java支持任何语种。EBS自带了中文字体,但没有安装到XMLP目录。为此需要做下简单拷贝即可:
cp %FND_TOP%/resource/ALBAN*.ttf $AF_JRE_TOP/jre/lib/fonts
2) 条码字体
首先将字体copy到$AF_JRE_TOP/jre/lib/fonts目录下;
然后修改BIP的配置文件$AF_JRE_TOP/jre/lib/xdo.cfg,添加新字体。(同客户端)
另外,有些条码在应用字体前,需要进行预处理,比如Code128a,这个时候需要在模版中设置额外的命令:
a) 登记条码预处理类,如将BarcodeUtil注册为XMLPBarVendor
<?register-barcode-vendor:’
oracle.apps.xdo.template.rtf.util.barcoder.BarcodeUtil’;’XMLPBarVendor’?>
b) 预处理数据,如用XMLPBarVendor将Element_Name格式化为Code128a
<?format-barcode:Element_Name;’Code128a’;’XMLPBarVendor’?>
4. 浏览器配置
EBS中,点击请求的Output,弹出的那个窗口,就是标准的APPSVIEWER,不过其功能实在烂透了,只能看看标准的文本,其他Rich文本就得借助“工具”/“复制”,送到客户端来查看了,那么这里面到底是怎么一个过程呢?
1) 依据fnd_cp_opp_req.published_request(req_id)判断请求是否发布,如果是,那么文件名和类型在表fnd_conc_req_outputs中,否则在fnd_concurrent_requests。
2) 根据文件类型和Profile设置,判断使用APPSVIEWER还是浏览器来浏览。
3) 如果是浏览器,那么根据文件类型和系统管员中的View定义,获得MIME类型,发送给浏览器,这样客户端如IE就知道该用什么图标、什么程序来打开了;如果有多个MIME类型,那么首先弹出窗口让用户选择一个。
注:如果是文本文件如Text、CSV、HTML等,其会自做聪明的认为,该文件的字符集同环境变量中的字符集。
4) 如果是APPSVIEWER,那么就先查看,不管是不是乱码;点击“工具”/“复制”后参照3的流程。
注:XMLP有Java写成的“浏览器”,可以集成到OAF页面中!
Ø 浏览器Profile:
Profile | 说明 |
|
|
Viewer: Text | 字符模式Viewer,也是默认的Viewer;不设置的话就是APPSVIEWER,设置的话只能是“Browser” |
Viewer: Application for HTML | HTML的Viewer。如果是Web应用,则系统直接写死使用“Browser”,这个Profile不起作用,我们通常使用的模式都是Web应用 |
Viewer: Application for PDF | PDF的Viewer。意义同上 |
Viewer: Application for PostScript | PS的Viewer。意义同上 |
Viewer: Application for PCL | PCL的Viewer,但这个Profile没用! |
Viewer: Application for Text | Text的Viewer,但这个Profile没用! |
Viewer: Application for XML | XML的Viewer,但这个Profile没用! |
Viewer: Default Font Size | APPSVIEWER查看时的字体大小,没啥用 |
注意,这些Profile设置后,需要重新启动Form Server,因为它们被请求Form保存到Global变量中。
Ø 浏览器配置:
使用“系统管理员”职责登陆,安装 ->浏览器选项:
这里主要维护文件类型和MIME类型的对应关系。Apache的Conf目录有个mime.types文件,其中有比较完整的MIME类型。
同一个文件类型,我们可以设置多个Mime类型,这样在打开的时候,系统会提示到底使用哪一个。如我们为HTML也添加了一个application/msword类型后,点击Output会弹出窗口,让我们选择一个。