Open Flash Chart (简称OFC)是一个基于Flash的开源报表组件,该组件能够生成动态的Flash报表,使用LGPL((GNU Lesser General Public License)许可证。目前已经发展到2.X版本,最大的变换就是数据文件格式转为json格式,最新的社区版本是open-flash-chart-2-community-0.25。
Open Flash Chart 2的图形报表绘制原理:
前端的open-flash-chart.swf 组件从WebServer获取图形报表需要的json格式的数据用于展示,Server端可以使用各种编程语言版本的ofc library,主要是负责生成flash组件需要的json格式的报表数据。目前前段和后端的ofc组件都存在多个版本,后端某些语言的ofc library也是由第3方开发的,如果版本不匹配的话,在使用上就存在某些特性无法支持的的问题。但是要记住,最主要的特性能力都是由open-flash-chart.swf组件来提供的,该组件的版本决定了对于json数据的支持情况。
Open-flash-chart除了社区版本,还有其他各种各样的补丁版本,初次使用者在使用上会感到比较困惑,建议使用最新的社区版本。网上的很多例子,但都没有明确使用的open-flash-chart版本,以及对应的后端程序库(jofc、ofc4j、ofc_php、.net for ofc、js for ofc等)对于json 格式的报表数据的支持情况,导致在使用不同版本的ofc前后端组件的时候,前端的open-flash-char.swf 组件的支持的json数据文件能力对不齐,在显示控制上存在问题。
例如,常见的Keys toggle-visibility的支持,就是点击某些图形的名称(以Line Chart为例,就是线的名称),可以控制图形的显示和隐藏,这个特性在Line Chart中,如果涉及的曲线很多,还是有使用的必要。
Open Flash Chart的图形报表例子(主要展现对keys, custom tooltip, dot-style,lable visible-steps的支持):
ofc.rar 下载,见底部链接。
测试用,把文件解压到某个Web Root Application的根目录即可。
访问方式:http://localhost:8080/chart-2.html?ofc=lines.txt
入门:
(一) Open-flash-chart的创建者的网址,后端的程序的例子都是以ofc php library为例子。
http://teethgrinder.co.uk/open-flash-chart-2/ V2.X版本,注意作者提供下载的open-flash-char.swf虽然是2.X版本,但不是最新的,最新的版本请到code google下载,见下面的http://forums.openflashchart.com/。
(二) http://teethgrinder.co.uk/open-flash-chart/ V1.X版本,例子较多,可以看看open-flash-chart的展现能力。
(三) http://forums.openflashchart.com/ open-flash-chart的论坛,一般你要问的问题在这里都可以找到答案,该论坛提供最新的open-flash-chart社区版本,与作者的网站的falsh组件版本相比,增加了很多新的特性,而且提供多种语言的后端ofc library。
(四) 《网友A的ofc java library》 从数据文件格式看,是open-flash-chart的V1.X版本。
也就是后端的类库只能生成V1.X版本的数据文件,不支持open-falsh-chart V2.X。
(代码来源: http://www.iteye.com/topic/189653)
(五) 《网友 B的ofc java library》 生成的数据格式支持open-flash-chart.swf的DZ版本(http://ofc2dz.com),大部分兼容社区版本的open-flash-chart-2-community-0.25的版本。此ofc java library依赖的第3方库较多,不过使用还算比较方便。如果不怕类库多,对于java开发,也推荐用这个。(代码来源:http://code.google.com/p/ajofc/)
(六) 如果是使用.NET编程生成后端的json数据文件, 可以直接使用open-flash-chart-2-community-0.25版本自带的.NET ofc library,这样不存在兼容性问题。
(七) JOFC2 - Java API for Open Flash Chart 2,(http://code.google.com/p/jofc2/)这个版本支持大部分的open-flash-chart-2-community-0.25中的open-flash-chart.swf的大部分特性,部分不支持的,可以自己扩展支持。 如果后端是java开发,推荐用该组件。
高级:
(一) 如果需要深入了解Open Flash Chart,可以先从社区版本data-files里面带的数据文件分析开始。http://ofc2dz.com/OFC2/downloads/OFC2-Documentation.zip ,上面的连接提供了对于json数据文件各种属性的简单说明。
(二) 在充分了解各种json数据文件的格式后,你就可以知道各种后端的ofc libaray对于open-falsh-chart的支持能力。如果在某些方面你觉得不足,都可以自己动手编写相应的Patch。
(三) 如果你觉得还不过瘾,可以分析一下社区版本里面的open-flash-chart的flash部分的源代码,熟悉open-falsh-chart.swf组件的设计。如果想添加自己的新的特性,还可以修改actionscript源码,编译出属于你自己的open-flash-chart.swf。
(四) 还不过瘾,你可以分析一下其他支持Web的图形报表组件,例如FushionCharts 、JFreeChart、Birt Chart、Google Chart等,对比各组件的优缺点,取长补短,添加到open-falsh-chart中。(参见http://blog.csdn.net/aatewu/article/details/4404071)
如果掌握了上面几方面的能力,恭喜你,你也有能力为开源社区做贡献了。
感言:涉及多个软件组件配合使用的时候,明确各组件的版本很重要,否则就是层出不穷的问题。另外,很多开源文件,文档缺乏是个通病,要想了解某组件的具体能力,很多时候要摸着石头过河。