﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-hengheng123456789-文章分类-BI</title><link>http://www.blogjava.net/hengheng123456789/category/14962.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 17:06:19 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 17:06:19 GMT</pubDate><ttl>60</ttl><item><title>Pentaho之Kettle</title><link>http://www.blogjava.net/hengheng123456789/articles/91158.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Sun, 31 Dec 2006 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/91158.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/91158.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/91158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/91158.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/91158.html</trackback:ping><description><![CDATA[
		<p>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana">Kettle</span>
				<span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 宋体">家族目前包括</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana">4</span>
				<span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 宋体">个产品：</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana">Spoon</span>
				<span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 宋体">、</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana">Pan</span>
				<span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 宋体">、</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana">CHEF</span>
				<span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 宋体">、</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana">Kitchen</span>
				<span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 宋体">。</span>
		</p>
		<p>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana">
				</span>
		</p>
		<p>
				<b>
						<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #cc0000; FONT-FAMILY: Verdana">SPOON </span>
				</b>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">允许你通过图形界面来设计</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">ETTL</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">转换过程（</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">Transformation</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">）。例如，从一个</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">SAP</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">系统抽取信息，并把这些信息存储到一个文本文件里的转换任务如下：</span>
		</p>
		<p>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Verdana">
						<img alt="spoonSample.GIF" src="http://blog.itpub.net//resserver.php?blogId=2570&amp;resource=spoonSample.GIF" />
				</span>
		</p>
		<br clear="all" />
		<p>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">
				</span>
		</p>
		<p>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">
				</span>
		</p>
		<p>
				<b>
						<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #cc0000; FONT-FAMILY: Verdana">PAN </span>
				</b>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">允许你批量运行由</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">Spoon</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">设计的</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">ETL</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">转换</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"> (</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">例如使用一个时间调度器</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">)</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">。</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">Pan</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">是一个后台执行的程序，没有图形界面。</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">
						<span>
						</span>
				</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">想要详细了解</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">
						<span lang="FR-BE">Pan</span>
				</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">，请查看</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">
						<span lang="FR-BE">
								<a href="http://www.kettle.be/docs/Pan-2.1.pdf">
										<font color="#000080">Pan documentation</font>
								</a> (PDF link).</span>
				</span>
		</p>
		<p>
				<b>
						<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #cc0000; FONT-FAMILY: Verdana">CHEF </span>
				</b>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">允许你创建任务（</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">Job</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">）。</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">
						<span>
						</span>
				</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">任务通过允许每个转换，任务，脚本等等，更有利于自动化更新数据仓库的复杂工作。任务通过允许每个转换，任务，脚本等等。任务将会被检查，看看是否正确地运行了。</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">(</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">下面是一个</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">Chef</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">的任务图</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">)</span>
		</p>
		<p>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Verdana">
						<img alt="kettle的图形操作界面" src="http://blog.itpub.net//resserver.php?blogId=2570&amp;resource=kettle.JPG" />
				</span>
		</p>
		<br clear="all" />
		<p>
				<b>
						<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #cc0000; FONT-FAMILY: Verdana">
						</span>
				</b>
		</p>
		<p>
				<span lang="FR-BE">
				</span>
		</p>
		<p>
				<span lang="FR-BE">
				</span>
		</p>
		<p>
				<span lang="FR-BE">
				</span>
		</p>
		<p>
				<span lang="FR-BE">Job</span>
				<span style="FONT-FAMILY: 宋体">与</span>
				<span lang="FR-BE">Transformation</span>
				<span style="FONT-FAMILY: 宋体">的差别是：</span>
				<span lang="FR-BE">Transformation</span>
				<span style="FONT-FAMILY: 宋体">专注于数据的</span>
				<span lang="FR-BE">ETL</span>
				<span style="FONT-FAMILY: 宋体">，而</span>
				<span lang="FR-BE">Job</span>
				<span style="FONT-FAMILY: 宋体">的范围比较广，可以是</span>
				<span lang="FR-BE">Transformation</span>
				<span style="FONT-FAMILY: 宋体">，也可以是</span>
				<span lang="FR-BE">Mail</span>
				<span style="FONT-FAMILY: 宋体">、</span>
				<span lang="FR-BE">SQL</span>
				<span style="FONT-FAMILY: 宋体">、</span>
				<span lang="FR-BE">Shell</span>
				<span style="FONT-FAMILY: 宋体">、</span>
				<span lang="FR-BE">FTP</span>
				<span style="FONT-FAMILY: 宋体">等等，甚至可以是另外一个</span>
				<span lang="FR-BE">Job</span>
				<span style="FONT-FAMILY: 宋体">。</span>
		</p>
		<p>
				<span lang="FR-BE">
				</span>
		</p>
		<p>
				<span lang="FR-BE">
				</span>
		</p>
		<p>
				<b>
						<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: #cc0000; FONT-FAMILY: Verdana">KITCHEN </span>
				</b>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">允许你批量使用由</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">Chef</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">设计的任务</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"> (</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">例如使用一个时间调度器</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana">)</span>
				<span style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体">。</span>
				<span lang="FR-BE" style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Verdana">KITCHEN</span>
				<span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 宋体">也是一个后台运行的程序。</span>
		</p>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/91158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-12-31 14:42 <a href="http://www.blogjava.net/hengheng123456789/articles/91158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之JPivot</title><link>http://www.blogjava.net/hengheng123456789/articles/85198.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Sun, 03 Dec 2006 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/85198.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/85198.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/85198.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/85198.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/85198.html</trackback:ping><description><![CDATA[JPivot - <span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一个自定义的</span><font face="Times New Roman">JSP</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的标签库，可以用来在</span><font face="Times New Roman">JSP</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">页面中嵌入</span><font face="Times New Roman">OLAP</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表格和图表。用户可以执行典型的</span><font face="Times New Roman">OLAP</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">导航，如下钻，切片和切块。它使用</span><font face="Times New Roman">Mondrian </font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作为其</span><font face="Times New Roman">OLAP</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器。<br /><br /><h3 class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 14pt">JPivot </span><span lang="ZH-CN" style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: ">的</span><span style="FONT-SIZE: 14pt">MVC</span><span lang="ZH-CN" style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: ">结构</span><span style="FONT-SIZE: 14pt"></span></h3><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">从</span><font face="Times New Roman">Web</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">应用的架构来讲，</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">完全遵循</span><font face="Times New Roman">MVC</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">结构，甚至十分苛刻。为了减少对特定第三方框架的以来，</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">自己实现了</span><font face="Times New Roman">MVC</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">框架，但它可以与其它</span><font face="Times New Roman">MVC</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">框架共同使用。</span></font></p><h4 class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">1.JPivot模型</span>Model:</h4><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">的</span><font face="Times New Roman">Model</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">部分处理</span><font face="Times New Roman">Olap</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">的模型定义，查询及结果集；</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">自己定义了一个</span><font face="Times New Roman">Olap</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">模型，然后分别提供了</span><font face="Times New Roman">Mondrian</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">及</span><font face="Times New Roman">XML/A</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">的</span><font face="Times New Roman">JPivot model</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">实现，这两个实现又通过</span><font face="Times New Roman">Adapter</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">与</span><font face="Times New Roman">Mondrian</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">系统及</span><font face="Times New Roman">xml/a</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">系统交互。</span></font></p><h4 class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">2.JPivot视图</span>View:</h4><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">的</span><font face="Times New Roman">View</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">部分比较丰富，包括</span><font face="Times New Roman">JPivot taglib</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">、</span><font face="Times New Roman">wfc taglib</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">定义及相关的</span><font face="Times New Roman">UI Component</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">助手类。用户可以在自己的</span><font face="Times New Roman">JSP</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">中使用</span><font face="Times New Roman">tag</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">构建新的视图。与其它</span><font face="Times New Roman">Web</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">框架不同的是</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">在该层次提供了大量的</span><font face="Times New Roman">Web</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">组件，类似于</span><font face="Times New Roman">JSF</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">那样。</span></font></p><h4 class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">3.JPivot控制器</span>Controller:</h4><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">的控制器部分非常有特色。在</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">中，使用单件模式</span><font face="Times New Roman">(Singleton)</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">在每个用户的</span><font face="Times New Roman">HttpSession</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">中维护唯一一个</span><font face="Times New Roman">WcfController</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">对象，然后以此对象为根，使用</span><font face="Times New Roman">Composition</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">模式，将所有的控件请求处理的</span><font face="Times New Roman">RequestFilter</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">组织成树形结构。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600" /><stroke joinstyle="miter" /><formulas /><f eqn="if lineDrawn pixelLineWidth 0" /><f eqn="sum @0 1 0" /><f eqn="sum 0 0 @1" /><f eqn="prod @2 1 2" /><f eqn="prod @3 21600 pixelWidth" /><f eqn="prod @3 21600 pixelHeight" /><f eqn="sum @0 0 1" /><f eqn="prod @6 1 2" /><f eqn="prod @7 21600 pixelWidth" /><f eqn="sum @8 21600 0" /><f eqn="prod @7 21600 pixelHeight" /><f eqn="sum @10 21600 0" />PATH o:connecttype="rect" gradientshapeok="t" o:extrusionok="f" /&gt;<lock aspectratio="t" v:ext="edit" />SHAPE id=_x0000_i1025 style="WIDTH: 336.75pt; HEIGHT: 187.5pt; mso-position-horizontal-relative: text; mso-position-vertical-relative: text" type="#_x0000_t75" o:allowoverlap="f" /&gt;<imagedata o:title="jpivotMVC" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" /><font size="3"></font>/SHAPE /&gt;</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">在</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">中，所有的</span><font face="Times New Roman">UI</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">控件操作都使用</span><font face="Times New Roman">DispatcherSupport</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">来维护处理该控件中</span><font face="Times New Roman">UI</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">交互的一个或多个</span><font face="Times New Roman">Handler</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">（比如表示表格中扩展钻取的“</span><font face="Times New Roman">+</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">”图标的</span><font face="Times New Roman">DrillExpandUI</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">类中的</span><font face="Times New Roman">dispatcher</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">属性与</span><font face="Times New Roman">ExpandHandler</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">内部类），而每个</span><font face="Times New Roman">UI</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">控件的</span><font face="Times New Roman">dispatcher</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">又在其父控件的</span><font face="Times New Roman">dispatcher</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">中注册。</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">根据客户端操作所请求的</span><font face="Times New Roman">URL</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">在以</span><font face="Times New Roman">WfcController</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">为根的</span><font face="Times New Roman">RequestFileter</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">树中查找对应的处理器<br /><br /><strong>JPivot设计模式</strong><br /><br />在JPivot中使用了大量的设计模式(Design Patterns)，本文对这些设计模式实例进行简单的介绍。个人认为通过分析这些实际的系统来学习设计模式所得到的体会还是比较深刻的。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"></p><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"></p><h3 class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">一、Decorator装饰<span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">模式</span></h3><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l1 level1 lfo1; tab-stops: list 36.0pt"><font size="3"><font face="Times New Roman">1. OlapModel</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">类与</span><font face="Times New Roman">OlapModelDecorator</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">类构成</span><font face="Times New Roman">Decorator</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">模式，</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">基于</span><font face="Times New Roman">OlapModelDecorator</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">为</span><font face="Times New Roman">OlapModel</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">提供了两种装饰器：</span></font></p><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 54pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt" align="left"><font size="3"><span style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">§<span style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">  </span></span></span><font face="Times New Roman">OlapModelProxy</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">对在</span><font face="Times New Roman">HttpSession</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">中唯一添加</span><font face="Times New Roman">OlapModel</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">提供了支持，并限制了其它对象对</span><font face="Times New Roman">OlapModel</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">的初始化与重置操作；增加了</span><font face="Times New Roman">OlapModel</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">在改变时通知注册的</span><font face="Times New Roman">Listener</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">所发生的改变这一职责。</span></font></p><p align="left"><font size="3"></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 54pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt" align="left"><font size="3"><span style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">§<span style="FONT-WEIGHT: normal; FONT-SIZE: 7pt; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal">  </span></span></span><font face="Times New Roman">CachingOlapModel</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">为</span><font face="Times New Roman">OlapModel</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">提供了在一定的周期内（</span><font face="Times New Roman">Model</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">没有发生改变时）缓存</span><font face="Times New Roman">Result</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">结果集的职责。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 54pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt" align="left"><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 54pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt"><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 54pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt"><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "><strong><img alt=" " src="http://ardorsoft.blogchina.com/inc/JpivotDecorator1.jpg" onload="function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA; img_auto_size(this,450,true);&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}" align="baseline" /></strong></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 54pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt"><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "><strong></strong></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 54pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt"><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "><strong></strong></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 54pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt"><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 54pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt"><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "></span></font></p><font size="3"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><font face="Times New Roman">2.  PartBuilder</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">类与</span><font face="Times New Roman">PartBuilderDecorator</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">类构成</span><font face="Times New Roman">Decorator</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">模式，具体的装饰器比较多，但装饰器都是针对特定的</span><font face="Times New Roman">Part</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">来装饰的。通过继承这些装饰器，可以为构建</span><font face="Times New Roman">Table</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">的各个部分（行、列、单元格、切片）的</span><font face="Times New Roman">xml</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">进行。</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">结合</span><a href="http://jakarta.apache.org/commons/digester/"><font face="Times New Roman" color="#1d58d1">Apache </font></a><wrapblock /><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600" /><stroke joinstyle="miter" /><formulas /><f eqn="if lineDrawn pixelLineWidth 0" /><f eqn="sum @0 1 0" /><f eqn="sum 0 0 @1" /><f eqn="prod @2 1 2" /><f eqn="prod @3 21600 pixelWidth" /><f eqn="prod @3 21600 pixelHeight" /><f eqn="sum @0 0 1" /><f eqn="prod @6 1 2" /><f eqn="prod @7 21600 pixelWidth" /><f eqn="sum @8 21600 0" /><f eqn="prod @7 21600 pixelHeight" /><f eqn="sum @10 21600 0" />PATH o:connecttype="rect" gradientshapeok="t" o:extrusionok="f" /&gt;<lock aspectratio="t" v:ext="edit" />SHAPE id=_x0000_s1026 style="MARGIN-TOP: 0px; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 0px; WIDTH: 346.5pt; POSITION: absolute; HEIGHT: 254.6pt; TEXT-ALIGN: left; mso-position-horizontal-relative: text; mso-position-vertical-relative: text" type="#_x0000_t75" /&gt;<font face="Times New Roman"><imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.emz" /><wrap type="topAndBottom" /></font>/WRAPBLOCK /&gt;<br style="mso-ignore: vglayout" clear="all" /><span><span style="FONT-SIZE: 10pt; mso-no-proof: yes"><a href="http://jakarta.apache.org/commons/digester/"><span style="FONT-SIZE: 12pt; mso-no-proof: no"><font face="Times New Roman" color="#1d58d1">Digester</font></span></a></span>，使我们可以不用修改任何现有代码，仅需实现这些装饰器及对应</span><font face="Times New Roman">TableExtension，并在config.xml中注册</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">就可以对所生成的</span><font face="Times New Roman">Olap Pivot Table</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">在</span><font face="Times New Roman">UI</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">表现上进行扩充，并且可以增加或修改对相应的交互操作进行处理的</span><font face="Times New Roman">Handler</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "><img alt=" " src="http://ardorsoft.blogchina.com/inc/JPivotDecorator2.jpg" onload="function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA; img_auto_size(this,450,true);&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}" align="baseline" /></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "></span></p><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: "></span></p><p> </p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><font face="Times New Roman">3. JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">使用</span><font face="Times New Roman">wfc.tree</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">包对成员及层次的树形展示进行支持。</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">定义了一些装饰来增加树形控件模型的职责。其中：</span></p><ul><li><div><font face="Times New Roman">GroupingTreeModelDecorator</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">装饰增加的职责是在子成员数目比较大的时候，可以分组显示子成员以提高效率。</span></div></li><li><div><font face="Times New Roman">OptimizingTreeModelDecorator</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">装饰增加的职责是可以根据过滤器（</span><font face="Times New Roman">NodeFilter</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">）动态的隐藏掉不满足过滤条件的分支及节点。</span></div></li><li><div><font face="Times New Roman">SimpleOptimizingTreeModelDecorator</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">装饰增加的职责是当树只有一个顶级根节点的时候，不显示该根节点，而是直接显示第二层的子节点，这样用户就不用每次都要做无谓的展开操作。</span></div></li><li><div><font face="Times New Roman">CachingTreeModelDecorator</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">装饰增加的职责是当用户在树形中执行展开等浏览操作时，保存用户每次操作请求的数据，形成</span><font face="Times New Roman">TreeModel</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">节点的缓存，以提高以后再次操作的相应效率。</span></div></li></ul><p><img alt=" " src="http://ardorsoft.blogchina.com/inc/JpivotDecorator3.jpg" onload="function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA; img_auto_size(this,450,true);&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}" align="baseline" />   </p><p></p><h3 class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">二、Observer观察者模式</span></h3><font size="3"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">    在</span><font face="Times New Roman">JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">中，大量使用</span><font face="Times New Roman">Observer</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">模式解除视图与模型之间的耦合，处理两者之间的依赖关系及内容与表示同步。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">    </span><font face="Times New Roman">Model</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">类及其子类</span><font face="Times New Roman">(JPivot</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">自定义</span><font face="Times New Roman">Olap </font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">模型的</span><font face="Times New Roman">Mondrian</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">实现、</span><font face="Times New Roman">xml/a</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">实现</span><font face="Times New Roman">)</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">与</span><font face="Times New Roman">ModelChangeListener</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">及其子类（表格、钻取</span><font face="Times New Roman">/</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">旋转</span><font face="Times New Roman">/</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">排序排名等、图形、成员树等展示控件）构成</span><font face="Times New Roman">Observer</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">模式（严格的说应该是</span><font face="Times New Roman">Listener</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">模式），作用是在模型发生改变时，同步更新所有的</span><font face="Times New Roman">UI</font><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">控件展示。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt"><strike><img alt=" " src="http://ardorsoft.blogchina.com/inc/JpivotObserver1.jpg" onload="function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA;function anonymous()&#xD;&#xA;{&#xD;&#xA; img_auto_size(this,450,true);&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}&#xD;&#xA;}" align="baseline" /></strike></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"></p></font></span></span></font><br /></span><img src ="http://www.blogjava.net/hengheng123456789/aggbug/85198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-12-03 17:22 <a href="http://www.blogjava.net/hengheng123456789/articles/85198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之mondrian“艺术家”</title><link>http://www.blogjava.net/hengheng123456789/articles/84890.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 01 Dec 2006 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/84890.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/84890.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/84890.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/84890.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/84890.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、引言																								Mondrian, 						蒙得里安?皮特						1872-1944						荷兰画家，作品以交错的三原色为基色的垂直线条和平面为特点，他的著作包括						新造型主义						(1920						年），对抽象艺术的发展曾经产生很深影响。金山词霸如是说。							...&nbsp;&nbsp;<a href='http://www.blogjava.net/hengheng123456789/articles/84890.html'>阅读全文</a><img src ="http://www.blogjava.net/hengheng123456789/aggbug/84890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-12-01 16:55 <a href="http://www.blogjava.net/hengheng123456789/articles/84890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之mondrian的安装</title><link>http://www.blogjava.net/hengheng123456789/articles/83846.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Mon, 27 Nov 2006 10:04:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/83846.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/83846.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/83846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/83846.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/83846.html</trackback:ping><description><![CDATA[1.下载:<a href="http://prdownloads.sourceforge.net/mondrian/mondrian-2.0.0.zip?download"><font color="#003399">mondrian-2.0.0.zip</font></a> ,解压至D:\Mondrian<br /><br />2. 把lib\mondrian.war解压到  {TOMCAT_HOME}\webapps\mondrain<br /><br />3. Mondrian demo中数据库FoodMart默认的是access,  要移植到mysql中，用demo\FoodMartCreateData.sql,<br />在命令行窗口中输入如下脚本：<br />java -cp "lib\mondrian.jar;lib\log4j-1.2.9.jar;lib\eigenbase-xom.jar;lib\eigenbase-resgen.jar;lib\eigenbase-properties.jar;lib\mysql-connector-java-3.1.7-bin.jar" mondrian.test.loader.MondrianFoodMartLoader -tables -data -indexes  -jdbcDrivers="com.mysql.jdbc.Driver" -inputFile=demo\FoodMartCreateData.sql -outputJdbcURL="jdbc:mysql://localhost/foodmart?user=root&amp;password=" <br />注意：当前路径是E:\workspace\Mondrian.  运行需要的部分类包在mondrian-2.0.0-src.zip的lib目录中，需要加入mysql jdbc 驱动.  log4j-1.2.9.jar里面如果加入log4j.properties文件，可以查看运行时候的打印信息，否则看不到打印信息。<br /><br />4. 在{TOMCAT_HOME}\webapps\mondrain目录, <br />      打开mondrian.properties, 添加下面属性mondrian.jdbcDrivers=com.mysql.jdbc.Driver<br />       打开WEB-INF\web.xml, 修改2处connectString属性, <font face="Verdana">Jdbc=jdbc:mysql://localhost/foodmart?user=root&amp;#38;password=;JdbcDrivers=com.mysql.jdbc.Driver; <br /></font>       编辑<font face="Courier New">WEB-INF\queries下面的 <code>fourheir</code>, <code>mondrian</code>, <code>colors</code> and <code>arrows 4个jsp文件.<br /></code></font>      <font face="Courier New">&lt;jp:mondrianQuery id="query01" jdbcDriver="com.mysql.jdbc.Driver" jdbcUrl="jdbc:mysql://localhost/foodmart?user=root&amp;#38;password=" catalogUri="/WEB-INF/queries/FoodMart.xml"&gt;</font><img src ="http://www.blogjava.net/hengheng123456789/aggbug/83846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-27 18:04 <a href="http://www.blogjava.net/hengheng123456789/articles/83846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之mondrian</title><link>http://www.blogjava.net/hengheng123456789/articles/83629.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Sun, 26 Nov 2006 08:44:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/83629.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/83629.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/83629.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/83629.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/83629.html</trackback:ping><description><![CDATA[
		<p>Mondrian and OLAP<br /><br />   Mondrian 是使用java编写的OLAP引擎，它执行MDX语言描述的查询，可以从关系数据库中获取数据。<br /><br />Online Analytical Processing (OLAP)<br /><br />   OLAP是指实时地分析大数据量，与Online Transaction Processing (OLTP)不同。 </p>
		<table class="grayTable" style="WIDTH: 673px; HEIGHT: 224px" width="673">
				<tbody>
						<tr>
								<td nowrap="">
										<p>
												<i>Year</i>
										</p>
								</td>
								<td align="right" colspan="2">
										<p>
												<b>2000</b>
										</p>
								</td>
								<td align="right" colspan="2">
										<p>
												<b>2001</b>
										</p>
								</td>
								<td align="right" colspan="2">
										<p>
												<b>Growth</b>
										</p>
								</td>
						</tr>
						<tr>
								<td nowrap="">
										<p>
												<i>Product</i>
										</p>
								</td>
								<td align="right">
										<p>
												<b>Dollar sales</b>
										</p>
								</td>
								<td align="right">
										<p>
												<b>Unit sales</b>
										</p>
								</td>
								<td align="right">
										<p>
												<b>Dollar sales</b>
										</p>
								</td>
								<td align="right">
										<p>
												<b>Unit sales</b>
										</p>
								</td>
								<td align="right">
										<p>
												<b>Dollar sales</b>
										</p>
								</td>
								<td align="right">
										<p>
												<b>Unit sales</b>
										</p>
								</td>
						</tr>
						<tr>
								<td align="left">
										<p>
												<b>Total</b>
										</p>
								</td>
								<td align="right">
										<p>$7,073</p>
								</td>
								<td align="right">
										<p>2,693</p>
								</td>
								<td align="right">
										<p>$7,636</p>
								</td>
								<td align="right">
										<p>3,008</p>
								</td>
								<td align="right">
										<p>8%</p>
								</td>
								<td align="right">
										<p>12%</p>
								</td>
						</tr>
						<tr>
								<td align="left">
										<p>
												<b>Books</b>
										</p>
								</td>
								<td align="right">
										<p>$2,753</p>
								</td>
								<td align="right">
										<p>824</p>
								</td>
								<td align="right">
										<p>$3,331</p>
								</td>
								<td align="right">
										<p>966</p>
								</td>
								<td align="right">
										<p>21%</p>
								</td>
								<td align="right">
										<p>17%</p>
								</td>
						</tr>
						<tr>
								<td align="left">
										<p>
												<b>Fiction</b>
										</p>
								</td>
								<td align="right">
										<p>$1,341</p>
								</td>
								<td align="right">
										<p>424</p>
								</td>
								<td align="right">
										<p>$1,202</p>
								</td>
								<td align="right">
										<p>380</p>
								</td>
								<td align="right">
										<p>-10%</p>
								</td>
								<td align="right">
										<p>-10%</p>
								</td>
						</tr>
						<tr>
								<td align="left">
										<p>
												<b>Non-fiction</b>
										</p>
								</td>
								<td align="right">
										<p>$1,412</p>
								</td>
								<td align="right">
										<p>400</p>
								</td>
								<td align="right">
										<p>$2,129</p>
								</td>
								<td align="right">
										<p>586</p>
								</td>
								<td align="right">
										<p>51%</p>
								</td>
								<td align="right">
										<p>47%</p>
								</td>
						</tr>
						<tr>
								<td align="left">
										<p>
												<b>Magazines</b>
										</p>
								</td>
								<td align="right">
										<p>$2,753</p>
								</td>
								<td align="right">
										<p>824</p>
								</td>
								<td align="right">
										<p>$2,426</p>
								</td>
								<td align="right">
										<p>766</p>
								</td>
								<td align="right">
										<p>-12%</p>
								</td>
								<td align="right">
										<p>-7%</p>
								</td>
						</tr>
						<tr>
								<td align="left">
										<p>
												<b>— Greetings cards</b>
										</p>
								</td>
								<td align="right">
										<p>$1,567</p>
								</td>
								<td align="right">
										<p>1,045</p>
								</td>
								<td align="right">
										<p>$1,879</p>
								</td>
								<td align="right">
										<p>1,276</p>
								</td>
								<td align="right">
										<p>20%</p>
								</td>
								<td align="right">
										<p>22%</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p>
				<br />从上表可以看到year和Product为dimensions （维度），measures 为'Unit sales' and 'Dollar sales'。<br /><br />Layers of a Mondrian system<br /><br />   Mondrian OLAP System 包含4个层：<br /><br />   1、the presentation layer<br />         用于描述最终用户所看到的，其表现形式有很多，如：pivot表、pie、line和bar图、maps和动态图。由用户提问，OLAP服务器返回答案。<br />   2、the dimensional layer<br />         这一层解析、验证和执行MDX 查询，首先计算轴，再计算轴上所有单元的值。metadata用于描述空间模型，及空间模型怎样映射到关系模型上。<br />   3、the star layer<br />         它负责维护一个聚合的cache，aggregation 聚合是一些内存中的测量值（cells），及一些维度值。如果请求的cells不在cache中，则aggregation manager 向the storage layer发出请求。<br />   4、and the storage layer<br />         the storage layer为RDBMS。<br /><img height="719" src="http://mondrian.pentaho.org/images/arch_mondrian_v1_lrg.png" width="981" /><br /><br />What is MDX?<br /><br />   'multi-dimensional expressions'为Mondrian执行的查询。<br />   下面为一个基本的查询：<br />SELECT {[Measures].[Unit Sales], [Measures].[Store Sales]} ON COLUMNS,<br />{[Product].members} ON ROWS<br />FROM [Sales]<br />WHERE [Time].[1997].[Q2] <br /><br />What is a schema?<a name="What_is_a_schema"> </a><br /><br /> schema定义了一个多维数据库。它包含一个逻辑模型，由多个cube、hierarchies、members及一个到物理模型的映射组成。<br /> 逻辑模型包含：cubes, dimensions, hierarchies, levels, and members.</p>
		<li>A <dfn>cube</dfn> is a collection of dimensions and measures in a particular subject area. 
</li>
		<li>A <dfn>measure</dfn> is a quantity that you are interested in measuring, for example, unit sales of a product, or cost price of inventory items. 
</li>
		<li>A <dfn>dimension</dfn> is an attribute, or set of attributes, by which you can divide measures into sub-categories. For example, you might wish to break down product sales by their color, the gender of the customer, and the store in which the product was sold; color, gender, and store are all dimensions. <pre>例如：<br />&lt;Schema&gt;<br />  &lt;Cube name="Sales"&gt;<br />    &lt;Table name="sales_fact_1997"/&gt;<br />    &lt;Dimension name="Gender" foreignKey="customer_id"&gt;<br />      &lt;Hierarchy hasAll="true" allMemberName="All Genders" primaryKey="customer_id"&gt;<br />        &lt;Table name="customer"/&gt;<br />        &lt;Level name="Gender" column="gender" uniqueMembers="true"/&gt;<br />      &lt;/Hierarchy&gt;<br />    &lt;/Dimension&gt;<br />    &lt;Dimension name="Time" foreignKey="time_id"&gt;<br />      &lt;Hierarchy hasAll="false" primaryKey="time_id"&gt;<br />        &lt;Table name="time_by_day"/&gt;<br />        &lt;Level name="Year" column="the_year" type="Numeric" uniqueMembers="true"/&gt;<br />        &lt;Level name="Quarter" column="quarter" uniqueMembers="false"/&gt;<br />        &lt;Level name="Month" column="month_of_year" type="Numeric" uniqueMembers="false"/&gt;<br />      &lt;/Hierarchy&gt;<br />    &lt;/Dimension&gt;<br />    &lt;Measure name="Unit Sales" column="unit_sales" aggregator="sum" formatString="#,###"/&gt;<br />    &lt;Measure name="Store Sales" column="store_sales" aggregator="sum" formatString="#,###.##"/&gt;<br />    &lt;CalculatedMember name="Profit" dimension="Measures" formula="[Measures].[Store Sales]-[Measures].[Store Cost]"&gt;<br />      &lt;CalculatedMemberProperty name="FORMAT_STRING" value="$#,##0.00"/&gt;<br />    &lt;/CalculatedMember&gt;<br />  &lt;/Cube&gt;<br />&lt;/Schema&gt; <br /><br /> </pre><pre>MDX查询为：<br /><br /><br />SELECT {[Measures].[Unit Sales], [Measures].[Store Sales]} ON COLUMNS,<br />  {[Time].[1997].[Q1].descendants} ON ROWS<br />FROM [Sales]<br /><br /><br /><br />WHERE [Gender].[F] <br /><br /><br /><br /><table class="grayTable" id="AutoNumber1"><tbody><tr><td align="left"><code>[Time]</code></td><td><code>[Measures].[Unit Sales]</code></td><td><code>[Measures].[Store Sales]</code></td></tr><tr><td align="left"><code>[1997].[Q1]</code></td><td>0</td><td>0</td></tr><tr><td align="left"><code>[1997].[Q1].[Jan]</code></td><td>0</td><td>0</td></tr><tr><td align="left"><code>[1997].[Q1].[Feb]</code></td><td>0</td><td>0</td></tr><tr><td align="left"><code>[1997].[Q1].[Mar]</code></td><td>0</td><td>0</td></tr></tbody></table><br /><br /><li>A <dfn>member</dfn> is a point within a dimension determined by a particular set of attribute values. The gender hierarchy has the two members 'M' and 'F'. 'San Francisco', 'California' and 'USA' are all members of the store hierarchy. </li><li>A <dfn>hierarchy</dfn> is a set of members organized into a structure for convenient analysis. For example, the store hierarchy consists of the store name, city, state, and nation. The hierarchy allows you form intermediate sub-totals: the sub-total for a state is the sum of the sub-totals of all of the cities in that state, each of which is the sum of the sub-totals of the stores in that city. </li><li>A <dfn>level</dfn> is a collection of members which have the same distance from the root of the hierarchy. </li><li>A <dfn>dimension</dfn> is a collection of hierarchies which discriminate on the same fact table attribute (say, the day that a sale occurred). <br /></li><li></li><li></li><li></li></pre></li>
		<p>mondrian.properties<br />   mondrian有一个配置文件可以定义它是如何运行的。<br /><br /><br />a simple star schema<br /><br />   <img height="283" src="file:///D:/mondrian-2.2.2/doc/images/aggregate_tables_1.png" width="500" border="0" /><br /><br /></p>
		<li>Cube <code>[Sales]</code> has two measures <code>[Unit sales]</code> and <code>[Dollar sales]</code></li>
		<li>Dimension <code>[Product]</code> has levels <code>[All Products]</code>, <code>[Manufacturer]</code>, <code>[Brand]</code>, <code>[Prodid]</code></li>
		<li>Dimension <code>[Time]</code> has levels <code>[All Time]</code>, <code>[Year]</code>, <code>[Quarter]</code>, <code>[Month]</code>, <code>[Day]</code></li>
		<li>Dimension <code>[Customer]</code> has levels <code>[All Customers]</code>, <code>[State]</code>, <code>[City]</code>, <code>[Custid]</code></li>
		<li>Dimension <code>[Payment Method]</code> has levels <code>[All Payment Methods]</code>, <code>[Payment Method]</code><br /><br /></li>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/83629.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-26 16:44 <a href="http://www.blogjava.net/hengheng123456789/articles/83629.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之Cube Designer</title><link>http://www.blogjava.net/hengheng123456789/articles/83594.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Sun, 26 Nov 2006 05:44:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/83594.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/83594.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/83594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/83594.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/83594.html</trackback:ping><description><![CDATA[   在这里我们简单介绍一下Pentaho cube designer，帮助创建Mondrian cube schema，并将 cube schema 也发布到 Pentaho solution engine。<br /><br />使用的条件需要运行在JDK1.5以上，Cube 向导支持任何 JDBC 兼容的数据库。可以把必需的 JDBC driver 复制进 “CubeDesigner/lib/jdbc” 文件夹。<br /><br />以下是 cube designer的简单使用步骤：<br /><br />   1、给出cube的名称<br />   2、创建与数据库的jdbc连接<br />   3、使用 Query Designer panel，你可选择表，并创建必需的 schema，包括 Star schema 或 Snow flake schema。在创建完 schema 之后，为 measures 和 dimensions 选择列，并点击 “Next” 按钮。<br />   4、创建 measures 并设置属性<br />   使用 “Add” 按钮在 cube 中创建想要的 measures。可以按需改变 “Aggregator”，“Format” 和“Display Name” 的值。在选择了 measures，并设置了属性后，点击 “Next” 按钮。<br />   5、创建 Dimensions<br />   使用可用的 source fields (左面板) 创建 hierarchical dimensions (右面板)。<br />以树的形式显示被创建的 dimensions。在一个 dimension 树中，最顶层的元素是 Dimension，第二层的元素是 Hierarchy。接着的元素是如下显示的 dimension levels：<br />底下的面板显示选中的 Dimension，Hierarchy 或 Levels 的属性。<br />所有的元素(Dimensions，Hierarchies 和 Levels) 包含最底的属性面板所显示的固定属性。<br />一个 level 也可以有定制属性。可使用 “Add Property” 按钮为一个 level 添加定制属性。在添加完一个属性后，从 property (Property 列) 的下拉列表框中选择想要的 source field，并为属性 (Value 列)指定一个名字。<br />为开始创建一个 dimension，在左边选择一个 source field，并点击 “Add New Dimension” 按钮。<br />为向 dimension 中添加 levels，从左边选择一个 source field，在右边选择 parent level，并点击 “4” 按钮。<br />   当创建了所有想要的 dimensions 后，使用 “Next” 按钮进入最后的页面。最后一页提供了4 个要完成的步骤。<br />   6、点击 “View XML” 按钮查看 Mondrian cube 的 XML specification。<br />   7、点击 “Publish” 按钮，将 Mondrian cube specification 发布到 Pentaho solution engine。指定发布参数，点击 “OK” 完成发布。<br />   8、点击 “Preview” 按钮，可以预览发布进 Pentaho solution engine 的 Mondrian cube。<br />   9、保存<br />   生成的 XML 可保存进指定的位置。点击 “Finish” 按钮选择目录位置。指定了目录位置后，点击 “Finish” 按钮。<br />   创建了以下文件：<br />   − Mondrian Cube Schema 文件<br />   − Pentaho XACTION 文件<br />   − Pentaho XACTION 属性文件<br /><br />   <img src ="http://www.blogjava.net/hengheng123456789/aggbug/83594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-26 13:44 <a href="http://www.blogjava.net/hengheng123456789/articles/83594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之Kettle—Spoon</title><link>http://www.blogjava.net/hengheng123456789/articles/83301.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 24 Nov 2006 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/83301.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/83301.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/83301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/83301.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/83301.html</trackback:ping><description><![CDATA[   Spoon是用于定义transformations的图形化编辑器，使用Pan自动运行transformations。<br />   十分方便的数据转换工具！<img src ="http://www.blogjava.net/hengheng123456789/aggbug/83301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-24 16:33 <a href="http://www.blogjava.net/hengheng123456789/articles/83301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之Kettle—Pan</title><link>http://www.blogjava.net/hengheng123456789/articles/83298.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 24 Nov 2006 08:28:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/83298.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/83298.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/83298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/83298.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/83298.html</trackback:ping><description><![CDATA[   Pan工具用于执行Spoon工具定义的transformations。通常transformations设定为自动定时执行。<br />   Pan也只是命令行工具没有图形界面，参数很简单。<img src ="http://www.blogjava.net/hengheng123456789/aggbug/83298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-24 16:28 <a href="http://www.blogjava.net/hengheng123456789/articles/83298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之Kettle—Kitchen</title><link>http://www.blogjava.net/hengheng123456789/articles/83296.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 24 Nov 2006 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/83296.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/83296.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/83296.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/83296.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/83296.html</trackback:ping><description><![CDATA[   Kitchen工具用于执行jobs。运行Kitchen只需执行Kitchen.bat即可。<br />   没有图形界面，需要执行命令行，参数十分简单。<img src ="http://www.blogjava.net/hengheng123456789/aggbug/83296.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-24 16:17 <a href="http://www.blogjava.net/hengheng123456789/articles/83296.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之Kettle—Chef</title><link>http://www.blogjava.net/hengheng123456789/articles/83280.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 24 Nov 2006 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/83280.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/83280.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/83280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/83280.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/83280.html</trackback:ping><description><![CDATA[   Kettle是Kettle E.T.T.L. Environment的缩写，是数据的提取、转换、传送和装载的过程。<br />   这里介绍一下Kettle的子工具Chef，它可以设计jobs，这些jobs可以被另一个工具Kitchen执行。<br />   jobs可以使用xml文件进行描绘或放入Kettle数据<strong>Repository</strong>中，简单说来：Kettle 使数据仓库的建立、更新和维护更加容易。运行Chef只要运行chef.bat即可。Chef工具是一个可视化编辑工具，它包含：连接器、job输入、job输入类型和图形、日志视图。<br /><br /><strong>Repository<br /></strong>   <strong>Repository</strong>使用Xml文件表述，这个文件保存在.kettle目录中。<br /><br /><strong>定义</strong><br />   job输入：为job的一部分，实现一个确定任务。<br />   Hop：表示两个job输入之间的连接，表达执行顺序。<br /><br />其他的功能大家可以自己使用时发现，都十分简单：）<br /><br /><img src ="http://www.blogjava.net/hengheng123456789/aggbug/83280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-24 15:37 <a href="http://www.blogjava.net/hengheng123456789/articles/83280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之Kettle性能</title><link>http://www.blogjava.net/hengheng123456789/articles/83202.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 24 Nov 2006 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/83202.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/83202.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/83202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/83202.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/83202.html</trackback:ping><description><![CDATA[   Kettle是在我研究Pentaho时才发现的，确实是一个功能十分强大的ETL工具，下面很高兴能与大家分享其基本特性，看后相信大家会很乐意使用它。<br /><br />首先当然是从<a href="http://kettle.pentaho.org/">http://kettle.pentaho.org/</a>下载它！<br /><br />支持的数据库：<br /><br />MySQL<br />Oracle<br />AS/400<br />MS Access<br />MS SQL Server<br />DB2<br />PostgreSQL<br />Intersystems Caché<br />Informix<br />Sybase<br />Gupta SQL Base<br />dBase III, IV or 5<br />Firebird SQL<br />Hypersonic<br />SAP DB<br />CA Ingres<br />SAP R/3 System<br />Generic database access using ODBC<br /><br />支持的操作系统：<br /><br />Windows<br />Linux<br />Solaris<br />Apple OSX<br />HP-UX<br />AIX<br /><br />支持文件<br /><br />txt<br />csv<br />xls<br />zip<br /><br /><br />支持图形化ETL操作<br /><br />spoon UI 程序<br /><br />呵呵，这些功能可以帮助您完成许多异构数据源数据的整合了，在后面我还将和大家一起研究它的使用，多谢支持：）<br /><img src ="http://www.blogjava.net/hengheng123456789/aggbug/83202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-24 11:23 <a href="http://www.blogjava.net/hengheng123456789/articles/83202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之解决方案</title><link>http://www.blogjava.net/hengheng123456789/articles/81921.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Sat, 18 Nov 2006 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/81921.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/81921.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/81921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/81921.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/81921.html</trackback:ping><description><![CDATA[Pentaho之解决方案<br /><br />   在这里我只是阅读了关于Pentaho之解决方案，由于是英文版的说明，所以在这里边翻译边加入了一些自己的看法和心得，与君共享之。<br /><br />    Pentaho的目标是集成企业的各类系统、开源程序及组件，使之能够更加容易地建立企业的解决方案。<br /><br />基于解决方案的方法<br /><br />   很多年来我们公司一直致力于为客户建立各类分析及报告系统，用户的需求都是千差万别的，但是最基本的要求总是一样！这样看来可以把BI的实施当作一个大型的<strong><font color="#ff1493">过程</font></strong>来处理。<br /><br />核心过程<br /><br />   Pentaho平台是建立在过程和过程定义上的。<br /><br />SOA<br />   <br />   服务是建立自动运行商业过程的模块。<br /><br />过程的集成<br /><br />   系统中的每个行为都懂得如何成为其他过程的一部分。<br /><br />规则<br /><br />   灵活的业务规则是自动运行商业过程的关键部分。<br /><br />商务智能和商业过程的区分<br /><br />   Pentaho把他们结合到一起了。<br /><br />案例分析<br /><br />   案情：如果医院中有个医生的行医执照过期了，将会造成以下两种后果：<br />               1、如果使用新的医生替代他，直到他的执照更新，则会增加雇佣费。<br />               2、如果继续使用他，则会损害病人的安全并且有责任风险。<br />   目标：保证病人安全就医、降低责任风险、减低费用开支。<br />   当前的工作流程：每个管理人员都有一份他们科室的医生执照信息表。<br />   可行的解决方案：定期从中心数据库统计出一个报告，其中包含每一个科室医生的执照信息，及当前执照的期满时间。<br /><br />解决方案一：他们要什么我们就给什么<br /><br />   即每个月给用户提供一份50多页的报告。<br /><br />解决方案二：给他们他们需要的<br /><br />   1、建立商业规则，由它们来决定所需时间，使每类执照的申请留有足够的准备时间，并增加了解决问题案例的方法。<br />   2、每天或每周运行一个审核报表，列出即将到期的医生名单，并为他们列出详细的更新执照所需步骤。<br /><br />使用Pentaho建立解决方案<br /><br />解决方案引擎简介<br /><br />   Solution：由许多文档组成，这些文档共同定义了解决一个商业问题的过程和行为。包含：Action Sequence Definitions、工作流过程定义、报表定义、图片、规则、疑问等。<br /><br />   Solution Repository：组成Solution 的文档及元数据存放的位置。<br /><br />   Solution Engine：用于定位action的定义并控制它的执行。<br /><br />   Component：提供   Solution Engine与执行业务逻辑的程序的接口，用于实现一个任务。<br /><br />   Action Definition：是一个包含参数、资源和设置的XML文件，详细说明了一个Component所要执行任务的配置。Action Definition还定义了调用那一个Component，传入什么数据和从Component获取什么数据，以及Component需要什么特殊信息。Action Definition是Action Sequence Definition中的一部分。<br /><br />   Action Sequence Definition：定义了Action Definition之间的交互，它定义了Solution Engine所能执行的最小任务单元。Solution Engine通过获得Action Sequence 文档来执行，可以单独或自动执行。Action Sequence Definition保存在Solution Repository中。<br /><br />   Runtime Context：用于维护Solution Engine 和Action Sequence之间的通信，以及components和Action Sequence之间的通信。<br /><br /><img height="942" alt="o_Pentaho Architecture Diagram.JPG" src="http://www.blogjava.net/images/blogjava_net/hengheng123456789/14649/o_Pentaho%20Architecture%20Diagram.JPG" width="756" border="0" /><br /><br />   <br /><br />Design Studio<br /><br />   Design Studio是一个基于Eclipse的插件程序，可以从下面的地址下载。<br />   <a href="http://www.pentaho.org/downloads/clients">http://www.pentaho.org/downloads/clients</a><br /><br />Solution Repository<br /><br />   解压Design Studio后可以直接运行exe文件打开。<br />   每个Solution都包含许多文件，如Action Sequence文件（*.xaction）等，其中*.xaction文件可以使用Action Sequence editor进行编辑。<br /><br />Action Sequence Editor<br /><br />   Action Sequence是一个XML文件，它定义了solution engine可以执行的最小任务，并且定义了BI平台各个components的执行顺序。<br /><br />   Action Sequence Editor包含4个标签页，具体功能如下：<br /><br />   1、General<br />   包含一些通用信息，如Title、Author、Icon等将显示在网页页面上。<br />   注意到有些时候这些项填写了诸如“%title”等信息，这表示title信息保存在一个与xaction文件同名的property文件中。<br />   在这里还可以设置日志记录级别，日志存放在jboss/server/default/log/server.log文件中。<br />   2、Define Process<br />   定义了Action Sequence的inputs、outputs及resources，并允许组织Action Sequence及Components间的交互。<br />   inputs为Action Sequence需要从外界导入的信息，有四个信息源：Runtime，为保存在Runtime Context中的参数；Request，为URL中设置的name-value信息对；Session，为保存的用户Session，且每个用户都对应唯一值；Global，类似Session，但保存的信息所有用户都相同；Default，用于每个input和Action Sequence文档。<br /><br />   resources为Action Sequence为了完成自己的任务所需的文件。例如：如果一个Action Sequence想要运行一个报表，则resources就应当包含报表的定义文件。<br /><br />   outputs为Action Sequence执行完成后向外界输出的信息，有三类信息：Runtime；Session；Content，为http响应header或内容。<br /><br />Flow Control<br />   这里有两种方法来控制Action Sequence的执行：循环和条件。<br /><br />Actions (Components)<br />   Actions (Components)为Action Sequence执行的单元。<br /><br />   下面我们来介绍一下Actions (Components)是如何协同工作来完成一个任务。<br /><br />   a、可以订制一个Actions (Components)来从数据库中抽取用户的信息（包含Email）。这个Actions (Components)将输出查询结果供其他Actions (Components)使用。<br />   b、下面订制一个循环，把上一个Actions的查询结果集作为循环参数，这样，对应查询的每一条数据，都将执行一遍循环。<br /><br />执行Action Sequence<br />   可以通过许多方式运行Action Sequence，如Design Studio, URL, Java Code 或 Web Service。<br />   在这里我就不向大家一一介绍了，具体可以参照Pentaho_Creating_Solutions-XXX.pdf，可以从Pentaho官方网站下载得到（英文版）。<br />   <br /><img src ="http://www.blogjava.net/hengheng123456789/aggbug/81921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-18 14:09 <a href="http://www.blogjava.net/hengheng123456789/articles/81921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pentaho之安装</title><link>http://www.blogjava.net/hengheng123456789/articles/81501.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Thu, 16 Nov 2006 04:36:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/81501.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/81501.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/81501.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/81501.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/81501.html</trackback:ping><description><![CDATA[   Pentaho确实是一个好东东，几乎包含了全部商业BI产品的功能及特性，最了不起的是开源产品，在这里作为研究，好好使用一下。当然要先从安装开始<img height="19" src="http://www.blogjava.net/Emoticons/emsmile.gif" width="19" border="0" /><br /><br />   1、下载<br />   从下面的网址下载pentaho_demo-x.x.x.x<br />   <a href="http://www.sourceforge.net/projects/pentaho">http://www.sourceforge.net/projects/pentaho</a><br />   2、在本地建立一个目录，保证目录的名称中<font style="BACKGROUND-COLOR: #ff1493">不包含空格<br /></font><font style="BACKGROUND-COLOR: #ffffff">   <br />   3、修改web.xml文件，保证系统可以被其他机器访问<br />   /pentaho-demo/jboss/server/default/deploy/pentaho.war/WEB-INF   中可以找到web.xml文件<br />   修改一下代码：<br /><br /> &lt;context-param&gt; <br />  &lt;param-name&gt;base-url&lt;/param-name&gt;<br />  &lt;param-value&gt;http://<font style="BACKGROUND-COLOR: #7fffd4">localhost</font>:8080/pentaho/&lt;/param-value&gt; <br /> &lt;/context-param&gt;<br /><br />   修改成：<br /><br /> &lt;context-param&gt; <br />  &lt;param-name&gt;base-url&lt;/param-name&gt;<br />  &lt;param-value&gt;http://<font style="BACKGROUND-COLOR: #7fffd4">192.168.0.1</font>:8080/pentaho&lt;/param-value&gt;<br /> &lt;/context-param&gt;<br /><br />   4、配置Email<br />   修改文件/pentaho-demo/pentaho-solutions/system/smtp-email/email_config.xml <br />   配置&lt;mail.smtp.host&gt;项，设置为SMTP服务器的名称或IP<br />   配置&lt;mail.smtp.auth&gt;项，如果需要认证则设置为true<br />   配置&lt;mail.from.default&gt;项，用于当发送邮件时配置谁发的邮件，需要写一个可用的Email地址<br />   配置&lt;mail.userid&gt;和&lt;mail.password&gt;，登录邮箱的用户名和密码<br /><br />   5、配置应用程序和例子数据<br />   例子使用了Hypersonic数据库，如果要正式使用，需要自己安装数据库。<br /><br />   6、运行服务器<br />   只要运行start-pentaho.bat文件即可。<br />   <br /><br /><br /></font><img src ="http://www.blogjava.net/hengheng123456789/aggbug/81501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-16 12:36 <a href="http://www.blogjava.net/hengheng123456789/articles/81501.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>商务智能应用</title><link>http://www.blogjava.net/hengheng123456789/articles/68515.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 08 Sep 2006 06:34:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/68515.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/68515.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/68515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/68515.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/68515.html</trackback:ping><description><![CDATA[    商务智能(BI)是什么？BI实际上是帮助企业提高决策能力和运营能力的概念、方法、过程以及软件的集合，是通过收集、存储、挖掘和分析数据，为决策者提供相应的决策依据，其主要目标是将企业所掌握的信息转换成竞争优势。更直接了当地说，BI帮助你从业务数据中提取有用的信息，然后采取明智的行动，从而告别“拍脑袋”决策。<br />    我们看一个典型的案例：美国沃尔玛(Wal-Mart) 公司的分店经理发现：一段时期以来，每逢周末店内啤酒和尿布的销量都会同比攀升。这看似毫不相关的两种商品，销量之间为什么会出现如此相似的波动？其中有什么关联吗？后来，通过运用SAS分析，发现购买这两种产品的顾客几乎都是 25 岁到 35 岁、家有婴儿的男性，每次购买时间均在周末。分析还发现：原来这些人习惯晚上边看球赛、边喝啤酒，对于要照顾的孩子，为了图省事就用一次性尿布。于是 Wal-Mart 决定：把这两种商品集中摆在一起销售, 结果销量显著增加。<br /><br />商务智能可以在以下几个方面发挥作用：<br /><br />第一， 理解业务。商务智能是用来帮助理解业务的推动力量，认识数据(DATA)的趋势、非正常Pattern和特征，分析它们对业务产生的影响。<br /><br />第二，客户分类和特点分析。根据客户历年来的大量消费记录以及客户的档案资料，对客户进行分类，并分析每类客户的消费能力、消费习惯、消费周期、需求倾向、信誉度。确定哪类顾客给企业带来最大的利润、哪类顾客仅给企业带来最少的利润同时又要求最多的回报，然后针对不同类型的客户给予不同的服务及优惠。<br /><br />第三，改善关系。商务智能能为顾客、员工、供应商、股东和大众提供关于企业及其业务状况的有用信息，从而提高企业的知名度、增强整个信息链的一致性。利用商务智能，企业可以在问题变成危机之前很快地对它们加以识别并解决。商务智能也有助于加强顾客忠诚度，一个参与其中并掌握充分信息的顾客更加有可能购买你的产品和服务。<br /><br />第四, 市场营销策略分析。利用数据仓库技术实现市场营销策略在模型上的仿真，其仿真结果将提示所制定的市场营销策略是否合适，企业可以据此调整和优化其市场营销策略，使其获得最大的成功。<br /><br />第五，经营成本与收入分析。对各种类型的经济活动进行成本核算，比较可能的业务收入与各种费用之间的收支差额，分析经济活动的曲线，得到相应的改进措施和办法，从而降低成本、减少开支、和提高收入。<br /><br />第六，欺诈行为分析和预防。利用数据挖掘技术，总结各种骗费、欠费行为的内在规律后，就可以及时预警各种骗费、欠费，尽量减少企业损失。位于在信息化三个层次中的最顶层，注定了BI生长在高端。从数据到信息，信息到知识，知识到决策，决策到财富的流程中，注定了BI会让厂商, 企业和将要踏上SAS 航程的你在财富面前同时笑得非常灿烂。<img src ="http://www.blogjava.net/hengheng123456789/aggbug/68515.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-09-08 14:34 <a href="http://www.blogjava.net/hengheng123456789/articles/68515.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BI相关的开源工具</title><link>http://www.blogjava.net/hengheng123456789/articles/68315.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Thu, 07 Sep 2006 08:56:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/articles/68315.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/68315.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/articles/68315.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/68315.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/68315.html</trackback:ping><description><![CDATA[
		<span class="oblog_text">我们都知道“瞎子摸象”的故事。不同的瞎子对大象的认识不同，因为他们只认识了自己摸到的地方。而企业如果要避免重犯这样的错误，那就离不开商务智能（BI）。专家认为，BI对于企业的重要性就像聪明才智对于个人的重要性。欧美企业的经验也证明，企业避免无知和一知半解危险的有效手段就是商务智能。商务智能旨在充分利用企业在日常经营过程中收集的大量数据和资料，并将它们转化为信息和知识来免除各种无知状态和瞎猜行为。 <br /><br />支持BI的开源工具数量众多，但是大多数的工具都是偏重某方面的。例如，CloverETL偏重ETL，JPivot偏重多维分析展现，Mondrian是OLAP服务器。而Bee、Pentaho和SpagoBI等项目则针对商务智能问题提供了完整的解决方案。 <br /><br />ETL 工具 <br /><br />ETL开源工具主要包括CloverETL和Octupus等。 <br /><br />（1）CloverETL是一个Java的ETL框架，用来转换结构化的数据，支持多种字符集之间的转换（如ASCII、UTF-8和ISO-8859-1等）；支持JDBC，同时支持dBase和FoxPro数据文件；支持基于XML的转换描述。 <br /><br />(2)Octupus是一个基于Java的ETL工具，它也支持JDBC数据源和基于XML的转换定义。Octupus提供通用的方法进行数据转换，用户可以通过实现转换接口或者使用Jscript代码来定义转换流程。 <br /><br />OLAP服务器 <br /><br />(1)Lemur主要面向HOLAP，虽然采用C++编写，但是可以被其他语言的程序所调用。Lemur支持基本的操作，如切片、切块和旋转等基本操作。 <br /><br />(2)Mondrian面向ROLAP包含4层：表示层、计算层、聚集层、存储层。 <br /><br />● 表示层：指最终呈现在用户显示器上的以及与用户之间的交互，有许多方法来展现多维数据，包括数据透视表、饼、柱、线状图。 <br /><br />● 计算层：分析、验证、执行MDX查询。 <br /><br />● 聚集层：一个聚集指内存中一组计算值(cell)，这些值通过维列来限制。计算层发送单元请求，如果请求不在缓存中，或者不能通过旋转聚集导出的话，那么聚集层向存储层发送请求。聚合层是一个数据缓冲层，从数据库来的单元数据，聚合后提供给计算层。聚合层的主要作用是提高系统的性能。 <br /><br />● 存储层：提供聚集单元数据和维表的成员。包括三种需要存储的数据，分别是事实数据、聚集和维。 <br /><br />OLAP客户端 <br /><br />JPivot是JSP风格的标签库，用来支持OLAP表，使用户可以执行典型的OLAP操作，如切片、切块、上钻、下钻等。JPivot使用Mondrian服务器，分析结果可以导出为Excel或PDF文件格式。 <br /><br />数据库管理系统 <br /><br />主要的开源工具包括MonetDB、MySQL、MaxDB和PostgreSQL等。这些数据库都被设计用来支持BI环境。MySQL、MaxDB和PostgreSQL均支持单向的数据复制。BizGres项目的目的在于使PostgreSQL成为数据仓库和BI的开源标准。BizGres为BI环境构建专用的完整数据库平台。 <br /><br />完整的BI开源解决方案 <br /><br />1.Pentaho 公司的Pentaho BI 平台 <br /><br />它是一个以流程为中心的、面向解决方案的框架，具有商务智能组件。BI 平台是以流程为中心的，其中枢控制器是一个工作流引擎。工作流引擎使用流程定义来定义在 BI 平台上执行的商务智能流程。流程可以很容易被定制，也可以添加新的流程。BI 平台包含组件和报表，用以分析这些流程的性能。BI 平台是面向解决方案的，平台的操作是定义在流程定义和指定每个活动的 action 文档里。这些流程和操作共同定义了一个商务智能问题的解决方案。这个 BI 解决方案可以很容易地集成到平台外部的商业流程。一个解决方案的定义可以包含任意数量的流程和操作。 <br /><br />BI平台包括一个 BI 框架、BI 组件、一个 BI 工作台和桌面收件箱。BI 工作台是一套设计和管理工具，集成到Eclipse环境。这些工具允许商业分析人员或开发人员创建报表、仪表盘、分析模型、商业规则和 BI 流程。Pentaho BI 平台构建于服务器、引擎和组件的基础之上，包括J2EE 服务器、安全与权限控制、portal、工作流、规则引擎、图表、协作、内容管理、数据集成、多维分析和系统建模等功能。这些组件的大部分是基于标准的，可使用其他产品替换之。 <br /><br />2.ObjectWeb <br /><br />该项目近日发布了SpagoBi 1.8版本。SpagoBi 是一款基于Mondrain+JProvit的BI方案，能够通过OpenLaszlo产生实时报表，为商务智能项目提供了一个完整开源的解决方案，它涵盖了一个BI系统所有方面的功能，包括：数据挖掘、查询、分析、报告、Dashboard仪表板等等。SpagoBI使用核心系统与功能模块集成的架构，这样在确保平台稳定性与协调性的基础上又保证了系统具有很强的扩展能力。用户无需使用SpagoBI的所有模块，而是可以只利用其中的一些模块。 <br /><br />SpagoBI使用了许多已有的开源软件，如Spago和Spagosi等。因此，SpagoBI集成了Spago的特征和技术特点，使用它们管理商务智能对象，如报表、OLAP分析、仪表盘、记分卡以及数据挖掘模型等。SpagoBI支持BI系统的监控管理，包括商务智能对象的控制、校验、认证和分配流程。SpagoBI采用Portalet技术将所有的BI对象发布到终端用户，因此BI对象就可以集成到为特定的企业需求而已经选择好的Portal系统中去。 <br /><br />3.Bee项目 <br /><br />该项目是一套支持商务智能项目实施的工具套件，包括ETL工具和OLAP 服务器。Bee的ETL工具使用基于Perl的BEI，通过界面描述流程，以XML形式进行存储。用户必须对转换过程进行编码。Bee的ROLAP 服务器保证多通SQL 生成和强有力的高速缓存管理(使用MySQL数据库管理系统)。ROLAP服务器通过SOAP应用接口提供丰富的客户应用。Web Portal作为主要的用户接口，通过Web浏览器进行报表设计、展示和管理控制，分析结果可以以Excel、PDF、PNG、PowerPoint、text和XML等多种形式导出。 <br /><br />Bee项目的特点在于： <br /><br />● 简单快捷的数据访问； <br /><br />● 支持预先定义报表和实时查询； <br /><br />● 通过拖拽方式轻松实现报表定制； <br /><br />● 完整报表的轻松控制； <br /><br />● 以表和图进行高质量的数据展示。 <br /></span>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/68315.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-09-07 16:56 <a href="http://www.blogjava.net/hengheng123456789/articles/68315.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>