OAF与XML Publisher集成(转)
原文地址:OAF与XML Publisher集成
有两种方式,一种是用VO与XML Publisher集成,另一种是用PL/SQL与XML Publisher集成
用VO与XML Publisher集成
用VO生成数据.AM里调用
在application module新增方法:
import oracle.jbo.XMLInterface;
import oracle.xml.parser.v2.XMLNode;
public XMLNode getReportXMLNode(String keyId)
{
ChgDisPrintTmpVOImpl vo = getChgDisPrintTmpVO1();
vo.executeQuery();
XMLNode xmlNode = ((XMLNode) vo.writeXML(4, XMLInterface.XML_OPT_ALL_ROWS));
return xmlNode;
}
用CO调用方法
增加一个funciton
public void PrintPDF(OAPageContext pageContext, OAWebBean webBean, XMLNode xmlNode, String keyId)
{
HttpServletResponse response = (HttpServletResponse) pageContext.getRenderingContext().getServletResponse();
String changeOrderType = pageContext.getParameter("ChangeOrderType");
// Set the Output Report File Name and Content Type
String contentDisposition = "attachment;filename=Distribution" + keyId + ".pdf";
response.setHeader("Content-Disposition", contentDisposition);
response.setContentType("application/pdf");
try
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
xmlNode.print(outputStream);
//xmlNode.print(System.out);
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
OADBTransactionImpl oaTrans =
(OADBTransactionImpl) pageContext.getApplicationModule(webBean).getOADBTransaction();
String templateName = "CUX_CHANGEMEMO_TEMPLATE_ENG"; TemplateHelper.processTemplate(oaTrans.getAppsContext(), "CUX", templateName, "zh", "CN", inputStream,
TemplateHelper.OUTPUT_TYPE_PDF, null, response.getOutputStream()); response.getOutputStream().flush();
response.getOutputStream().close();
}
catch (Exception e)
{
response.setContentType("text/html");
throw new OAException(e.getMessage(), OAException.ERROR);
} pageContext.setDocumentRendered(false);
}
修改CO processFormRequest事件
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
String event = pageContext.getParameter(EVENT_PARAM); if("print".equals(event))
{
String KeyId = pageContext.getParameter("KeyId");
parameters = new Serializable[] { KeyId };
XMLNode xmlNode = (XMLNode) am.invokeMethod("getReportXMLNode ", parameters);
PrintDisPDF(pageContext, webBean, xmlNode, KeyId);
}
}
用PL/SQL与XML Publisher集成
用PL/SQL方法实例
PROCEDURE print_payment_request(p_payment_request_id IN NUMBER,
x_out_xml OUT CLOB) IS
BEGIN
dbms_lob.createtemporary(x_out_xml,
TRUE);
l_temp_str := '<?xml version="1.0" encoding="UTF-8"?>' || chr(10) || '<HEADERDATA>' || chr(10);
dbms_lob.writeappend(lob_loc => x_out_xml,
amount => length(l_temp_str),
buffer => l_temp_str);
l_temp_str := l_temp_str || '<MATERIALS>' || r_h.materials || '</MATERIALS>' || chr(10);
l_temp_str := '</HEADERDATA>';
dbms_lob.writeappend(lob_loc => x_out_xml,
amount => length(l_temp_str),
buffer => l_temp_str);
END; 红无备注:此处建议释放临时templob,否则可能带来某些异常,如Temporary LOB导致临时表空间暴满
写法如下
vn_xml_clob clob;vs_xml_str clob; --临时变量vs_xml_str:='<PRODUCTLIST></PRODUCTLIST>' //这样的赋值应该是vs_xml_str直接当作varchar2类型来用了,oracle自己转换的,因为如果后面那个串太长了,这样符赋是会报错的。dbms_lob.createtemporary(vn_xml_clob, TRUE); --初始化clob对象表空间dbms_lob.append(vn_xml_clob, vs_xml_str); ---把字符串拼接给clob对象os_xml:=vn_xml_clob;dbms_lob.freetemporary(vn_xml_clob); --用完了释放空间AM调用方法
public CLOB getPaymentRequestXMLClob(String paymentRequestId)
{
Number reqId = null;
CLOB tempClob = null;
OADBTransaction oaDbTrans = getOADBTransaction();
OracleCallableStatement stmt = null;
try
{
reqId = new Number(paymentRequestId);
String strSQL =
"BEGIN cux_contract_reports_pkg.print_payment_request(p_payment_request_id=> :1,x_out_xml=>:2); END;";
stmt = (OracleCallableStatement) oaDbTrans.createCallableStatement(strSQL, 1);
stmt.setNUMBER(1, reqId);
stmt.registerOutParameter(2, Types.CLOB);
stmt.execute();
tempClob = stmt.getCLOB(2);
stmt.close();
}
catch (Exception exception1)
{
throw OAException.wrapperException(exception1);
} return tempClob;
}
CO调用方法
public void PrintPDF(OAPageContext pageContext, OAWebBean webBean, CLOB xmlClob)
{
HttpServletResponse response = (HttpServletResponse) pageContext.getRenderingContext().getServletResponse();
// Set the Output Report File Name and Content Type
String contentDisposition = "attachment;filename=PaymentRequest.pdf";
response.setHeader("Content-Disposition", contentDisposition);
response.setContentType("application/pdf");
try
{
Reader inputReader = xmlClob.getCharacterStream();
OADBTransactionImpl oaTrans =
(OADBTransactionImpl) pageContext.getApplicationModule(webBean).getOADBTransaction();
String templateName = "CUX_CONTRACT_PAYMENT_REQUEST";
TemplateHelper.processTemplate(oaTrans.getAppsContext(), "CUX", templateName, "zh", "CN", inputReader,
TemplateHelper.OUTPUT_TYPE_PDF, null, response.getOutputStream()); response.getOutputStream().flush();
response.getOutputStream().close();
}
catch (Exception e)
{
response.setContentType("text/html");
throw new OAException(e.getMessage(), OAException.ERROR);
} pageContext.setDocumentRendered(false);
}
修改CO事件 processFormRequest
String event = pageContext.getParameter(EVENT_PARAM);
if("print".equals(event)) {
String paymentRequestId = pageContext.getParameter("paymentRequestId");
Serializable[] param = {paymentRequestId};
CLOB tempClob = (CLOB) am.invokeMethod("getPaymentRequestXMLClob",param);
PrintPDF(pageContext, webBean ,tempClob);
}
vn_xml_clob clob;vs_xml_str clob; --临时变量vs_xml_str:='<PRODUCTLIST></PRODUCTLIST>' //这样的赋值应该是vs_xml_str直接当作varchar2类型来用了,oracle自己转换的,因为如果后面那个串太长了,这样符赋是会报错的。dbms_lob.createtemporary(vn_xml_clob, TRUE); --初始化clob对象表空间dbms_lob.append(vn_xml_clob, vs_xml_str); ---把字符串拼接给clob对象os_xml:=vn_xml_clob;dbms_lob.freetemporary(vn_xml_clob); --用完了释放空间OAF与XML Publisher集成(转)的更多相关文章
- OAF_开发系列16_实现OAF与XML Publisher整合
http://wenku.baidu.com/link?url=y2SFKHP5qqn4bl_iNeqLGjXsTvhyFuhkMraIbWZdTXbzcv0vTefrZFFBDWie0cAAKuTw ...
- 使用XML Publisher导出PDF报表
生成XML数据源有两种方式. 一种是使用存储过程,返回一个clob作为xml数据源. 另一种是直接使用VO中的数据生成xml数据源. 方法一参考: Oracle XML Publisher技巧集锦 O ...
- OAF 中下载使用XML Publisher下载PDF附件
OAF doesn't readily expose the Controller Servlet's HttpRequest and HttpResponse objects so you need ...
- How to Delete XML Publisher Data Definition Template
DECLARE -- Change the following two parameters VAR_TEMPLATECODE VARCHAR2(100) := 'CUX_CHANGE_RPT1 ...
- BIP_开发案例07_将原有Report Builer报表全部转为XML Publisher形式(案例)
2014-05-31 Created By BaoXinjian
- How to Determine the Version of Oracle XML Publisher for Oracle E-Business Suite 11i and Release 12 (Doc ID 362496.1)
Modified: 29-Mar-2014 Type: HOWTO In this DocumentGoal Solution 1. Based upon an output file gen ...
- xml publisher根据条件显示或隐藏列
xml publisher根据条件显示或隐藏列 <?if@column:condition? > -- <?end if?> 样例: 依据PROJECT_FLAG标签显示 ...
- XML Publisher Report Issues, Recommendations and Errors
In this Document Purpose Questions and Answers References APPLIES TO: Oracle Process Manufactu ...
- XML Publisher Using API’s(转)
原文地址:XML Publisher Using API’s Applications Layer APIsThe applications layer of XML Publisher allows ...
随机推荐
- Android开发--Apache服务器安装,解决Apache服务无法启动的问题
昨天学习Android XML解析的时候,想在自己的电脑上搭建一个最简单的Web服务器来存放一段XML文本,然后在Android程序中解析,查找了一些资料后,看到Apache服务器比较容易上手,使用范 ...
- vector,arraylist, linkedlist的区别是什么
LinkedList类 LinkedList实现了List接口,允许null元素. 此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部. Lin ...
- IOS 网络浅析-(十三 SDWebImage 实用技巧)
IOS 网络浅析-(十三 SDWebImage 实用技巧) 首先让我描述一下为了什么而产生的实用技巧.(在TableView.CollectionView中)当用户所处环境WiFi网速不够快(不能立即 ...
- IOS SDWebImage实现原理详解
在之前我写过SDWebImage的使用方法,主要是用与获取网络图片,没有看过的朋友可以看看. 这篇文章将主要介绍SDWebImage的实现原理,主要针对于获取网络图片的原理,如果没有第三方我们该怎么去 ...
- iOS实现三屏复用循环广告[从服务器请求的广告]
循环广告我们在开发中已经是熟得不能再熟了,今天整理这篇scrollview三屏复用广告 原理使用scrollview里的三个imageview分别去加载不同的图片,用少量的资源来显示大量或不确定的广告 ...
- iOS之UI--转场动画
1.什么是转场动画? 就是从一个场景转换到另一个场景,像导航控制器的push效果,就是一个转场. 2.如何创建转场动画 创建转场动画 CATransition *anim = ...
- 同域iframe的高度自适应
引子 父页面里控制子页面 子页面里控制父页面 一.引子 我们先看一个示例,有两个页面,1.html通过iframe嵌入2.html,两个页面都是同域的 1.html <!DOCTYPE html ...
- [PL/SQL工具]绿色版PLSQL工具登录时提示初始化失败,无法锁定OCI.dll错误
问题现象:使用绿色版PL/SQL工具进行登录时报如下截图错误: 问题描述:初始化失败,无法锁定oci.dll 解决方法:在PLSQL的菜单栏里依次选择 工具->首选项,在OCI库(自动检测为空) ...
- linux 后台运行进程 fg bg ctrl+z nohup
fg.bg.jobs.&.nohup.ctrl+z.ctrl+c 命令 一.& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh &am ...
- cookie的读入和读出
写入cookie中 在mvc的控制器中 HttpCookie GetUserID = new HttpCookie("uID", 要保存的值); GetUserID.Expires ...