smartrcp的程序结构如下:
图片说明:
启动文件:继承自cn.smartinvoke.gui.SplashApp的mxml Application文件编译后
所得的swf文件。该文件有点儿像eclipse插件中的plugin.xml文件的作用,
它定义了整个应用程序的基本信息;菜单工具栏;与整体布局。
应用程序文件:继承自cn.smartinvoke.gui.RCPApplication的mxml Application文件编译后
所得的swf文件。该文件的主要作用是保存全局运行库,程序全局样式,嵌入资源等等
资源。Flex模块都是通过它进行加载的。
模块:可以被独立加载与运行的软件单元,在smartrcp平台中,模块可以为:
1:继承自RCPModule的mxml Module,它的最终发布形式为编译后的swf文件。
2:继承自cn.smartinvoke.gui.RCPApplication的mxml Application,它的最终发布形式
也为编译后的swf文件。
3:实现cn.smartinvoke.smartrcp.core.ISWTPartUnit接口的Java类。通过它实现的
public void createPartControl(Composite parent)方法可以定义界面显示。此类型
的模块为Java语音实现,通过ViewManager类实现与Flex实现模块的互调。它的最终发布
形式为java的jar文件。通过它可将Java与Flex界面整合到一个程序中。
smartrcp平台为每个运行的模块生成唯一ID号,同时创建一FlashViewer类型对象用于对相应模块的访问。
smartrcp规定:所有模块定义类的public方法都可以被其他模块访问到。
smartrcp保证所有运行的模块都有一FlashViewer类型对象与其对应,通过唯一ID号进行区分。
ViewManager类专门负责对所有FlashViewer类型对象进行管理。不同模块实例之间的调用都是通过调用
调用ViewManager的对应方法实现的。
smartrcp运行原理:
1: smartrcp在启动时获取-app参数值作为启动文件,该值必须为一有效的
swf文件绝对路径,该路径可以为本地文件路径,也可以是一完整的http
地址。smartrcp通过调用该swf文件得到如下信息:
1.1 应用程序根目录——当前smartrcp程序的运行目录,程序中的所有相对路径都是相对于该路径的。
1.2 运行文件——启动文件所在类即cn.smartinvoke.gui.SplashApp子类的cn.smartinvoke.rcp.CPerspective
类的runtimeSwfPath属性所指的swf文件。
2:通过解析启动文件返回的cn.smartinvoke.rcp.CPerspective类型对象定义整个程序的菜单;工具栏;视图布局,窗口大小
,标题等应用程序信息。
3:通过第二步解析得到的视图布局信息加载指定的模块以初始化整个应用程序。
开发smartrcp程序就是开发不同的模块,主要是针对模块编程。smartrcp的这种架构特点充分保证了程序的高扩展性与可维护性。
充分保证了模块的复用性,因为可以将一模块编译为独立的flex application或osgi bundle Jar文件。
smartrcp的模块功能与com组件比较类似。