技术开发 频道

开源BI平台Openi的开发数据仓库系统



三、 系统开发

1 .程序运行框架

本系统主要基于Spring Web MVC框架开发,
Action配置文件为WEB-INF\springapp-servlet.xml,
View配置文件为WEB-INF\classes\springapp-views.properties
程序运行框架图如图所示:



程序运行框架图
 
2 .WCF组件
本系统对OLAP的操作主要基于JPivot组件实现,界面展现主要采用WCF组件进行渲染,本节对JPivot组件和WCF组件的使用进行详细介绍。
WCF是一个JSP 自定制的标签库,它主要通过XSLT对XML进行渲染,创建、展现和验证HTML表单。特别地,JPivot组件通过Renderable接口中的render方法生成组件的XML描述信息,再借助于WCF的Render标签可以将XML描述信息转换为HTML发布到用户界面上。以下对WCF部分标签的用法分别予以介绍。
(1).form
此组件采用XML文件的方式来创建HTML表单,该组件在设计阶段并不中见,必须通过WCF render标记进行渲染后方可见。XML文件的格式如下:
 
示例:
<xform style="twocolumn"> <title value="Form Demo"> <imgButton label="Cancel" .../> </title> <textField type="int" modelReference="intValue" label="Count" .../> <checkBox modelReference="nestedBean.boolValue" label="Check Me" .../> </xform>
而它的数据绑定而言,关联到了相关的JavaBean。通过modelReference属性来对bean属性注入值。当然modelReference可以包含EL表达式。
 
示例:
<jsp:useBean id="testbean" class="com.tonbeller.wcf.form.TestBean" scope="session" /> <wcf:form id="formcomp" xmlUri="/WEB-INF/formdemo.xml" model="#{testbean}"/> <form action="formdemo.jsp" method="POST" id="form01"> <wcf:render ref="#{formcomp}" xslUri="/WEB-INF/wcf/wcf.xsl" xslCache="true"/> </form>
示例:
<xform style="twocolumn"> <title value="fmt:fetch.title.from.resource.bundle"> <imgButton id="cancel" src="wcf/form/cancel.png" action="revert" label="Cancel" forward="tabledemo.jsp" handler="com.tonbeller.wcf.form.ButtonHandler"/> </title> <!-- Text control --> <textField id="string" type="string" modelReference="stringValue" label="Text:" value="" title="please enter some text"/> <textField id="int" type="int" modelReference="intValue" label="Integer:" value="" title="please enter an integer"/> <textField id="double" type="double" modelReference="doubleValue" label="Decimal number:" value="" title="please enter a decimal number"/> <textField id="date" type="date" modelReference="dateValue" label="Date:" value="" title="please enter a date"/> <textField id="dateTime" type="dateTime" modelReference="dateTimeValue" label="Date/Time:" value="" title="please enter a date/time"/> <!-- Password control --> <password id="password" type="string" modelReference="password" label="Password:" value=""/> <!-- Text area --> <textArea id="textarea" rows="7" cols="40" type="string" modelReference="textArea" label="Text area:" value="This is a text area"/> <checkBox id="checkbox1" modelReference="checkBox1" label="check box 1"/> <checkBox id="checkbox2" modelReference="checkBox2" label="check box 2"/> <!-- ListBox, single selection --> <listBox1 id="list1" type="int" modelReference="list1" label="List, single selection:"> <listItem id="list1.1" value="1" label="list item 1"/> <listItem id="list1.2" value="2" label="list item 2"/> <listItem id="list1.3" value="3" label="list item 3"/> <listItem id="list1.4" value="4" label="list item 4"/> </listBox1> <!-- ListBox, multiple selection --> <listBoxN id="listN" type="int" modelReference="listN" label="List, multiple selection:"> <listItem id="listN.1" value="1" label="list item 1"/> <listItem id="listN.2" value="2" label="list item 2"/> <listItem id="listN.3" value="3" label="list item 3"/> <listItem id="listN.4" value="4" label="list item 4"/> </listBoxN> <!-- ListBox, single selection, dynamic item list --> <listBox1 id="listbox" type="int" modelReference="dynList" label="List, dynamic content:" handler="com.tonbeller.wcf.form.TestItems"/> <label label="This is a label" value="value attribute goes here"/> <label label="Dynamic label (content from TextArea)" modelReference="textArea"/> <radioButton id="radio1" modelReference="radioButton1" group-id="group1" label="radio button 1"/> <radioButton id="radio2" modelReference="radioButton2" group-id="group1" label="radio button 2"/> <buttons> <button id="cancel" action="revert" label="Cancel" forward="tabledemo.jsp" handler="com.tonbeller.wcf.form.ButtonHandler"/> <button id="revert" action="revert" label="Revert" handler="com.tonbeller.wcf.form.ButtonHandler"/> <button id="validate" action="validate" label="Validate" handler="com.tonbeller.wcf.form.ButtonHandler"/> <button id="ok" action="validate" label="OK" forward="tabledemo.jsp" handler="com.tonbeller.wcf.form.ButtonHandler"/> </buttons> </xform>
3.JPivot组件
JPivot - 是一个JSP 自定制的标签库,可以绘制一个OLAP表格和图表。用户可以执行典型的OLAP操作,如上钻、下钻、切片、和切块等。JPviot组件不能直接产生界面输出,但Pviot所有的可发布的组件都实现了Renderable接口,所有组件的输出信息都是通过Renderable接口中的render方法生成的,然后由WCF标签库的render标签调用JPivot组件的render方法将组件信息输出到界面上。以下对JPivot部分组件的用法分别予以介绍。
(1).chooseQuery
采用queryName属性来创建查询内容。
 
示例:
<jp:mondrianQuery id="query01" queryName="name1"> SELECT ... </jp:mondrianQuery> <jp:mondrianQuery id="query01" queryName="name2"> SELECT ... </jp:mondrianQuery> ... <jp:chooseQuery id="query01" queryName="name1"/>
(2).clickable
使所有的维度成员或级别可以点击,例如产生一个链接。产生的URL地址包含成员的唯一名称。当然,它的动作依赖于sessionParam属性,当它存在时,在新页面展示之前,参数值将写进com.tonbeller.jpivot.param.SessionParamPool。当不存在时,参数值将通过编码附加在超级链接后面。
示例:


 

0
相关文章