JPivot - 是一个自定义的JSP的标签库,可以用来在JSP页面中嵌入OLAP表格和图表。用户可以执行典型的OLAP导航,如下钻,切片和切块。它使用Mondrian 作为其OLAP服务器。 相关介绍性网址: JPivot Home: http://JPivot.SourceForge.net Mondrian Home: http://mondrian.SourceForge.net JPivot 的MVC结构 从Web应用的架构来讲,JPivot完全遵循MVC结构,甚至十分苛刻。为了减少对特定第三方框架的以来,JPivot自己实现了MVC框架,但它可以与其它MVC框架共同使用。 1.模型Model: 2.视图View: 3.控制器Controller: ![]() 在JPivot中,所有的UI控件操作都使用DispatcherSupport来维护处理该控件中UI交互的一个或多个Handler(比如表示表格中扩展钻取的“+”图标的DrillExpandUI类中的dispatcher属性与ExpandHandler内部类),而每个UI控件的dispatcher又在其父控件的dispatcher中注册。JPivot根据客户端操作所请求的URL在以WfcController为根的RequestFileter树中查找对应的处理器。
Decorator模式
§ OlapModelProxy对在HttpSession中唯一添加OlapModel提供了支持,并限制了其它对象对OlapModel的初始化与重置操作;增加了OlapModel在改变时通知注册的Listener所发生的改变这一职责。§ CachingOlapModel为OlapModel提供了在一定的周期内(Model没有发生改变时)缓存Result结果集的职责。PartBuilder类与PartBuilderDecorator类构成Decorator模式,具体的装饰器比较多,但装饰器都是针对特定的Part来装饰的。通过继承这些装饰器,可以为构建Table的各个部分(行、列、单元格、切片)的xml进行。JPivot结合Apache Digester,使我们可以不用修改任何现有代码,仅需实现这些装饰器及对应TableExtension就可以对所生成的Olap Pivot Table在UI表现上进行扩充,并且可以增加或修改对相应的交互操作进行处理的Handler。
![]() Observer模式 在JPivot中,大量使用Observer模式解除视图与模型之间的耦合,处理两者之间的依赖关系及内容与表示同步。 1、Model类及其子类(JPivot自定义Olap 模型的Mondrian实现、xml/a实现)与ModelChangeListener及其子类(表格、钻取/旋转/排序排名等、图形、成员树等展示控件)构成Observer模式(严格的说应该是Listener模式),作用是在模型发生改变时,同步更新所有的UI控件展示。 ![]() |
|