美文网首页报表开发、图表开发与数据分析
报表引擎API开发入门— EJB程序数据源

报表引擎API开发入门— EJB程序数据源

作者: 帆软 | 来源:发表于2015-09-01 11:03 被阅读60次

我们前面讲了几个数据源,今天我们来讲一下EJB数据源,这篇讲完我们数据源这部分就讲完了。数据连接不需要直接访问数据库,而是使用EJB做为数据源。FR通过定义程序数据集使用EJB的相关类获取到EJB数据源,然后转为我们里面的二维表作为报表数据源使用,进行展示。例如如下获取到ejb数据所做的模板。

一、 实现原理

FineReport报表的数据来源可以是任何类型的数据,因为FineReport是通过AbstractTableData抽象类来读取数据源的,因此用户只要实现了AbstractTableData抽象类,也就可以用自定义类型的程序数据集,FineReport报表引擎就能够读取定义的数据源作为报表数据源使用。AbstractTableData抽象类主要有5个方法,具体使用可参考报表引擎API开发入门—简单程序数据集。EJB程序数据源准备数据使用方法init(),获取到ejb的javaBean,从而保存数据到ArrayList中。

二、 实现步骤

2.1 定义程序数据源

定义DataModelDemo这个类代码如下:

package com.fr.data;

import javax.naming.*;

import javax.ejb.*;

import java.rmi.*;

import java.util.*;

import com.fr.data.AbstractTableData;

import examples.ejb.ejb20.basic.beanManaged.*;

public class DataModelDemo extends AbstractTableData {

private String[] columnNames;

private ArrayList valueList = null;

public DataModelDemo() {

String[] columnNames = { "Name", "Score" };

this.columnNames = columnNames;

}

// 实现其他四个方法

public int getColumnCount() {

return columnNames.length;

}

public String getColumnName(int columnIndex) {

return columnNames[columnIndex];

}

public int getRowCount() {

init();

return valueList.size();

}

public Object getValueAt(int rowIndex, int columnIndex) {

init();

return ((Object[]) valueList.get(rowIndex))[columnIndex];

}

// 准备数据

public void init() {

// 确保只被执行一次

if (valueList != null) {

return;

}

// 保存得到的结果集

valueList = new ArrayList();

Context ctx = null;

Account ac = null;

AccountHome home = null;

try {

// Contact the AccountBean container (the "AccountHome") through

// JNDI.

ctx = new InitialContext();

home = (AccountHome) ctx

.lookup("java:/comp/env/BeanManagedAccountEJB");

double balanceGreaterThan = 100;

Collection col = home.findBigAccounts(balanceGreaterThan);

if (col != null) {

// 用对象保存数据

Object[] objArray = null;

Iterator iter = col.iterator();

while (iter.hasNext()) {

Account bigAccount = (Account) iter.next();

objArray = new Object[2];

objArray[0] = bigAccount.getPrimaryKey();

objArray[1] = new Double(bigAccount.balance());

// 在valueList中加入这一行数据

valueList.add(objArray);

}

}

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

注:使用之前需要先导入ejb的jar包

2.2 编译程序数据源

将编译后的DataModelDemo.class放到项目的WEB-INF下面的classes目录下,因为DataModelDemo.java属于包com.fr.data,所以DataModelDemo.class需要放到classes\com\fr\data目录下。

2.3 配置程序数据源

新建报表,在报表数据集中新建程序数据源,选择我们定义好的程序数据集,如下图,名字可以自定义,如Pro。

2.4 使用程序数据源

配置好程序数据源后便可以使用定义的Pro程序数据集了,与其他类型的数据集使用方法是相同的,可以通过拖拽方法实现单元格数据列绑定。如下图

保存模板到ejb项目环境下,启动Examples Server服务器,预览模板就可以成功访问到模板了!

相关文章

  • 报表引擎API开发入门— EJB程序数据源

    我们前面讲了几个数据源,今天我们来讲一下EJB数据源,这篇讲完我们数据源这部分就讲完了。数据连接不需要直接访问数据...

  • 报表引擎API开发入门—带参程序数据集

    我们今天又来讲讲报表开发的事,上周开的这个系列入门文章也三四天了,浏览量不佳小编甚是悲伤啊,希望大家多多支持我! ...

  • BIRT报表

    1、添加数据源相关依赖包 2、报表开发设计 调出报表相关工具 数据源配置 创建报表显示数据 编写sql 如选择da...

  • Book EJB从入门到放弃:

    Book EJB从入门到放弃: 注意: 我们应该使用stateless EJB bean 来实现Web服务,而不是...

  • JimuReport积木报表 — API数据源报表制作

    积木报表 ,一个开源免费的报表工具,像搭建积木一样在线设计报表!功能涵盖数据报表设计、打印设计、图表设计、大屏设计...

  • 微信小程序

    微信小程序入门 入门简易教程 小程序开发流程注册小程序->代码开发->提审->上线/审核未通过 开发者工具左侧模拟...

  • 脚本引擎执行js代码

    Java脚本API为开发者提供如下功能:-获取脚本程序输入,通过脚本引擎运行脚本并返回结果,这是最核心的接口。注意...

  • 什么是报表的多样性数据源问题?如何解决?

    在报表开发早期,报表连接的数据源基本只有关系数据库,而且经常只有一种或者只有一个数据库。 但今天就不一样了,数据源...

  • 常用程序类型

    报表程序 1.工具报表Query 工具报表Query适用于简单的查询报表开发,无需具有ABAP编程知识,但...

  • 【总结】2017.01.09

    2017.01.09 - 计划 微信小程序尝试实现图形报表 熟悉小程序的几个地图API. 微信小程序仿365外勤-...

网友评论

    本文标题:报表引擎API开发入门— EJB程序数据源

    本文链接:https://www.haomeiwen.com/subject/igclcttx.html