[size=3][b]新一代报表数据模型[/b][/size]
[b]Jatools Report Data Model[/b]

[size=4][size=5][b]概述[/b][/size][/size]

经过公司同仁的共同努力,历时两年的研发,杰表.2008今天终于和大家见面了。杰表.2008几乎重写了杰表原来的框架,特别是引入了dom技术、样式布局技术,使杰表应对中国式复杂报表需求更加游刃有余。现在我着重向大家介绍杰表2008的数据模型,欢迎大家提供意见与建议。

杰表2008是目前唯一使用dom模型的国产java报表工具,较之其他java报表工具模型,特点有:

1.杰表报表数据模型可以整合的数据类型有jdbc数据集,csv数据集,javabean数据集,xml 数据集。javabean集合,数组等。

2.杰表报表数据模型采用DOM形式来组织报表数据,将类型不同,数量若干的报表数据,有机地整合到一个可视化的DOM树上。并采用数据与视图相分离的方式,提高数据的可重用性和性能。

3.杰表数据模型采用XPath引用模型中的数据。您也可以借助参数或脚本,动态地实现报表数据的排序及过滤。

[size=4][size=3][b]模型与布局基础[/b][/size][/size]

杰表数据模型采用树形结构来表示数据,如下(图一)所示:




这是一个树形结构的数据,左边root是一个根节点,root有四个子节点,表示四个省/市的数据,上海市节点有三个表示区信息的子节点。

我们需要使用这个数据模型,做成下(图二)所示的报表模板


由图可见,最外面的报表对象A有两个子对象B,C,另外,C对象又包含一个D对象,A,C是容器对象,被分别被绑定到/root/省,区B,D是文本对象,用于显示省,区的信息。

杰表引擎将根据上述的数据模型和模板定义,输出如下报表:(图三)

 
杰表引擎是如何根据数据模型,输出这个报表的呢?我们对照下图,来描述一下这个报表的生成过程。(图四)
 
 
1.准备输出A对象;
2.根据A对象的绑定属性 /root/省,从数据模型中,找到符合该路径的所有节点,由模型设置可知,有四个节点符合条件,分别是北京,天津,上海,台湾;
3.将北京节点作为当前数据结点;打印A对象的子部件B,B要求显示当前节点的key属性,当前节点是北京,所以输出北京;
4.准备输出A对象的另一个子部件C,C的绑定属性是区,意思是取得当前数据节点下的名称为区的子节点,当前节点下,根本不存在任何子节点,所以返回为空,C不打印;
5.将天津节点作为当前数据节点,再一次输出A对象,情况类似北京节点;
6.将上海节点作为当前节点,输出A对象,输出A对象的子部件B;
7.准备输出C对象,当前节点(上海)存在名称为区的三个子节点;
8.将浦东节点,作为当前节点,输出D,由是,D显示当前节点key值;
9.同步骤8,分别显示黄浦,徐汇两节点;
10.上海节点输出结束;
11.同北京节点类似,输出台湾节点;

[b]有关杰表更多介绍,参见 http://www.jatools.com/product/product.htm[/b]

(图一)[img]http://www.jatools.com/doc/model2.1.gif[/img]

(图二)[img]http://www.jatools.com/doc/model2.2.gif[/img]

(图三)[img]http://www.jatools.com/doc/model2.3.gif[/img]

(图四)[img]http://www.jatools.com/doc/model2.4.gif[/img]