3.1发布类使用
3.1.1概述
APP之间是物理隔离的,不允许直接访问。但也提供了两种交互的方式,一种是继承,别一种是把接口或类发布成公共的。
应用中如果有需要发布到公共目录下接口或类,需要放在pub_classes下,所以,如果一个应用中存在pub_classes目录就说明这个应用有公共的接口或类供其他应用使用。
如果开发中需要使用这些接口,可以在项目中单独设置类引用路径,增加一条指向目标应用的pub_classes。
如果开发的应用中需要有发布类,可以在构建路径中添加pub_src目录,将其编译目录指向pub_classes。*注:发布的类都应该是接口或pojo类。
3.1.2规范
3.1.2.1纯接口
只是作为一个公共的接口类使用,如导入组件中的IExportAnalyse接口,导入组件并能实现此接口,纯粹是给调用导入组件的应用扩展使用。此接口编写没有特殊要求
后续主档中组件的“应用扩展java接口”都属于此类
3.1.2.2有实现
发布接口的同时,内部还对此接口增加了实现,目的是为了向其它应用提供后台API,如字典刷新组件的IDicOperation接口。
要求接口必须增加一个获取的注释和静态变量BEANID
在上图获取方法一中,为了效率考虑,应该定义成类的属性,如
private AppBeanContainer<IAuthManager> authManagerContainer
实现类中使用BEANID作为服务名
其它应用需要使用此接口时,就可以获取使用了。后续文件中组件的“java接口”都属于此类。
3.1.3使用其他应用发布的类
3.1.3.1开发时的引用
如上图,打开“Java构建路径”,在“库”标签中,选择“添加外部类路径”(红色圈出的按钮),选择发布的“pub_classes”(如:红色方框标出的部分)。
设置完成后,才能在当前应用中使用相关应用的发布类。如上面截图的设置,就是需要使用emapcomponent的发布类。
注1:只能使用工作空间下应用中的“pub_classes”,如果引用了其他路径,在运行时将无法找到这些类
注2:如果想要修改图上显示pub_classes为相对路径确保所有人引用路径统一不出现路径错误,方式如下:
3.1.3.2代码中的使用
首先定义类的成员变量:
private AppBeanContainer<IPubType> xxx = new AppBeanContainer<IPubType>(
"[appName]", IPubType.BEANID, [true or false]);
在代码中的使用方式如下:
xxx.get().xxxMethod(…);
注:如果设置了应用不是必须存在(前面的构造函数中最后个参数设为false),那需要判断get方法的返回值是否为null。