birt技术入门准备文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、环境准备(具体可参考仓储(Storage)项目下的示例)
a)eclipse-reporting-helios-SR1-win32(Eclipse可用开发版本)
b)MyEclipse8.0同时也集成了birt开发环境,使用前需先添加birt插件
二、运行环境
a)Ofbiz-1004,首先把framework/example/web-inf 目录下的birt.tld(其为birt各类标
签文件)server-config.wsdd考到所建项目对应文件夹下,同时修改web.xml参考
framework/example/web-inf把此目录下的所有birt相关考到对应项目web.xml中。
b)为ofbiz项目导入
ofbiz10.04\framework\birt\lib\platform\plugins\org.mozilla.rhino_1.7.1.v20090521\lib
下的js.jar
三、birt报表制作(首先新建一个birt报表)
a)jdbc数据源
i.右键新建数据源
选中jdbc数据源
然后根据你的数据库条件建立数据库连接就可以了,你可以根据数据源创建数据集,利用sql语句进行数据集设置(网上这种参考示例比较多,可自行参考)
b)Script数据源
如上,选中script数据源就可以了
新建数据集(inStorage),你可以再创建数据集时添加其参数,也可以先直接创建数据集然后在添加参数。
c)设计报表
新建一个table,直接拖来就行,设定其行列并关联其相关数据集,或可直接把数据集拖入面板里,其会自动生成与数据集对应的table
拖动数据集生成的table
手动创建的table
添加表头(右键插入lable或text;输入相应的表头名字)插入对应数据(右键插入data)
可以点击fx
选中Available Data Sets 然后选择你创建的数据集,你所选的字段名字,编辑data
的Column Binding Name ,Display Name使其与数据集字段对应。这样报表的前期
制作基本就完成了。
d)数据关联
点击面板空白区域,点击script
添加需引用的外部接口
Eg:
importPackage(.ofbiz.base.util);importPackage(Packages.or g.ofbiz.storage.product);importPackage(.sf.json);importPa ckage( ng );importPackage( Packages.javax.servlet.htt p );importPackage( .xoetrope.optional.scripts);importPack age( .ofbiz.entity.condition);
module = "inStorage.rptdesign";
e)点击数据集,在open里进行如下编辑(注意,所有变量声明不加前缀,birt会自动
为其匹配)
inStorageDetails = null;products=null;expr=null;
try {
inStorageDetails = InStorageReport.getInStorageConditions(delegator);
} catch (e) {
Debug.logError(e, module);
}
totalRow = 0;
countOfRow = 0;
if (inStorageDetails) {
totalRow = inStorageDetails.size();
}
f)然后在fecth下进行如下编辑(其可引入你提供的接口方法,web页面传参可用
script Session处理)
if (countOfRow == totalRow) return false;
row["companyName"] = Session.getSession().getAttribute("companyName"); row["startDate"] =
Session.getSession().getAttribute("startDate").substring( 0 , 10 );
row["endDate"] =
Session.getSession().getAttribute("endDate").substring( 0 , 10 ); row["statistics"] =
Session.getSession().getAttribute("userLoginName");
inStorageDetail = inStorageDetails.get(countOfRow);
productId = inStorageDetail.getString("productId");
calculatMode = inStorageDetail.getString("calculatMode");
if(calculatMode.equals("0")){
calculatMode1="过磅";
}else{
calculatMode1="理计";
}
realityNum = inStorageDetail.getString("realityNum");
nUomId = inStorageDetail.getString("nUomId");
realityWeight = inStorageDetail.getString("realityWeight"); wUomId = inStorageDetail.getString("wUomId");
System.out.println(productId);
products = Product.getProductsById(productId);
jsonObj1 = JSONObject.fromObject(products);
productName = jsonObj1.getString("name1200M");
productType = jsonObj1.getString("name1300M");
productGrain = jsonObj1.getString("name1400M");
productVender = jsonObj1.getString("name1500M");
row["checkAccepBillNo"] = checkAccepBillNo;
row["productVender"] = productVender;
row["checkTime"] = checkTime.substring( 0 , 10 );
row["hoistingMemberId"] = hoistingMemberId;
row["remarks"] = remarks;
row["calculatMode"] = calculatMode1;
row["realityNum"] = realityNum;
row["nUomId"] = nUomId;
row["realityWeight"] = realityWeight;
row["wUomId"] = wUomId;
countOfRow ++;
row["countNum"] = Session.getSession().getAttribute("num");
row["countWeight"] = Session.getSession().getAttribute("wht"); return true;
g)Birt标签访问
编辑完报表后为其准备运行环境,可用birt标签处理
首先引入birt.tld文件