【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
对于不支持8.0的插件,对功能点记录的检查更加严格,同时也简化了功能点的写法,提供了注解的形式,具体如下:
9.0中添加了两个注解:@FunctionRecorder(id,localKey)和@ExecuteFunctionRecord,分别代表注册一个功能点和记录当前功能点被使用。
该注解用于描述一个类,使用了该注解的类会在运行时自动生成一个private static final FunctionProcessor __FUNCTION_PROCESSOR字段。
该注解用于描述一个方法,每次调用被注解的方法时,都会执行recordFunction方法,将功能的使用此时记录到数据库中。
@FunctionRecorder public class PoolProcessorImpl extends AbstractDataSourcePoolProcessor { @Override @ExecuteFunctionRecord public void createDataSourcePool(ObjectHolder ca, Set<String> cellTableDataSet) { //do something } }
对于不需兼容8.0的插件,在运行前会对插件中是否添加了功能点进行检查,没有发现功能记录点的话,则不允许运行。为了更快的使插件引擎定位到记录功能点的类,需要在plugin.xml中添加<function-recorder>标签,指向定义了功能记录点的类。
<function-recorder class="com.fr.plugin.performance.datasourcepool.PoolProcessorImpl"/>
在插件ClassLoader加载插件的类时,会对class文件做一些修改,比如解析功能点注解、给主类(即xml的extra-core等标签内部描述的类)添加Closeable接口等操作。基于性能的考虑,只有指定包下的类会被处理,默认时com.fr.plugin,如果主类不在com.fr.plugin下,则不能正常运行。同时在xml中提供了自定义主包名的途径:
//xml中用这个标签来描述 <main-package>com.test.pack</main-package>
6 Comments
Anonymous
这两个注解需要import什么包?
ju-剧浩宇
com.fr.plugin.transform
chuck314
功能点是个什么概念,能否详细讲解下
zack.z
补充:@FunctionRecorder 注解仅写在designer模块可能造成tomcat下载插件时无法读取
yiyuzhou
功能点是个什么概念,能否详细讲解下
Anonymous
哪些类哪些方法需要功能点?能不能详细一点?总不能每个类每个方法都加吧,检查功能点是否存在的标准是什么?稍微详细一点啊,还有依赖于其他插件的情况,功能点怎么加?