EAS分析报表框架手册.docx
《EAS分析报表框架手册.docx》由会员分享,可在线阅读,更多相关《EAS分析报表框架手册.docx(22页珍藏版)》请在冰豆网上搜索。
![EAS分析报表框架手册.docx](https://file1.bdocx.com/fileroot1/2023-1/21/57e26d3e-b835-4668-98da-ae30b1e70889/57e26d3e-b835-4668-98da-ae30b1e708891.gif)
EAS分析报表框架手册
EAS分析报表框架手册
通过阅读本手册,您将
Ø了解分析报表及资源信息
Ø快速地使用分析报表进行开发
Ø思考现有的报表以及这个框架哪些地方可以改进?
第1章简介
本章是对分析报表框架的总述。
1.1概述
EAS分析报表框架(BIReport)一套分析报表基础组件,它做了大部分非具体业务的工作,如查询方案/打印/临时表/维表操作等,使开发人员能把精力更多地投入到业务相关的开发工作中。
开发人员可通过继承、引用相关组件快速完成分析报表的开发。
1.2分析报表功能
1.下面功能均可在表格上操作:
1.数据下钻、上卷;
2.选择显示、隐藏指定的行与列;
3.自定义计算列;
4.维度行列任意顺序排列;
5.数据排序;
6.数据过滤。
2.图形功能:
1.显示缺省图形:
显示表格的全部数据;
2.自定义图形:
由开发人员写代码实现,显示表格部分数据,并作某些加工;
3.图形分析:
由用户自行选择数据显示为图形。
3.打印:
图表可一起打印
4.发布:
支持以excel/html格式发布到Portal或发送到mail
1.3分析报表开发
1.设计界面:
设计UI及Façade元数据;
2.配置维度(xml文件);
3.编写代码,主要工作:
服务端准备数据――写在ControllerBean中,每一维度对应一个sql语句。
其余的均由框架实现,只需写好框架需要的接口方法。
配置文件例子:
1.4EAS使用案例
1.4.1资金管理分析报表
包括资金结算、投融资管理等业务模块的汇总表与分析表。
1.4.2预算分析报表
1.4.3管理会计资金分析报表
1.5各功能界面预览
以下是分析报表的界面示例:
1.5.1主页面
1.5.2图形分析
1.5.3排序
1.5.4筛选(过滤)
1.5.5维度浏览
1.5.6报表发布
第2章开发流程
2.1框架描述
2.1.1组成
1.框架元数据:
Ø主界面UI:
com.kingdee.eas.framework.bireport.client.BireportBaseMainUI.ui
Ø条件界面UI:
com.kingdee.eas.framework.bireport.client.BireportBaseFilterUI.ui
ØFaçade功能对象:
com.kingdee.eas.framework.bireport.app.BireportBaseFacade.facade
2.维度配置文件:
xml文件,放在与app/client同级的config目录下。
3.相关组件及辅助类。
4.示例:
com.kingdee.eas.framework.bireport.app.BireportSample
2.1.2类图
2.2步骤概述
2.2.1元数据设计
Ø设计主界面UI继承BireportBaseMainUI,根据业务设计界面,要求至少有一个显示数据的KDTable。
Ø设计条件界面UI继承BireportBaseFilterUI,根据业务设计界面。
Ø设计功能对象继承BireportBaseFacade,通常不再需要添加接口,除非业务上自身的要求。
注意界面规范:
边界10px,组件间3px,详见http:
//uiserver/
2.2.2发布补全代码
Ø发布元数据,对编译警告的选择添加未实现的方法(Eclipse开发环境)。
Ø根据超类注释完成自动添加的未实现代码,可参考示例。
ØFaçade生成的ControllerBean通常要重载_init和readySchemaSource两个方法,分别用于初始化条件查询数据和准备主页面的维度数据。
2.2.3配置维度文件
config目录下新建维度配置文件(xml格式,具体参考相关文档),根据具体要求设计维度。
2.2.4编写业务相关代码
通常包括
1.处理查询条件:
初始化设置、方案存取等;
2.主页面:
小标题、打印格式、打印变量、自定义图形等;
3.ControllerBean准备数据。
2.3时序图
第3章维度配置文件
3.1多语言
目前支持两种实现方式
Ø单配置文件:
里面使用属性、变量来实现多语言。
Ø多配置文件,每种语言用一个文件,只需要写原始一份,通过插件将生成3份文件。
3.2资源属性、变量
3.2.1使用资源属性
文件中指定BOS的资源对象名全路径:
定义属性,格式为#{varname}
如上图例,则框架解析此文件时,将获取MacroReplacer.resource的bank属性替换#{bank}。
3.2.2使用变量
有两种写法,
Ø在tag属性值里,用${varname}
Ø在tag外面,用,用于需要动态变动xml结构的情况。
如
服务端用SchemaSource#setMacroValue(Stringkey,Stringvalue)方法设置变量。
3.3Schema翻译插件
Schema文件翻译插件KingdeeToolkit_1.0.0.jar,获取地址见后面的相关资源vss.
[使用方法]
如下图,将生成3个xml文件:
schema_L1.xml英文(需手工翻译里面的多语言属性)
schema_L2.xml简体中文
schema_L3.xml繁体中文
此插件还提供属性文件的翻译,在形如*_.properties的文件上右键菜单可见:
3.4权限配置
权限分数据(成员)权限、字段(度量)权限两种,数据权限施加于维度,字段权限施加于度量。
使用了本方法设置权限,若以前中有手工增加过数据权限过虑的代码(使用com.kingdee.eas.base.permission.IPermission产生过虑SQL),应去除去,避免重复过虑影响效率。
开发人员需要做两个部分:
1)BOS中定义权限元数据,发布;
2)维度配置文件指定关联的权限项,配置如下图:
Permission下可以有多个Item,Item之间是“和”关系。
3.4.1成员权限
1.在BOS中定义元数据,要绑定维度查询的表――eas中对应实体,参考BOS开发帮助文档。
2.xml文件中配置权限项(使用上步骤定义的权限名称)。
◆Permissiontype指定为EAS;
◆Itemtype指定为SQL_FILTER;
◆name,权限元数据名称;
◆column,与权限关联的字段。
如下图种表示用Currency维度的SQL中的FID字段来关联权限项生成的SQL。
EAS中数据授权示例,以administrator,对选中某一用户授数据权限,若新增的权限项不存在,请先在主页面菜单中点击同步权限项:
规则维护
屏蔽人民币(此是示例,实际中不应引用基础资料的权限,而是新建权限项,绑定币别):
3.4.2度量权限
1)设计权限元数据(无需绑定任何数据,只是功能权限—是/否)
2)配置文件增加权限关联,
◆Permissiontype指定为EAS;
◆Itemtype指定为BOOLEAN;
◆name,关联的权限项名称。
EAS中授功能权限(有/无权限)示例:
EAS中打开报表,如果所有度量都没权限访问,则表格显示为空,并提示以下信息:
第4章使用图形
4.1效果示例
4.2使用方法
代码只需要在RptXXXMainUI里添加
1.增加缺省图片
setShowDefaultChart(boolean)是否显示缺省图片(整个表数据对应的图片),在onBeforeQuery()中调用.
addDefaultChart()显示缺省图片,在onAfterQuery()中调用,与setShowDefaultChart结合可按维度需求实现是否需要缺省图片.
2.增加自定义图片
在onAfterQuery()中编写代码,如
显示饼图:
期末数各公司(银行--DyTable)的比例
this.addChart().setTitle("期末公司信用证结构分析")
.setChartType(ChartType.CT_MULTIPIE)
.addShowMember("PeriodType","期末数")
.addShowMember("RegionType","小计")
.addShowMember("Measures","比例")
.addNotShowMember("DyTable","合计")
.setReverse(true)
.finishDataSet();
显示例图:
代码说明:
addShowMember:
设置需要显示图片的成员数据,第一个参数为维度名称,第二个参数是成员名称,均不区分大小写.维度名与成员名需与mdx语句中的命名对应
addNotShowMember:
设置不需要显示的成员.
注意:
在同一维度上,不能同时设置addShowMember/addNotShowMember,只设置”显示”成员,则其它成员(在图片上)不显示,只设置”不显示”成员,则其它成员默认显示.
setReverse(boolean):
表示图形是否显示为当前行列交换后的图形(但表的显示是不需要交换的)
finishDataSet():
表示图片数据设置结束(必须调用且在最后)
参考代码:
com.kingdee.eas.fm.fin.client.RptLCFrameAnalysisMainUI
第5章脚本语言
5.1概述
用户与开发人员都将会用到脚本,犹如office需要vba,分析报表将使用MiniScript脚本语言,以满足灵活性的需求。
5.2扩展业务脚本
(未实现…待续)
第6章其它
6.1临时表的处理
com.kingdee.eas.fm.birt.app.BirtBaseFacadeControllerBean提供,建议不要自己写创建/删除临时表的sql,因为临时表处理EAS系统有专门的管理:
Ø获取临时表名:
getTempTableName
Ø使用select…into…创建临时表及数据
executeSelectInto
Ø释放临时表
dropTempTable
6.2SQL执行接口
com.kingdee.eas.fm.birt.app.BirtBaseFacadeControllerBean提供:
_executeQuery
_executeUpdate
6.3打印
Ø设置打印表头格式方法
protectedvoidpreparePrintPageHeader(HeadFootModelheader)
Ø返回打印表头变量方法
protectedMappreparePrintVariantMap()
6.4辅助类的使用
1.条件自动存储类
RptConditionManager
一般用法
//条件页面:
获取条件
publicRptParamsgetCustomCondition(){
RptConditionManagerrm=newRptConditionManager();
rm.recordAllStatus(this);
returnrm.toRptParams();
}
//设置条件
publicvoidsetCustomCondition(RptParamsparams){
RptConditionManagerrm=newRptConditionManager(params);
rm.restoreAllStatus(this);
}
[注]用最新的CustomerParams参数的接口,若要条件支持版本升级,则本辅助类无效,请自行处理。
框架默认转调最新接口到setCustomCondition(RptParamsparams)与RptParamsgetCustomCondition(),即使用此两方法仍可用非字符窜对象作为条件,但条件方案相关类被修改(客户升级)后可能报版本不一致错误。
自动存储的条件获取方法
RptParams.getObjectElement("name.value");
name为条件相应控件的名称,getObjectElement方法可以用属性来访问其中的对象,如,name.value为com.kingdee.eas.framework.DataBaseInfo对象,取其编码:
RptParams.getObjectElement("name.value.number");
扩展用法示例
publicRptParamsgetCustomCondition(){
RptConditionManagerrm=newRptConditionManager();
rm.recordAllStatus(this);
rm.setProperty("companyIdSet",companyIdSet);
bankIdSet=AccessHelper.getIds(AccessHelper.getF7Ids(jbpBank));
rm.setProperty("bankIdSet",bankIdSet);
currencyIdSet=AccessHelper.getIds(AccessHelper.getF7Ids(jbpCurrency));
rm.setProperty("currencyIdSet",currencyIdSet);
returnrm.toRptParams();
}
publicvoidsetCustomCondition(RptParamsparams){
RptConditionManagerrm=newRptConditionManager(params);
rm.restoreAllStatus(this);
companyIdSet=(Set)params.getObject("companyIdSet");
try{
bankIdSet=(Set)params.getObject("bankIdSet");
CoreBaseInfo[]c=RptIvtClientUtil.getBaseInfoFromIdSet(bankIdSet);
this.jbpBank.setData(c);
currencyIdSet=(Set)params.getObject("currencyIdSet");
CoreBaseInfo[]cc=RptIvtClientUtil.getBaseInfoFromIdSet(currencyIdSet);
this.jbpCurrency.setData(cc);
}catch(Exceptione){
this.handUIException(e);
}
}
2.SqlParams的使用
3.与PreparedStatement使用方法类似,较之更简洁方便。
作为SQL执行接口的参数。
4.调试用:
SqlParams.sql(…)即可得到完整(不带?
参数)的sql。
第7章相关资源
7.1其它资源
1.VSS:
\\192.168.16.5$/2EASV5.1/7控件/7.1报表服务开发项目/用户手册/BI
2.MDX测试环境:
MDX查询分析器
7.2商业分析组
EAS产品事业部->技术平台部->控件开发部->商业分析组,分机:
8019。
成员:
林志贤、郑政芳、郑学明。
欢迎任何形式的交流。
修订记录
作者
时间
说明
郑政芳
2006-03-21
初稿
郑政芳
2006-06-20
增加分析图形
郑政芳
2006-12-01
增加对多语言的支持
郑政芳
2007-05-16
增加对权限的支持