一、涉及相关代码及相应版本
1、product-apim-2.6.0(apim的主项目,编译后为可执行的项目)
2、analytics-apim-2.6.0(apim 中的统计相关模块,包含了publisher 和 store的统计展示页面,需要在api-manager.xml文件中启用统计,<Analytics> <!-- Enable Analytics for API Manager --><Enabled>true</Enabled>)
3、carbon-apimgt-6.4.50(apim 的主要功能项目, 所有的功能实现都在该项目中做修改,包含了components features和service-stubs三个模块,我主要做的是将analytics的接口抽取出Rest 接口,因此主要在components中做修改)
4、carbon-kernel-4.4.35(这个项目为kernel级别的,主要支持carbon相关的登录 及权限管理控制,还有其他基础功能,若修改了项目 应该最先编译该项目)
5、carbon-identity-framework-5.12.153(这个项目主要是/carbon资源下的数据管理,主要包含了用户和角色管理)
二、项目编译
一般网路状况良好的话基本都能编译通过,需要注意的是,在编译过程中会有个checkstyle的错误,一直没解决 我是直接在编译指令下添加的 -Dcheckstyle.skip=true 来跳过检测style这个步骤,如果有更好的解决方案 欢迎留言讨论!
三、主要修改内容
我主要是模仿官方提供的Rest 接口,自定义了/analytics 即所有统计相关的页面接口,需要新开发Rest接口或修改相关接口的可以互相讨论,相关操作如下:
1、找到components中的org.wso2.carbon.apimgt.rest.api.publisher模块,在gen下新建了AnalyticsApi的类
相关代码的配置 可以参考ApisApi类,这个类是用来管理api的所有操作的。创建AnalyticsApi后需要在webapp/WEB-INF/beans.xml中添加相关配置信息,如图:
否则 在项目初始化的时候会提示找不到类。
2、创建好AnalyticsApi类后,可以写相应的接口了,需要注意的是:每个接口需要在/resources/publisher-api.yaml中配置相关的访问权限,然后还需要在org.wso2.carbon.apimgt.rest.api.util/resources/publisher-api.json中配置对应的接口权限信息,否则在访问时会提示没有访问权限。位置信息如下图:
3、store中对应的统计模块类似于publisher中的开发模式,配置好相应的配置文件即可。
四、关于jag文件说明
apim页面大部分使用了.jag文件,使用了jagger.js,加载时jagg.module("xxx)这个方法的查找顺序是:
先查找当前目录的xxx中的module.jag文件,然后查找对应的方法名。
五、product相关结构说明
由于新添加的只是一部分web端的功能,因此 在开发完成相应的接口后 只需要更新wso2am-2.6.0\repository\deployment\server\webapps 文件夹下相应的war即可。