书画百科-书画艺术网旗下最专业最具权威的书画艺术百科  > 所属分类  >  摄影术语   
[0] 评论[0] 编辑

EOS

报表集成开发应用

【概述】

EOS中开发一个报表应用的流程为: #$$$$$$$$$$$$$$$$$$$$$$$$%

1.    新建项目。

#3$$#%%%%%%%6$

创建一个引用EOS报表构件包的项目。引用该构件包后,即可在此项目上创建报表模板,以及调用报表运算逻辑。用户也可以现有项目上添加引用报表构件包。 #$$$$$$$$$$$$$$$$$$$$$$$$%

2.    创建报表模板。 #3$$#%%%%%%%6$

o    确定数据库的连接方式。 #$$$$$$$$$$$$$$$$$$$$$$$$%

o    在报表模板中定制数据的汇总、统计。

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    确定最终显示样式。

#3$$#%%%%%%%6$

3.    开发JSP,展现逻辑,业务逻辑。

#3$$#%%%%%%%6$

实现数据的提取、显示、打印、导出等功能。 #3$$#%%%%%%%6$

4.    调试发布。 www.18art.com

  #$$$$$$$$$$$$$$$$$$$$$$$$%

【开发报表的分类】

1.    根据调用位置的不同,调用EOS报表的方式有两种: www.18art.com

o    JSP页面上调用tag #3$$#%%%%%%%6$

o    在业务逻辑中调用EOS报表的运算逻辑。

#3$$#%%%%%%%6$

2.    根据数据库的连接方式分为:

#3$$#%%%%%%%6$

o    JDBC/XML数据源。 #$$$$$$$$$$$$$$$$$$$$$$$$%

o    EOS数据源。 #3$$#%%%%%%%6$

  #$$$$$$$$$$$$$$$$$$$$$$$$%

【示例】

一般情况下,报表都是一组有条件的查询结果,下面将用四个示例分别介绍针对同一需求的四种不同开发方式。 #3$$#%%%%%%%6$

用户需求如下:

www.18art.com

查询现有系统中的用户角色和用户信息,以报表的形式展示出某些角色所对应的用户名和用户ID。既可以查询某一角色对应的用户信息,也可以查询所有角色对应的用户信息,并可以将查询结果打印或导出到EXCEL中。 www.18art.com

案例分析: #3$$#%%%%%%%6$

1.    查询要求

www.18art.com

o    要求实现条件查询,条件为角色。 #3$$#%%%%%%%6$

o    分组显示,按角色分组。 www.18art.com

o    可以以html,applet,excel格式返回结果集。 #3$$#%%%%%%%6$

2.    实现要点

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    需要创建条件查询页面,做为用户查看报表的入口,在该页面需要实现:选择角色、选择结果的显示格式。

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    需要实现分组显示,该功能在报表模板中实现。

#3$$#%%%%%%%6$

o    需要设定显示格式,该功能在结果页面完成。 www.18art.com

o    数据的提取可以由结果页面直接调用报表模板实现,也可以由后台调用展现逻辑+业务逻辑的方式实现。

www.18art.com

3.    表结构和数据显示 #3$$#%%%%%%%6$

以下关联的三个表均为eos的系统表。 #$$$$$$$$$$$$$$$$$$$$$$$$%

  www.18art.com

查询SQL语句如下:

#3$$#%%%%%%%6$

select
    o.userid,o.operatorname,r.rolename
from
    EOSOPERATOR o,

#3$$#%%%%%%%6$


    EOSOPERATORROLE eor,
    EOSROLE r
where
    o.operatorid=eor.operatorid and
    eor.roleid=r.roleid and
    r.rolename like '%'
order by r.rolename #$$$$$$$$$$$$$$$$$$$$$$$$%

www.18art.com

[-查询SQL]

www.18art.com

  #$$$$$$$$$$$$$$$$$$$$$$$$%

4.    实现结果展示

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    查询条件页面

#3$$#%%%%%%%6$

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-查询条件页面]

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    查询结果页面

www.18art.com

www.18art.com

[-查询结果页面]

www.18art.com

  #3$$#%%%%%%%6$

EOS报表应用开发示例一

【实现方式】

JSP页面上调用Tag运行报表,数据源采用EOS数据源方式。 #$$$$$$$$$$$$$$$$$$$$$$$$%

 

#3$$#%%%%%%%6$

【实现概述】

1.    按照需求设计报表模板。

#3$$#%%%%%%%6$

o    路径和名称:demo.report.eosRoleUser.erd

www.18art.com

o    功能:设置数据源、数据显示方式和样式。 www.18art.com

2.    编写查询条件页面。

#3$$#%%%%%%%6$

o    路径和名称:/demo/page/tagEosInput.jsp

www.18art.com

o    功能:设置查询条件。 www.18art.com

3.    编写查询展现逻辑。 #$$$$$$$$$$$$$$$$$$$$$$$$%

o    路径和名称:demo.pr.tagEos www.18art.com

o    功能:调用查询数据的业务逻辑,并控制结果返回页面。

www.18art.com

4.    编写查询业务逻辑。

#3$$#%%%%%%%6$

o    路径和名称:demo.biz.tagEos

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    功能:根据查询页面传入的查询条件,取出查询结果,并返回到展现逻辑。

#$$$$$$$$$$$$$$$$$$$$$$$$%

5.    编写查询结果页面。 #$$$$$$$$$$$$$$$$$$$$$$$$%

o    路径和名称:/demo/page/tagEosOutput.jsp www.18art.com

o    功能:得到展现逻辑传入的结果数据,按查询条件页面设定的显示格式显示数据。 www.18art.com

 

【实现步骤】

1.    创建项目 www.18art.com

参见联机帮助中的创建EOS基础项目。项目创建完成后,新建“demo”构件包,参见创建EOS构件包 #$$$$$$$$$$$$$$$$$$$$$$$$%

设置引用构件包时,必须引用EOS报表引用构件包。

#$$$$$$$$$$$$$$$$$$$$$$$$%


项目名称应根据项目的定义确定,特别是在多人协作开发模式下,统一命名是协作成功的关键。 #$$$$$$$$$$$$$$$$$$$$$$$$%

 

www.18art.com

2.    设计报表模板

#3$$#%%%%%%%6$

demo.report.eosRoleUser

www.18art.com

3.    编写查询条件页面 www.18art.com

tagEosInput.jsp文件内容如下:

#3$$#%%%%%%%6$

1 <%@include file="/internet/hciHead.jsp"%>
2 <table border="0" cellspacing="1" cellpadding="1" class="query" align="center">

#3$$#%%%%%%%6$


3
4 <form name="queryForm" action="demo.pr.tagEos.do">
5 <input type="hidden" name ="RoleUser/ROLENAME/criteria/operator" value="like"/>
6
7 <table border="0" cellspacing="1" cellpadding="1" class="query" align="center">
8 <tr> #$$$$$$$$$$$$$$$$$$$$$$$$%
9 <TD>显示格式:</TD> www.18art.com
10 <TD><SELECT name="reportFormat">
11 <OPTION value="html">html</OPTION>
12 <OPTION value="eosrdf">Applet</OPTION>
13 <OPTION value="xls">Excel</OPTION>
14 </SELECT>
15
16 </TD>
#3$$#%%%%%%%6$

17 <TD>
查询角色: www.18art.com
18 <input name="RoleUser/ROLENAME/criteria/value" value="" size=30 />
19 </TD>
20 <TD align="center"><input type="submit" value="
查询"></TD> www.18art.com
21 </tr>

#3$$#%%%%%%%6$

22 </table>
24 </form>

www.18art.com

25 <%@include file="/internet/hciTail.jsp" %> #$$$$$$$$$$$$$$$$$$$$$$$$%

为了便于说明,每行代码都加了行号。实际编写代码时,请去除行号。 www.18art.com
5行的“RoleUser/ROLENAME/criteria/operator”为隐含域,查询条件ROLENAME字段的数据库操作方式,当前值为like。参见“EOS 构件库参考手册中的“EOS Data Service基本概念 #3$$#%%%%%%%6$
10行的“reportFormat”控制选择结果的展现形式,可选项包括htmlAppletExcel #3$$#%%%%%%%6$
18行的“RoleUser/ROLENAME/criteria/value”为文本框,查询条件ROLENAME字段的条件值。

#3$$#%%%%%%%6$

  #3$$#%%%%%%%6$

4.    编写查询展现逻辑

#3$$#%%%%%%%6$

创建展现逻辑demo.pr.tagEos,如下图所示。

#3$$#%%%%%%%6$

www.18art.com

[-编写展现逻辑] www.18art.com

调用的业务逻辑显示名称查询“BizLogic名称“demo.biz.tagEos”,如下图所示。 #$$$$$$$$$$$$$$$$$$$$$$$$%

www.18art.com

[-展现逻辑调用业务逻辑基本信息] www.18art.com

调用的业务逻辑参数定义中,节点路径“RoleUser”输入输出输入路径节点类型“EOS Entity”,如下图所示。

www.18art.com

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-展现逻辑调用业务逻辑参数定义] www.18art.com

调用的JSP页面显示名称返回结果集返回页面名称“/demo/page/tagEosOutput.jsp”,如下图所示。

#$$$$$$$$$$$$$$$$$$$$$$$$%

#3$$#%%%%%%%6$

[-展现逻辑调用JSP页面] #$$$$$$$$$$$$$$$$$$$$$$$$%

5.    编写查询业务逻辑

#3$$#%%%%%%%6$

创建业务逻辑demo.biz.tagEos,如下图所示。 www.18art.com

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-编写业务逻辑] #3$$#%%%%%%%6$

调用的运算逻辑显示名称查询角色列表“Bizlet方法名称“com.primeton.eos.bizlets.database.DataQueryExt.BL_queryEntityAllExt”,如下图所示。 www.18art.com

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-业务逻辑调用运算逻辑基本信息]

#3$$#%%%%%%%6$

调用的运算逻辑参数定义如下图所示。 #3$$#%%%%%%%6$

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-业务逻辑调用运算逻辑参数定义] #3$$#%%%%%%%6$

开始图元的接口定义如下图所示。

#3$$#%%%%%%%6$

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-业务逻辑开始图元接口定义] #$$$$$$$$$$$$$$$$$$$$$$$$%

6.    编写查询结果页面 #$$$$$$$$$$$$$$$$$$$$$$$$%

tagEosOutput.jsp文件内容如下:

www.18art.com

1 <%@include file="/internet/common.jsp"%>
2 <%@ taglib uri="/WEB-INF/report.tld" prefix="report" %> #$$$$$$$$$$$$$$$$$$$$$$$$%
3 <link rel="stylesheet" href="/pageComponent/resources/theme/style.css" type="text/css">
4
5 <%
6 String format = request.getParameter("reportFormat");
7 if ( format==null || format.trim().length() == 0 )
8 format = "html";
9 %> www.18art.com
10
11 <table align="center" width="100%" height="100%">
12 <tr>
13 <td align="center" >
14
15 <report:generateAndShow reportQualifiedName="demo.report.eosRoleUser" reportFormat="<%=format%>"/>
16
17 </td> #$$$$$$$$$$$$$$$$$$$$$$$$%
18 </tr>
19 </table>
20
21 <%@include file="/internet/commonTail.jsp" %>
#3$$#%%%%%%%6$

为了便于说明,每行代码都加了行号。实际编写代码时,请去除行号。

#$$$$$$$$$$$$$$$$$$$$$$$$%

2行在JSP文件中使用report标签库,必须在jsp文件起始部分加上声明。 #$$$$$$$$$$$$$$$$$$$$$$$$%
5行至第9行:从HTTP请求中获取用户选择的报表显示格式。 www.18art.com
15 调用报表标签report:generateAndShow 运行报表、并在客户端显示报表,reportQualifiedName指定要运行的报表是“demo.report.eosRoleUser”reportFormat指定报表的显示格式是从“format”变量中获取,客户端显示报表的方式与报表的显示格式相关。关于generateAndShow标签的详细说明参见Tag使用说明
www.18art.com

 

#3$$#%%%%%%%6$

【运行示例】

sysadmin身份登录http://localhost:8080/,然后在地址栏输入http://localhost:8080/forward.do?nextPage=/demo/page/tagEosInput.jsp,即可测试报表。

#$$$$$$$$$$$$$$$$$$$$$$$$%

  #$$$$$$$$$$$$$$$$$$$$$$$$%

【参数传递】

1.    查询条件页面提交时传出的xml如下: #3$$#%%%%%%%6$

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<root>
    <data> #$$$$$$$$$$$$$$$$$$$$$$$$%
        <requestPackage>demo</requestPackage>
        <requestAction>pr.tagEos</requestAction>
        <serverName>localhost</serverName> #3$$#%%%%%%%6$
        <serverPort>8080</serverPort>
        <requestURI>/demo.pr.tagEos.do</requestURI>
        <queryString>RoleUser%2FROLENAME%2Fcriteria%2Foperator=like&amp;reportFormat=html&amp;RoleUser%2FROLENAME%2Fcriteria%2Fvalue=%BD%C7%C9%AB</queryString>

www.18art.com

        <reportFormat>html</reportFormat>
        <RoleUser>
            <ROLENAME>
                <criteria>

#$$$$$$$$$$$$$$$$$$$$$$$$%


                    <value>角色</value>

#3$$#%%%%%%%6$


                    <operator>like</operator>
                </criteria>
www.18art.com

            </ROLENAME>
        </RoleUser>
        <SessionEntity>
            <remoteAddr>127.0.0.1</remoteAddr> #$$$$$$$$$$$$$$$$$$$$$$$$%
            <uploadRoot>upload</uploadRoot>
            <rolelist rowNum="1">
                <EOSOperatorRole rowNum="0">

www.18art.com


                    <operatorID>1</operatorID>
                    <roleID>eosadmin</roleID>
www.18art.com

                </EOSOperatorRole>
            </rolelist>
            <empCode/>
#$$$$$$$$$$$$$$$$$$$$$$$$%

            <orgName/>
            <operatorID>1</operatorID>
            <operatorName>
系统管理员</operatorName>
#$$$$$$$$$$$$$$$$$$$$$$$$%

            <orgID/>
            <orgSEQ/>
            <menuType/> #$$$$$$$$$$$$$$$$$$$$$$$$%
            <userID>sysadmin</userID>
        </SessionEntity>
    </data>
</root>
www.18art.com

以上XML文件中,reportFormat节点和RoleUser节点为页面提交时,输入的数据。

#3$$#%%%%%%%6$

reportFormat节点,控制显示样式。

#$$$$$$$$$$$$$$$$$$$$$$$$%


RoleUser/ROLENAME/criteria/value
节点为查询条件值。 www.18art.com
RoleUser/ROLENAME/criteria/operator
节点为查询条件的查询方式。 www.18art.com

  #$$$$$$$$$$$$$$$$$$$$$$$$%

2.    展现逻辑传给业务逻辑的xml如下:

#3$$#%%%%%%%6$

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<root>
    <data> #3$$#%%%%%%%6$
        <RoleUser>
            <ROLENAME>
                <criteria> www.18art.com
                    <value>
角色</value>

#3$$#%%%%%%%6$


                    <operator>like</operator>
                </criteria>
www.18art.com

            </ROLENAME>
        </RoleUser>
        <SessionEntity>
            <remoteAddr>127.0.0.1</remoteAddr>

#$$$$$$$$$$$$$$$$$$$$$$$$%


            <uploadRoot>upload</uploadRoot>
            <rolelist rowNum="1">
                <EOSOperatorRole rowNum="0"> #3$$#%%%%%%%6$
                    <operatorID>1</operatorID>
                    <roleID>eosadmin</roleID> www.18art.com
                </EOSOperatorRole>
            </rolelist>
            <empCode/>

www.18art.com


            <orgName/>
            <operatorID>1</operatorID>
            <operatorName>系统管理员</operatorName>
www.18art.com

            <orgID/>
            <orgSEQ/>
            <menuType/>

www.18art.com


            <userID>sysadmin</userID>
        </SessionEntity>
    </data>
</root>
#$$$$$$$$$$$$$$$$$$$$$$$$%

以上XML文件中,展现逻辑只将RoleUser节点下的数据传入了业务逻辑,作为从数据库取值的条件。 www.18art.com

  #$$$$$$$$$$$$$$$$$$$$$$$$%

3.    经过业务逻辑运算后输出的xml如下:

#3$$#%%%%%%%6$

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<root>
    <data> www.18art.com
        <requestPackage>demo</requestPackage>
        <requestAction>pr.tagEos</requestAction>
        <serverName>localhost</serverName>

www.18art.com

        <serverPort>8080</serverPort>
        <requestURI>/demo.pr.tagEos.do</requestURI>
        <queryString>RoleUser%2FROLENAME%2Fcriteria%2Foperator=like&amp;reportFormat=html&amp;RoleUser%2FROLENAME%2Fcriteria%2Fvalue=%BD%C7%C9%AB</queryString> #$$$$$$$$$$$$$$$$$$$$$$$$%
        <reportFormat>html</reportFormat>
        <RoleUser>
            <ROLENAME>
                <criteria> www.18art.com
                    <value>角色</value>

#3$$#%%%%%%%6$


                    <operator>like</operator>
                </criteria> #$$$$$$$$$$$$$$$$$$$$$$$$%
            </ROLENAME>
        </RoleUser>
        <SessionEntity>
            <remoteAddr>127.0.0.1</remoteAddr> #3$$#%%%%%%%6$
            <uploadRoot>upload</uploadRoot>
            <rolelist rowNum="1">
                <EOSOperatorRole rowNum="0">

#$$$$$$$$$$$$$$$$$$$$$$$$%


                    <operatorID>1</operatorID>
                    <roleID>eosadmin</roleID>
#$$$$$$$$$$$$$$$$$$$$$$$$%

                </EOSOperatorRole>
            </rolelist>
            <empCode/>
#3$$#%%%%%%%6$

            <orgName/>
            <operatorID>1</operatorID>
            <operatorName>
系统管理员</operatorName> #3$$#%%%%%%%6$
            <orgID/>
            <orgSEQ/>
            <menuType/> #3$$#%%%%%%%6$
            <userID>sysadmin</userID>
        </SessionEntity>
        <return>
            <code>1</code>

#$$$$$$$$$$$$$$$$$$$$$$$$%


        </return>
        <list type="RoleUser" rowNum="9">
            <RoleUser rowNum="0">
                <ROLENAME>
角色A</ROLENAME>

www.18art.com


                <USERID>tiger</USERID>
                <OPERATORNAME>tiger</OPERATORNAME> www.18art.com
            </RoleUser>
            <RoleUser rowNum="1">
                <ROLENAME>
角色B</ROLENAME>
www.18art.com

                <USERID>tiger</USERID>
                <OPERATORNAME>tiger</OPERATORNAME> www.18art.com
            </RoleUser>
            <RoleUser rowNum="2">
                <ROLENAME>
角色B</ROLENAME>
#3$$#%%%%%%%6$

                <USERID>goose</USERID>
                <OPERATORNAME>goose</OPERATORNAME> www.18art.com
            </RoleUser>
            <RoleUser rowNum="3">
                <ROLENAME>
角色B</ROLENAME> #$$$$$$$$$$$$$$$$$$$$$$$$%
                <USERID>fish</USERID>
                <OPERATORNAME>fish</OPERATORNAME>

#3$$#%%%%%%%6$


            </RoleUser>
            <RoleUser rowNum="4">
                <ROLENAME>
角色C</ROLENAME>
#$$$$$$$$$$$$$$$$$$$$$$$$%

                <USERID>tiger</USERID>
                <OPERATORNAME>tiger</OPERATORNAME> #3$$#%%%%%%%6$
            </RoleUser>
            <RoleUser rowNum="5">
                <ROLENAME>
角色C</ROLENAME>
#$$$$$$$$$$$$$$$$$$$$$$$$%

                <USERID>fish</USERID>
                <OPERATORNAME>fish</OPERATORNAME> www.18art.com
            </RoleUser>
            <RoleUser rowNum="6">
                <ROLENAME>
角色C</ROLENAME>
#$$$$$$$$$$$$$$$$$$$$$$$$%

                <USERID>snoppy</USERID>
                <OPERATORNAME>snoppy</OPERATORNAME> #3$$#%%%%%%%6$
            </RoleUser>
            <RoleUser rowNum="7">
                <ROLENAME>
角色C</ROLENAME>
#3$$#%%%%%%%6$

                <USERID>micky</USERID>
                <OPERATORNAME>micky</OPERATORNAME>
#3$$#%%%%%%%6$

            </RoleUser>
            <RoleUser rowNum="8">
                 <ROLENAME>
角色C</ROLENAME> www.18art.com
                 <USERID>kitty</USERID>
                 <OPERATORNAME>kitty</OPERATORNAME>

www.18art.com


            </RoleUser>
        </list>
    </data>
</root>

www.18art.com

以上XML文件中,list节点下的数据即业务逻辑计算后返回的数据,也就是最终传给报表模板的eos数据源数据。报表引擎会从该节点下获取数据、运行报表eosRoleUser.erd #$$$$$$$$$$$$$$$$$$$$$$$$%

  #3$$#%%%%%%%6$

EOS报表应用开发示例二

【实现方式】

JSP页面上调用Tag运行报表,数据源采用JDBC数据源方式。 #$$$$$$$$$$$$$$$$$$$$$$$$%

【实现概述】

1.    按照需求设计报表模板。 www.18art.com

o    路径和名称:demo.report.JDBCRoleUser.erd

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    功能:设置数据源、数据显示方式和样式。模板里需要加入报表参数作为查询条件。 #$$$$$$$$$$$$$$$$$$$$$$$$%

2.    编写查询条件页面。

www.18art.com

o    路径和名称:/demo/page/tagJdbcInput.jsp #$$$$$$$$$$$$$$$$$$$$$$$$%

o    功能:确定显示类型和查询条件。

#$$$$$$$$$$$$$$$$$$$$$$$$%

3.    编写查询结果页面。

#3$$#%%%%%%%6$

o    路径和名称:/demo/page/tagJdbcOutput.jsp

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    功能:显示或输出结果集。

#$$$$$$$$$$$$$$$$$$$$$$$$%

【实现步骤】

1.    创建项目

#3$$#%%%%%%%6$

参见联机帮助中的创建EOS基础项目。项目创建完成后,新建“demo”构件包,参见创建EOS构件包 #$$$$$$$$$$$$$$$$$$$$$$$$%

设置引用构件包时,必须引用EOS报表引用构件包。 #$$$$$$$$$$$$$$$$$$$$$$$$%
项目名称应根据项目的定义确定,特别是在多人协作开发模式下,统一命名是协作成功的关键。 #$$$$$$$$$$$$$$$$$$$$$$$$%

  www.18art.com

2.    设计报表模板 www.18art.com

demo.report.JDBCRoleUser www.18art.com

3.    编写查询条件页面 #$$$$$$$$$$$$$$$$$$$$$$$$%

tagJdbcInput.jsp文件内容如下: #$$$$$$$$$$$$$$$$$$$$$$$$%

1<%@include file="/internet/hciHead.jsp"%>

#3$$#%%%%%%%6$

2<form action="forward.do?nextPage=/demo/page/tagJdbcOutput.jsp" name="queryForm" method="post">

#3$$#%%%%%%%6$


3 <table border="0" cellspacing="1" cellpadding="1" class="query" align="center">
4 <tr>
5 <TD>显示类型:

#$$$$$$$$$$$$$$$$$$$$$$$$%


6 <SELECT name="reportFormat">
7 <OPTION value="html">html</OPTION>
8 <OPTION value="eosrdf">Applet</OPTION>
9 <OPTION value="xls">Excel</OPTION>
10 </SELECT>
11 </TD>
12 <TD>
查询角色:
#$$$$$$$$$$$$$$$$$$$$$$$$%

13 <input name="roleName" value="" size=30 /></TD>
14 <TD align="center"><input type="submit" value="
查询"></TD> #$$$$$$$$$$$$$$$$$$$$$$$$%
15 </tr>
16 </table>
17</form>
18<%@include file="/internet/hciTail.jsp" %>
www.18art.com

 

www.18art.com

为了便于说明,每行代码都加了行号。实际编写代码时,请去除行号。

#3$$#%%%%%%%6$

2form属性action="forward.do?nextPage=/demo/page/tagJdbcOutput.jsp" method="post",作用是在form提交时,直接跳转到tagJdbcOutput.jsp页面。
www.18art.com

  #3$$#%%%%%%%6$

4.    编写查询结果页面

#$$$$$$$$$$$$$$$$$$$$$$$$%

tagJdbcOutput.jsp文件内容如下: #3$$#%%%%%%%6$

1 <%@include file="/internet/common.jsp"%>
2 <%@ taglib uri="/WEB-INF/report.tld" prefix="report" %> #3$$#%%%%%%%6$
3 <link rel="stylesheet" href="/pageComponent/resources/theme/style.css" type="text/css">
#$$$$$$$$$$$$$$$$$$$$$$$$%

4 <%
5 String format = request.getParameter("reportFormat");
6 String roleName = request.getParameter("roleName")+"%"; //
为用户的角色名称增加"%",使该报表参数支持模糊查询. 7 if ( format==null || format.trim().length() == 0 ) www.18art.com
8 format = "html";
9 %>
#$$$$$$$$$$$$$$$$$$$$$$$$%

10 <table align="center" width="100%" height="100%">
11 <tr>
12 <td align="center" >

www.18art.com

13 <report:generateAndShow reportQualifiedName="demo.report.JDBCRoleUser" reportFormat="<%=format%>">

www.18art.com

14 <report:parameter name="rolename" value="<%=roleName %>" />
15 </report:generateAndShow> #$$$$$$$$$$$$$$$$$$$$$$$$%

16 </td>
17 </tr>
18 </table>
19 <%@include file="/internet/commonTail.jsp" %>

www.18art.com

为了便于说明,每行代码都加了行号。实际编写代码时,请去除行号。

#3$$#%%%%%%%6$


5 获取用户选择的报表显示方式。 #3$$#%%%%%%%6$
6 获取用户输入的查询角色名称。 #$$$$$$$$$$$$$$$$$$$$$$$$%
13 调用报表标签report:generateAndShow运行报表“demo.report.JDBCRoleUser”,需要的报表显示格式从变量“format”中获取。当报表设计文件中定义了报表参数时,需要嵌入report:parameter来为报表参数赋值。 www.18art.com
14 当报表设计文件中定义了报表参数时,通过嵌入的report:parameter标签来报表参数赋值,有多个报表参数时,就使用多个report:parameter标签。name为报表参数名称,需要与报表设计文件中的报表参数名称一致;value为报表参数的值,此例中从变量“roleName”中获取。
www.18art.com

 

#3$$#%%%%%%%6$

【运行示例】

sysadmin身份登录http://localhost:8080/,然后在地址栏输入http://localhost:8080/forward.do?nextPage=/demo/page/tagJdbcInput.jsp,即可测试报表。 #$$$$$$$$$$$$$$$$$$$$$$$$%

 

【参数传递】

查询条件页面提交时传出的xml如下:

www.18art.com

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<root>
    <data>

www.18art.com

        <requestPackage>demo</requestPackage>
        <requestAction>pr.tagEos</requestAction>
        <serverName>localhost</serverName>
#3$$#%%%%%%%6$

        <serverPort>8080</serverPort>
        <requestURI>/demo.pr.tagEos.do</requestURI>
        <queryString>RoleUser%2FROLENAME%2Fcriteria%2Foperator=like&amp;reportFormat=html&amp;RoleUser%2FROLENAME%2Fcriteria%2Fvalue=%BD%C7%C9%AB</queryString>
www.18art.com

        <reportFormat>html</reportFormat>
        <roleName>角色</roleName>

#$$$$$$$$$$$$$$$$$$$$$$$$%


        <SessionEntity>
            <remoteAddr>127.0.0.1</remoteAddr>
            <uploadRoot>upload</uploadRoot>

#$$$$$$$$$$$$$$$$$$$$$$$$%


            <rolelist rowNum="1">
                <EOSOperatorRole rowNum="0">
                    <operatorID>1</operatorID> #$$$$$$$$$$$$$$$$$$$$$$$$%
                    <roleID>eosadmin</roleID>
                </EOSOperatorRole>

#$$$$$$$$$$$$$$$$$$$$$$$$%


            </rolelist>
            <empCode/>
            <orgName/> #3$$#%%%%%%%6$
            <operatorID>1</operatorID>
            <operatorName>
系统管理员</operatorName>
www.18art.com

            <orgID/>
            <orgSEQ/>
            <menuType/> #3$$#%%%%%%%6$
            <userID>sysadmin</userID>
        </SessionEntity>
    </data>
</root>

#$$$$$$$$$$$$$$$$$$$$$$$$%

以上XML文件提交给了/demo/page/tagJdbcOutput.jsp页面。而/demo/page/tagJdbcOutput.jsp接收到该数据后,从HTTP请求中获取查询条件和显示格式,运行报表、并显示报表。

#$$$$$$$$$$$$$$$$$$$$$$$$%

EOS报表应用开发示例三

【实现方式】

在业务逻辑中调用报表的运算逻辑运行报表,数据源采用EOS数据源方式。

www.18art.com

  www.18art.com

【实现概述】

1.    按照需求设计报表模板。

#3$$#%%%%%%%6$

o    路径和名称:demo.report.eosRoleUser.erd #$$$$$$$$$$$$$$$$$$$$$$$$%

o    功能:设置数据源、数据显示方式和样式。

www.18art.com

2.    编写查询条件页面。

#3$$#%%%%%%%6$

o    路径和名称:/demo/page/bizlitEosInput.jsp

#3$$#%%%%%%%6$

o    功能:确定显示类型和查询条件。 www.18art.com

3.    编写查询展现逻辑。

#3$$#%%%%%%%6$

o    路径和名称:demo.pr.bizlitEos www.18art.com

o    功能:通过调用业务逻辑,获得报表数据,并返回给结果页面。

www.18art.com

4.    编写查询业务逻辑。 www.18art.com

o    路径和名称:demo.biz.bizlitEos

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    功能:根据查询页面传入的查询条件,取出查询结果,并返回到展现逻辑。 #3$$#%%%%%%%6$

5.    编写查询结果页面。

www.18art.com

o    路径和名称:/demo/page/bizlitOutput.jsp

#3$$#%%%%%%%6$

o    功能:得到展现逻辑传入的结果数据,按查询条件页面设定的显示格式显示数据。

www.18art.com

 

【实现步骤】

1.    创建项目 #$$$$$$$$$$$$$$$$$$$$$$$$%

参见联机帮助中的创建EOS基础项目。项目创建完成后,新建“demo”构件包,参见创建EOS构件包 www.18art.com

设置引用构件包时,必须引用EOS报表引用构件包。 #3$$#%%%%%%%6$
项目名称应根据项目的定义确定,特别是在多人协作开发模式下,统一命名是协作成功的关键。 www.18art.com

  #3$$#%%%%%%%6$

2.    设计报表模板 #$$$$$$$$$$$$$$$$$$$$$$$$%

demo.report.eosRoleUser www.18art.com

3.    编写查询条件页面

www.18art.com

bizlitEosInput.jsp文件内容如下:

#$$$$$$$$$$$$$$$$$$$$$$$$%

1 <%@include file="/internet/common.jsp"%>
2 <form action="demo.pr.bizletEos.do" name="queryForm">

www.18art.com


3 <input type="hidden" name="RoleUser/ROLENAME/criteria/operator" value="like"/>
4 <input type="hidden" name="report/reportQualifiedName" value="demo.report.eosRoleUser"/>
5 <table border="0" cellspacing="1" cellpadding="1" class="query" align="center">

www.18art.com


6 <tr>
7 <TD>显示类型: #$$$$$$$$$$$$$$$$$$$$$$$$%
8 <SELECT name="report/reportFormat">
9 <OPTION value="html">html</OPTION>
10 <OPTION value="eosrdf">Applet</OPTION>
11 <OPTION value="xls">Excel</OPTION>
12 </SELECT>
13 </TD>
14 <td>
查询角色:
#$$$$$$$$$$$$$$$$$$$$$$$$%

15 <input name="RoleUser/ROLENAME/criteria/value" value="" size=30 />
16 </td>
17 <td align="center"><input type="submit" value="
查询"></td>
#$$$$$$$$$$$$$$$$$$$$$$$$%

18 </tr>
19 </table>
20 </form>
21 <%@include file="/internet/commonTail.jsp" %>
www.18art.com

为了便于说明,每行代码都加了行号。实际编写代码时,请去除行号。

#$$$$$$$$$$$$$$$$$$$$$$$$%


2 表单提交至demo.pr.bizletEos.do
#3$$#%%%%%%%6$

3 隐含域,BL_queryEntityAllExt要使用的查询操作符。 #3$$#%%%%%%%6$
4 隐含域,要运行的报表全名为demo.report.eosRoleUser #3$$#%%%%%%%6$
8 用户选择列表,报表的显示格式。 #$$$$$$$$$$$$$$$$$$$$$$$$%
15 用户输入域,要查询的角色名称。
#$$$$$$$$$$$$$$$$$$$$$$$$%

 

www.18art.com

4.    编写查询展现逻辑 #3$$#%%%%%%%6$

创建展现逻辑demo.pr.bizlitEos,如下图所示。 www.18art.com

#3$$#%%%%%%%6$

[-编写展现逻辑] #3$$#%%%%%%%6$

调用的业务逻辑显示名称查询报表结果集“BizLogic名称“demo.biz.bizlitEos”,如下图所示。 www.18art.com

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-展现逻辑调用业务逻辑基本信息]

#3$$#%%%%%%%6$

调用的业务逻辑参数定义如下图所示。 #$$$$$$$$$$$$$$$$$$$$$$$$%

www.18art.com

[-展现逻辑调用业务逻辑参数定义]

#3$$#%%%%%%%6$

调用的JSP页面显示名称显示结果页面返回页面名称“/demo/page/bizlitOutput.jsp”,如下图所示。

#3$$#%%%%%%%6$

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-展现逻辑调用JSP页面]

#3$$#%%%%%%%6$

  www.18art.com

5.    编写查询业务逻辑

#3$$#%%%%%%%6$

创建业务逻辑demo.biz.bizlitEos,如下图所示。

#3$$#%%%%%%%6$

www.18art.com

[-编写业务逻辑] #3$$#%%%%%%%6$

调用的运算逻辑显示名称查询角色列表“Bizlet方法名称“com.primeton.eos.bizlets.database.DataQueryExt.BL_queryEntityAllExt”,如下图所示。

#$$$$$$$$$$$$$$$$$$$$$$$$%

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-业务逻辑调用运算逻辑基本信息]

www.18art.com

调用的运算逻辑参数定义如下图所示。 #$$$$$$$$$$$$$$$$$$$$$$$$%

www.18art.com

[-业务逻辑调用运算逻辑参数定义] #3$$#%%%%%%%6$

调用的第2个运算逻辑显示名称EOS数据总路线获取数据,运行报表“Bizlet方法名称“com.primeton.report.bizlet.ReportBizlets.BL_generateReport”,如下图所示。 #$$$$$$$$$$$$$$$$$$$$$$$$%
#$$$$$$$$$$$$$$$$$$$$$$$$%

[-业务逻辑调用运算逻辑基本信息]

#$$$$$$$$$$$$$$$$$$$$$$$$%

调用的运算逻辑参数定义如下图所示。

#$$$$$$$$$$$$$$$$$$$$$$$$%

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-业务逻辑调用运算逻辑参数定义] www.18art.com

开始图元的接口定义如下图所示。

#$$$$$$$$$$$$$$$$$$$$$$$$%

#3$$#%%%%%%%6$

[-业务逻辑开始图元接口定义]

#3$$#%%%%%%%6$

  www.18art.com

6.    编写查询结果页面 #$$$$$$$$$$$$$$$$$$$$$$$$%

bizlitOutput.jsp文件内容如下:

www.18art.com

1 <%@include file="/internet/common.jsp"%>
2 <%@ taglib uri="/WEB-INF/report.tld" prefix="report" %> www.18art.com
3 <link rel="stylesheet" href="/pageComponent/resources/theme/style.css" type="text/css">
4 <table align="center" width="100%" height="100%">
5 <tr>
6 <td align="center" >
7 <report:show domTaskInfo="taskInfo" closeTaskAndClear="true"/> www.18art.com
8 </td>
9 </tr>
10 </table>
11 <%@include file="/internet/commonTail.jsp" %>

www.18art.com

为了便于说明,每行代码都加了行号。实际编写代码时,请去除行号。

www.18art.com

7 在用BL方法运行报表后,这里调用报表标签report:show在客户端显示报表。其中,参数domTaskInfo的值必须要与运行报表的BL_generateReport中的“taskInfo”参数的值一致,参数closeTaskAndClear="true"表明在显示报表后关闭报表会话。
www.18art.com

 

#$$$$$$$$$$$$$$$$$$$$$$$$%

【运行示例】

sysadmin身份登录http://localhost:8080/,然后在地址栏输入http://localhost:8080/forward.do?nextPage=/demo/page/bizlitEosInput.jsp,即可测试报表。 #$$$$$$$$$$$$$$$$$$$$$$$$%

  #3$$#%%%%%%%6$

【参数传递】

1.    查询条件页面提交时传出的xml如下: www.18art.com

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<root>
    <data> #3$$#%%%%%%%6$
        <requestPackage>demo</requestPackage>
        <requestAction>pr.bizletEos</requestAction>
        <serverName>localhost</serverName> www.18art.com
        <serverPort>8080</serverPort>
        <requestURI>/demo/page/demo.pr.bizletEos.do</requestURI>
        <queryString>RoleUser%2FROLENAME%2Fcriteria%2Foperator=like&amp;report%2FreportQualifiedName=demo.report.eosRoleUser&amp;report%2FreportFormat=html&amp;RoleUser%2FROLENAME%2Fcriteria%2Fvalue=</queryString>

#$$$$$$$$$$$$$$$$$$$$$$$$%


        <report>
            <reportFormat>html</reportFormat>
            <reportQualifiedName>demo.report.eosRoleUser</reportQualifiedName>
www.18art.com

        </report>
        <RoleUser>
            <ROLENAME>
                <criteria>

www.18art.com


                    <value/>
                    <operator>like</operator>

#$$$$$$$$$$$$$$$$$$$$$$$$%


                </criteria>
            </ROLENAME>
        </RoleUser> #3$$#%%%%%%%6$
        <SessionEntity>
            <remoteAddr>127.0.0.1</remoteAddr>
            <uploadRoot>upload</uploadRoot> #$$$$$$$$$$$$$$$$$$$$$$$$%
            <rolelist rowNum="1">
                <EOSOperatorRole rowNum="0">
                    <operatorID>1</operatorID>
www.18art.com

                    <refNum>0</refNum>
                    <roleID>eosadmin</roleID> #$$$$$$$$$$$$$$$$$$$$$$$$%
                </EOSOperatorRole>
            </rolelist>
            <userID>sysadmin</userID>

#$$$$$$$$$$$$$$$$$$$$$$$$%


            <operatorID>1</operatorID>
        </SessionEntity>
    </data>
</root> www.18art.com

以上XML文件中,report节点、reportFormat节点和RoleUser节点为页面提交数据。 www.18art.com
1.report/reportQualifiedName
:报表设计文件的全名。 www.18art.com
2.report/reportFormat
:报表的显示格式。

#3$$#%%%%%%%6$


3.RoleUser/ROLENAME/criteria/value节点为查询条件值。 #$$$$$$$$$$$$$$$$$$$$$$$$%
4.RoleUser/ROLENAME/criteria/operator
节点查询条件的查询方式。
www.18art.com

  www.18art.com

2.    展现逻辑传给业务逻辑的xml如下: www.18art.com

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<root>
    <data>

#3$$#%%%%%%%6$


        <RoleUser>
            <ROLENAME>
                <criteria>

www.18art.com


                    <value/>
                    <operator>like</operator> #3$$#%%%%%%%6$
                </criteria>
            </ROLENAME>
        </RoleUser> #$$$$$$$$$$$$$$$$$$$$$$$$%
        <report>
            <reportFormat>html</reportFormat>
            <reportQualifiedName>demo.report.eosRoleUser</reportQualifiedName>

#$$$$$$$$$$$$$$$$$$$$$$$$%


        </report> #$$$$$$$$$$$$$$$$$$$$$$$$%

        <SessionEntity>
            <remoteAddr>127.0.0.1</remoteAddr>

#3$$#%%%%%%%6$

            <uploadRoot>upload</uploadRoot>
            <rolelist rowNum="1">
                <EOSOperatorRole rowNum="0">

#3$$#%%%%%%%6$


                    <operatorID>1</operatorID>
                    <roleID>eosadmin</roleID> #$$$$$$$$$$$$$$$$$$$$$$$$%
                </EOSOperatorRole>
            </rolelist>
            <empCode/> www.18art.com
            <orgName/>
            <operatorID>1</operatorID>
            <operatorName>系统管理员</operatorName>

#$$$$$$$$$$$$$$$$$$$$$$$$%


            <orgID/>
            <orgSEQ/>
            <menuType/>
www.18art.com

            <userID>sysadmin</userID>
        </SessionEntity>
    </data>
</root>
#$$$$$$$$$$$$$$$$$$$$$$$$%

以上XML文件中,RoleUser节点和report节点为页面提交数据。 #$$$$$$$$$$$$$$$$$$$$$$$$%
RoleUser
节点下的数据为查询数据的输入信息。 #3$$#%%%%%%%6$
report
作为调用com.primeton.report.bizlet.ReportBizlets.BL_generateReport运算逻辑的参数。

www.18art.com

  #$$$$$$$$$$$$$$$$$$$$$$$$%

3.    业务逻辑调用完com.primeton.report.bizlet.ReportBizlets.bl_execcuteReport运算逻辑后的xml如下: #3$$#%%%%%%%6$

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<root>
    <data> #3$$#%%%%%%%6$
        <RoleUser>
            <ROLENAME>
                <criteria>

#3$$#%%%%%%%6$


                    <value/>
                    <operator>like</operator>
#$$$$$$$$$$$$$$$$$$$$$$$$%

                </criteria>
            </ROLENAME>
        </RoleUser>

#$$$$$$$$$$$$$$$$$$$$$$$$%


        <report>
            <reportFormat>html</reportFormat>
            <reportQualifiedName>demo.report.eosRoleUser</reportQualifiedName> #$$$$$$$$$$$$$$$$$$$$$$$$%
        </report> #3$$#%%%%%%%6$

        <SessionEntity>
            <remoteAddr>127.0.0.1</remoteAddr>

#$$$$$$$$$$$$$$$$$$$$$$$$%

            <uploadRoot>upload</uploadRoot>
            <rolelist rowNum="1">
                <EOSOperatorRole rowNum="0"> www.18art.com
                    <operatorID>1</operatorID>
                    <roleID>eosadmin</roleID> www.18art.com
                </EOSOperatorRole>
            </rolelist>
            <empCode/> #3$$#%%%%%%%6$
            <orgName/>
            <operatorID>1</operatorID>
            <operatorName>系统管理员</operatorName>

www.18art.com


            <orgID/>
            <orgSEQ/>
            <menuType/>
#$$$$$$$$$$$$$$$$$$$$$$$$%

            <userID>sysadmin</userID>
        </SessionEntity>
        <list type="RoleUser" rowNum="14"> #$$$$$$$$$$$$$$$$$$$$$$$$%
            <RoleUser rowNum="0">
                <ROLENAME>
嘉宾</ROLENAME>
#3$$#%%%%%%%6$

                <USERID>guest</USERID>
                <OPERATORNAME>
嘉宾</OPERATORNAME>

#$$$$$$$$$$$$$$$$$$$$$$$$%


            </RoleUser>
            <RoleUser rowNum="1">
                <ROLENAME>
角色A</ROLENAME> #$$$$$$$$$$$$$$$$$$$$$$$$%
                <USERID>tiger</USERID>
                <OPERATORNAME>tiger</OPERATORNAME> #$$$$$$$$$$$$$$$$$$$$$$$$%
            </RoleUser>
            <RoleUser rowNum="2">
                <ROLENAME>
角色B</ROLENAME> #$$$$$$$$$$$$$$$$$$$$$$$$%
                <USERID>tiger</USERID>
                <OPERATORNAME>tiger</OPERATORNAME>
#3$$#%%%%%%%6$

            </RoleUser>
            <RoleUser rowNum="3">
                <ROLENAME>
角色B</ROLENAME> www.18art.com
                <USERID>goose</USERID>
                <OPERATORNAME>goose</OPERATORNAME> www.18art.com
            </RoleUser>
            <RoleUser rowNum="4">
                <ROLENAME>
角色B</ROLENAME> #3$$#%%%%%%%6$
                <USERID>fish</USERID>
                <OPERATORNAME>fish</OPERATORNAME> #$$$$$$$$$$$$$$$$$$$$$$$$%
            </RoleUser>
            <RoleUser rowNum="5">
                <ROLENAME>
角色C</ROLENAME>
#$$$$$$$$$$$$$$$$$$$$$$$$%

                <USERID>tiger</USERID>
                <OPERATORNAME>tiger</OPERATORNAME>
#$$$$$$$$$$$$$$$$$$$$$$$$%

            </RoleUser>
            <RoleUser rowNum="6">
                <ROLENAME>
角色C</ROLENAME> www.18art.com
                <USERID>kitty</USERID>
                <OPERATORNAME>kitty</OPERATORNAME> #$$$$$$$$$$$$$$$$$$$$$$$$%
            </RoleUser>
            <RoleUser rowNum="7">
                <ROLENAME>
角色C</ROLENAME> #3$$#%%%%%%%6$
                <USERID>fish</USERID>
                <OPERATORNAME>fish</OPERATORNAME>
#$$$$$$$$$$$$$$$$$$$$$$$$%

            </RoleUser>
            <RoleUser rowNum="8">
                <ROLENAME>
角色C</ROLENAME>
www.18art.com

                <USERID>snoppy</USERID>
                <OPERATORNAME>snoppy</OPERATORNAME>

#$$$$$$$$$$$$$$$$$$$$$$$$%


            </RoleUser>
            <RoleUser rowNum="9">
                <ROLENAME>
角色C</ROLENAME> #3$$#%%%%%%%6$
                <USERID>micky</USERID>
                <OPERATORNAME>micky</OPERATORNAME> #3$$#%%%%%%%6$
            </RoleUser>
            <RoleUser rowNum="10">
                <ROLENAME>
票据管理</ROLENAME>
#$$$$$$$$$$$$$$$$$$$$$$$$%

                <USERID>hh</USERID>
                <OPERATORNAME>
黄浩</OPERATORNAME> #3$$#%%%%%%%6$
            </RoleUser>
            <RoleUser rowNum="11">
                <ROLENAME>
票据管理</ROLENAME> #3$$#%%%%%%%6$
                <USERID>dm</USERID>
                <OPERATORNAME>
戴明</OPERATORNAME> #$$$$$$$$$$$$$$$$$$$$$$$$%
            </RoleUser>
            <RoleUser rowNum="12">
                <ROLENAME>
票据管理</ROLENAME>

#$$$$$$$$$$$$$$$$$$$$$$$$%


                <USERID>ljd</USERID>
                <OPERATORNAME>
李坚定</OPERATORNAME> www.18art.com
            </RoleUser>
            <RoleUser rowNum="13">
                <ROLENAME>
系统管理员</ROLENAME> #$$$$$$$$$$$$$$$$$$$$$$$$%
                <USERID>sysadmin</USERID>
                <OPERATORNAME>
系统管理员</OPERATORNAME> #3$$#%%%%%%%6$
            </RoleUser>
        </list>
        <params/>
        <taskInfo>

#$$$$$$$$$$$$$$$$$$$$$$$$%


            <reportQualifiedName>demo.report.eosRoleUser</reportQualifiedName>
            <reportFormat>html</reportFormat>

#$$$$$$$$$$$$$$$$$$$$$$$$%


            <sessionName/>
            <sessionId>66ba96e7-1f97-4ae8-a8e9-ee708a743743</sessionId>
            <outputPath>C:EOS_530eosserverreportServeroutput</outputPath>

www.18art.com


            <outputName>66ba96e7-1f97-4ae8-a8e9-ee708a743743</outputName>
            <totalPage>1</totalPage>
            <isPaged>false</isPaged> #3$$#%%%%%%%6$
            <outputCanonicalPath>C:EOS_530eosserverreportServeroutput66ba96e7-1f97-4ae8-a8e9-ee708a743743_1.html</outputCanonicalPath>
            <taskSucceeded>true</taskSucceeded> www.18art.com
        </taskInfo>
#$$$$$$$$$$$$$$$$$$$$$$$$%

    </data>
</root>

#3$$#%%%%%%%6$

以上XML文件中,list节点下的数据为BL_queryEntityAllExt查询数据库的结果。 #$$$$$$$$$$$$$$$$$$$$$$$$%
taskInfo
节点是BL_generateReport运行报表后生成的报表任务信息。后续显示报表结果时需要用到这个节点下的数据。 #3$$#%%%%%%%6$

 

www.18art.com

EOS报表应用开发示例四

【实现方式】

在业务逻辑中调用报表的运算逻辑运行报表,数据源采用JDBC数据源方式。

#$$$$$$$$$$$$$$$$$$$$$$$$%

 

www.18art.com

【实现概述】

1.    按照需求设计报表模板。 #$$$$$$$$$$$$$$$$$$$$$$$$%

o    路径和名称:demo.report.JDBCRoleUser.erd

www.18art.com

o    功能:设置数据源、数据显示方式和样式。模板里需要加入报表参数作为查询条件。

#$$$$$$$$$$$$$$$$$$$$$$$$%

2.    编写查询条件页面。

#3$$#%%%%%%%6$

o    路径和名称:/demo/page/bizlitJDBCInput.jsp www.18art.com

o    功能:确定显示类型和查询条件。

www.18art.com

3.    编写查询展现逻辑。

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    路径和名称:demo.pr.bizlitJDBC www.18art.com

o    功能:通过调用业务逻辑,获得报表数据,并返回给结果页面。

#$$$$$$$$$$$$$$$$$$$$$$$$%

4.    编写查询业务逻辑。 www.18art.com

o    路径和名称:demo.biz.bizlitJDBC www.18art.com

o    功能:根据查询条件,返回结果集。

www.18art.com

5.    编写查询结果页面。

#$$$$$$$$$$$$$$$$$$$$$$$$%

o    路径和名称:/demo/page/bizlitJDBCOutput.jsp #$$$$$$$$$$$$$$$$$$$$$$$$%

o    功能:得到展现逻辑传入的结果数据,按查询条件页面设定的显示格式显示数据。 #$$$$$$$$$$$$$$$$$$$$$$$$%

 

【实现步骤】

1.    创建项目 www.18art.com

参见联机帮助中的创建EOS基础项目。项目创建完成后,新建“demo”构件包,参见创建EOS构件包 www.18art.com

设置引用构件包时,必须引用EOS报表引用构件包。

#3$$#%%%%%%%6$

项目名称应根据项目的定义确定,特别是在多人协作开发模式下,统一命名是协作成功的关键。 www.18art.com

 

#3$$#%%%%%%%6$

2.    设计报表模板 #3$$#%%%%%%%6$

demo.report.JDBCRoleUser #3$$#%%%%%%%6$

3.    编写查询条件页面 #3$$#%%%%%%%6$

bizlitJDBCInput.jsp文件内容如下: www.18art.com

1 <%@include file="/internet/common.jsp"%>
2 <form action="demo.pr.bizletJDBC.do" name="queryForm"> #3$$#%%%%%%%6$
3 <input type="hidden" name="report/reportQualifiedName" value="demo.report.JDBCRoleUser"/>
4 <table border="0" cellspacing="1" cellpadding="1" class="query" align="center">
5 <tr>
6 <td>
显示类型: www.18art.com
7 <SELECT name="report/reportFormat">
8 <OPTION value="html">html</OPTION>
9 <OPTION value="eosrdf">Applet</OPTION>
10 <OPTION value="xls">Excel</OPTION>
11 </SELECT>
12 </td>
13 <td>
查询角色: #3$$#%%%%%%%6$
14 <input name="report/reportParameters/rolename" value="" size=30 />
15 </td>
16 <td align="center"><input type="submit" value="
查询"></td>

#$$$$$$$$$$$$$$$$$$$$$$$$%

17 </tr>
18 </table>
19 </form>
20 <%@include file="/internet/commonTail.jsp" %> #3$$#%%%%%%%6$

为了便于说明,每行代码都加了行号。实际编写代码时,请去除行号。 #$$$$$$$$$$$$$$$$$$$$$$$$%
2 表单提交至demo.pr.bizletEos.do #$$$$$$$$$$$$$$$$$$$$$$$$%
4 隐含域,要运行的报表全名为demo.report.JDBCRoleUser

www.18art.com

7 用户选择列表,报表的显示格式。

www.18art.com


14 用户输入域,要查询的角色名称。 #$$$$$$$$$$$$$$$$$$$$$$$$%

  #3$$#%%%%%%%6$

4.    编写查询展现逻辑 #$$$$$$$$$$$$$$$$$$$$$$$$%

创建展现逻辑demo.pr.bizlitJDBC,如下图所示。

#$$$$$$$$$$$$$$$$$$$$$$$$%

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-编写展现逻辑] #$$$$$$$$$$$$$$$$$$$$$$$$%

调用的业务逻辑显示名称“bizlitJDBC”“BizLogic名称“demo.biz.bizlitJDBC”,如下图所示。 #3$$#%%%%%%%6$

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-展现逻辑调用业务逻辑基本信息]

#3$$#%%%%%%%6$

调用的业务逻辑参数定义中,节点路径“report”输入输出输入路径节点类型“EOS Entity”节点路径“taskInfo”输入输出输出路径节点类型“EOS Entity”,如下图所示。 #$$$$$$$$$$$$$$$$$$$$$$$$%

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-展现逻辑调用业务逻辑参数定义]

#$$$$$$$$$$$$$$$$$$$$$$$$%

调用的JSP页面显示名称“bizlitJDBCOutput.jsp”返回页面名称“/demo/page/bizlitJDBCOutput.jsp”,如下图所示。

www.18art.com

#3$$#%%%%%%%6$

[-展现逻辑调用JSP页面] www.18art.com

5.    编写查询业务逻辑

www.18art.com

创建业务逻辑demo.biz.bizlitJDBC,如下图所示。 #3$$#%%%%%%%6$

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-编写业务逻辑] #$$$$$$$$$$$$$$$$$$$$$$$$%

调用的运算逻辑显示名称“BL_joinStrings”“Bizlet方法名称“com.primeton.eos.bizlets.string.BNString.BL_joinStrings”,如下图所示。

#$$$$$$$$$$$$$$$$$$$$$$$$%

#3$$#%%%%%%%6$

[-业务逻辑调用运算逻辑基本信息] www.18art.com

调用的运算逻辑参数定义如下图所示。 www.18art.com

#$$$$$$$$$$$$$$$$$$$$$$$$%

[-业务逻辑调用运算逻辑参数定义]

#3$$#%%%%%%%6$

调用的第2个运算逻辑显示名称“bl_generateReport”“Bizlet方法名称“com.primeton.report.bizlet.ReportBizlets.bl_generateReport”,如下图所示。 www.18art.com
#3$$#%%%%%%%6$

[-业务逻辑调用运算逻辑基本信息]

www.18art.com

调用的运算逻辑参数定义如下图所示。 #$$$$$$$$$$$$$$$$$$$$$$$$%

#3$$#%%%%%%%6$

[-业务逻辑调用运算逻辑参数定义] www.18art.com

开始图元的接口定义如下图所示。 #$$$$$$$$$$$$$$$$$$$$$$$$%

#3$$#%%%%%%%6$

[-业务逻辑开始图元接口定义] #3$$#%%%%%%%6$

6.    编写查询结果页面

#$$$$$$$$$$$$$$$$$$$$$$$$%

bizlitJDBCOutput.jsp文件内容如下: www.18art.com

1 <%@include file="/internet/common.jsp"%>
2 <%@ taglib uri="/WEB-INF/report.tld" prefix="report" %> #$$$$$$$$$$$$$$$$$$$$$$$$%
3 <link rel="stylesheet" href="/pageComponent/resources/theme/style.css" type="text/css">
4 <table align="center" width="100%" height="100%">
5 <tr>
6 <td align="center" >
7 <report:show domTaskInfo="taskInfo" closeTaskAndClear="true"/>

#3$$#%%%%%%%6$

8 </td>
9 </tr>
10 </table>
11 <%@include file="/internet/commonTail.jsp" %> #3$$#%%%%%%%6$

为了便于说明,每行代码都加了行号。实际编写代码时,请去除行号。 #$$$$$$$$$$$$$$$$$$$$$$$$%
7 在用BL方法运行报表后,这里调用报表标签report:show在客户端显示报表。其中,参数domTaskInfo的值必须要与运行报表的BL_generateReport中的“taskInfo”参数的值一致,参数closeTaskAndClear="true"表明在显示报表后关闭报表会话。

#$$$$$$$$$$$$$$$$$$$$$$$$%

【运行示例】

sysadmin身份登录http://localhost:8080/,然后在地址栏输入http://localhost:8080/forward.do?nextPage=/demo/page/bizlitJDBCInput.jsp,即可测试报表。

#3$$#%%%%%%%6$

 

#$$$$$$$$$$$$$$$$$$$$$$$$%

【参数传递】

1.    查询条件页面提交时传出的xml如下: #$$$$$$$$$$$$$$$$$$$$$$$$%

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<root>
    <data>

www.18art.com

        <requestPackage>demo</requestPackage>
        <requestAction>pr.bizlitJDBC</requestAction>
        <serverName>localhost</serverName>
www.18art.com

        <serverPort>8080</serverPort>
        <requestURI>/demo.pr.bizlitJDBC.do</requestURI>
        <queryString>report%2Flist%2Froleparam%2Fname=rolename&amp;report%2FsessionName=bizJDBC&amp;report%2FreportQualifiedName=demo.report.JDBCRoleUser&amp;reportFormat=html&amp;report%2Flist%2Froleparam%2Fvalue=%BD%C7%C9%AB</queryString> www.18art.com
        <report>
            <reportFormat>html</reportFormat>
            <reportQualifiedName>demo.report.JDBCRoleUser</reportQualifiedName>

www.18art.com


            <reportParameters>
                <rolename/>
            </reportParameters> #3$$#%%%%%%%6$
        </report> #$$$$$$$$$$$$$$$$$$$$$$$$%

        <SessionEntity>
            <remoteAddr>127.0.0.1</remoteAddr> #$$$$$$$$$$$$$$$$$$$$$$$$%
            <uploadRoot>upload</uploadRoot>
            <rolelist rowNum="1">
                <EOSOperatorRole rowNum="0"> #3$$#%%%%%%%6$
                    <operatorID>1</operatorID>
                    <roleID>eosadmin</roleID> #$$$$$$$$$$$$$$$$$$$$$$$$%
                </EOSOperatorRole>
            </rolelist>
            <empCode/>

#3$$#%%%%%%%6$

            <orgName/>
            <operatorID>1</operatorID>
            <operatorName>系统管理员</operatorName> #3$$#%%%%%%%6$
            <orgID/>
            <orgSEQ/>
            <menuType/>

#$$$$$$$$$$$$$$$$$$$$$$$$%


            <userID>sysadmin</userID>
        </SessionEntity>
    </data>
</root>
#3$$#%%%%%%%6$

以上XML文件中,reportFormat节点和report节点为页面提交数据。

#3$$#%%%%%%%6$

1.report/reportQualifiedName:报表设计文件的全名。
#3$$#%%%%%%%6$

2.report/reportFormat
:报表的显示格式。 #3$$#%%%%%%%6$
3.report/reportParameters
:该节点下为报表参数列表,参数名为“rolename”,参数值为空。 www.18art.com

  www.18art.com

2.    业务逻辑中调用com.primeton.eos.bizlets.string.BNString.BL_joinStrings 运算逻辑后的xml

#3$$#%%%%%%%6$

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<root>
    <data>

www.18art.com

        <report>
            <reportFormat>html</reportFormat>
            <reportQualifiedName>demo.report.JDBCRoleUser</reportQualifiedName> www.18art.com
            <reportParameters>
                <rolename>%</rolename>
            </reportParameters>

www.18art.com


        </report> www.18art.com

        <SessionEntity>
            <remoteAddr>127.0.0.1</remoteAddr>

#3$$#%%%%%%%6$

            <uploadRoot>upload</uploadRoot>
            <rolelist rowNum="1">
                <EOSOperatorRole rowNum="0">

#3$$#%%%%%%%6$


                    <operatorID>1</operatorID>
                    <refNum>0</refNum>
www.18art.com

                    <roleID>eosadmin</roleID>
                </EOSOperatorRole> www.18art.com
            </rolelist>
            <userID>sysadmin</userID>
            <operatorID>1</operatorID> #3$$#%%%%%%%6$
        </SessionEntity>
    </data>
</root> www.18art.com

report/reportParameters/roleparam:将该报表模板的参数rolename的值上追加“%”使之支持模糊查询。

www.18art.com

  #$$$$$$$$$$$$$$$$$$$$$$$$%

3.    业务逻辑调用com.primeton.report.bizlet.ReportBizlets.ReportBizlets.BL_generateReport运算逻辑后的xml如下:

www.18art.com

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<root>
    <data>

#3$$#%%%%%%%6$


        <report>
            <reportFormat>html</reportFormat>
            <reportQualifiedName>demo.report.JDBCRoleUser</reportQualifiedName> #3$$#%%%%%%%6$
            <reportParameters>
                <rolename>%</rolename>
            </reportParameters>
www.18art.com

        </report>
        <SessionEntity>
            <remoteAddr>127.0.0.1</remoteAddr>
            <uploadRoot>upload</uploadRoot> #$$$$$$$$$$$$$$$$$$$$$$$$%
            <rolelist rowNum="1">
                <EOSOperatorRole rowNum="0">
                    <operatorID>1</operatorID> #3$$#%%%%%%%6$
                    <refNum>0</refNum>
                    <roleID>eosadmin</roleID> #$$$$$$$$$$$$$$$$$$$$$$$$%
                </EOSOperatorRole>
            </rolelist>
            <userID>sysadmin</userID> #$$$$$$$$$$$$$$$$$$$$$$$$%
            <operatorID>1</operatorID>
        </SessionEntity>
        <taskInfo>
            <reportQualifiedName>demo.report.JDBCRoleUser</reportQualifiedName> #$$$$$$$$$$$$$$$$$$$$$$$$%
            <reportFormat>html</reportFormat>
            <sessionName/>
            <sessionId>f2ed5977-55d5-4852-a1ca-bb5c50e24361</sessionId>
#$$$$$$$$$$$$$$$$$$$$$$$$%

            <outputPath>C:EOS_530eosserverreportServeroutput</outputPath>
            <outputName>f2ed5977-55d5-4852-a1ca-bb5c50e24361</outputName> #3$$#%%%%%%%6$
            <totalPage>1</totalPage>
            <isPaged>false</isPaged>
            <outputCanonicalPath>C:EOS_530eosserverreportServeroutputf2ed5977-55d5-4852-a1ca-bb5c50e24361_1.html</outputCanonicalPath>

www.18art.com


            <taskSucceeded>true</taskSucceeded>
        </taskInfo>
    </data>
</root> www.18art.com

taskInfo节点是BL_generateReport运行报表后生成的报表任务信息。后续显示报表结果时需要用到这个节点下的数据。 #3$$#%%%%%%%6$

  #3$$#%%%%%%%6$

 

www.18art.com

 

#$$$$$$$$$$$$$$$$$$$$$$$$%

#3$$#%%%%%%%6$

附件列表


0

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。

如果您认为本词条还有待完善,请 编辑

上一篇 CCD    下一篇 LCD

标签

同义词

暂无同义词