1 帆软报表的启动类为:com.fr.learn.Learner,它的main方法如下:
从上面可以看出,首先会d加载com.fr.start.MainDesigner类,如果找不到,就加载com.fr.start.Designer。这两个类都在fine-report-designer.jar中
2 com.fr.start.MainDesigner的main方法:
关键代码为:
加载解析配置文件designer-startup.xml,这个文件在fine-activator.jar中。解析后会得到根模块,然后调用根模块的start方法,这会导致配置文件中的一系列的Activator的start方法也开始运行。
3 看一下这个jar包中的结构:
我们看到在com.fr.config.starter下有两个xml文件,designer-startup.xml与server-startuo.xml,这就是帆软报表整体的配置文件,designer-startup.xml是在设计器模式下加载的配置,server-startuo.xml是非设计器模式下加载的配置。其他目录的xml配置文件都会被这两个配置文件来引用。
3.1 初略看一下designer-startup.xml中的内容:
我们发现这里面定义了许多activator,也引用了其他的xml文件,activator这里可以理解为模块,最外层就是根模块,模块也包含父子关系,兄弟关系。
com.fr.start.MainDesigner中使用ModuleContext来解析这个配置文件,并返回一个根Module对象,在解析过程中,将这些模块已经按层次关系组装好了。
当得到根Module之后,就会调用根模块的start方法。
这不仅仅是调用了根模块的start方法,其他的模块的start方法他也一并会调用。
这里有一个对用关系,一个module对应一个activator,帆软报表将所有功能都分配到各个activator里了。
这就是帆软报表的启动过程,这里分析得很简单,后面会详细来分析内部过程。
|