GAF快速开始-功能模块组件扩展开发流程
上一篇文章《GAF安装部署-微服务架构下的云原生部署》介绍如何安装部署GAF,这篇文章
首先,介绍了如何调用后端接口,用于进行扩展开发时在后端代码调用GAF已有的接口。
然后,介绍了功能组件扩展的流程,包括后端工程创建、前端工程、前后端联调、后端代码生成、构建部署、配置路由、配置菜单,通过一个简单的案例说明。
最后,介绍了在开发后端代码中使用微服务远程调用需要注意的点,以及如何获取用户信息。
阅读对象是哪些人群?
开发人员和运维人员
什么时候应该阅读?
在熟悉了GAF的功能模块后,需要根据业务进行功能模块的开发,开发完成后进行部署并集成到GAF
调用第一个后端接口
在登录GAF后,点击右上角关于,选择api文档
然后,选择认证组件(gaf-authentication), 个性化设置,在Host输入http://${主机ip}/api
并启用。
然后在token接口,选择账号密码获取token
接口,在调试界面输入账户sys_admin和密码123456,获取token。复制返回的"access_token"
然后,选择系统管理组件(gaf-sys-mgt),在全局参数设置里面新增请求头参数,参数名Authorization
,参数值Bearer 上一步复制的token
,参数类型header。
接着,查看个性化设置里面,确认Host 为http://${主机ip}/api
并启用。
最后选择字典接口下的查询字典数据所有树节点
接口,调试调用该接口
如何调用后端接口
如果经过网关调用后端微服务接口,则需要加统一前缀api
,并且加上请求头Authorization
和值Bearer ${申请的token}
。直接调用微服务接口,则无需加前缀api
。token中包含userid和username,下游微服务可通过token获取用户的userid和username。
申请token接口
若通过网关调用,则加api
前缀。可使用postman调用,如下图。
功能组件扩展
后端工程创建与说明
在GAF的开发运维菜单下,点击扩展说明,输入应用名称和应用访问路径前缀,得到根据模板生成前后端工程命令。如下图
linux shell:
mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate \
-DgroupId="com.supermap.extend1" \
-DartifactId="extend1" \
-Dversion="1.0.0-SNAPSHOT" \
-DpackageName="com.supermap.extend1" \
-DgafVersion="3.0.0.pro-alpha-SNAPSHOT" \
-DservicePrefix="extend1" \
-DarchetypeGroupId="com.supermap.gaf.archetype" \
-DarchetypeArtifactId="gaf-spring-rest-archetype" \
-DarchetypeVersion="3.0.0" -DinteractiveMode=false \
-DarchetypeCatalog=https://nexus.gaf.net.cn/repository/maven-public/ \
-Dline.separator=$'\n'
windows power shell:
mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate -DgroupId="com.supermap.extend1" -DartifactId="extend1" -Dversion="1.0.0-SNAPSHOT" -DpackageName="com.supermap.extend1" -DgafVersion="3.0.0.pro-alpha-SNAPSHOT" -DservicePrefix="extend1" -DarchetypeGroupId="com.supermap.gaf.archetype" -DarchetypeArtifactId="gaf-spring-rest-archetype" -DarchetypeVersion="3.0.0" -DinteractiveMode=false -DarchetypeCatalog=https://nexus.gaf.net.cn/repository/maven-public/ -Dline.separator=$'\n'
生成后端工程,结构如下图。
│ pom.xml # 微服务相关的依赖和gaf相关的依赖
│
└─src
└─main
├─java
│ └─com
│ └─supermap
│ └─extend1
│ │ Application.java # 启动类,包含一些Bean扫描包路径,以及对服务发现客户端和Feign的开启
│ │
│ ├─commontypes
│ │ AppBean.java
│ │
│ ├─controls
│ │ AppRestController.java
│ │
│ └─services
│ │ AppService.java
│ │
│ └─impl
│ AppServiceImpl.java
│
├─k8s
│ docker-entrypoint.sh # 将容器的启动命令
│ Dockerfile # 用于将jar构建为镜像的Dockerfile
│ gaf-extend-deploy-backend.yaml # 在iManager K8S上部署的GAF,扩充站点,增加微服务的编排文件
│
└─resources
bootstrap-dev.yml # 本地开发环境的配置,包含数据源和mybatis相关配置
bootstrap-prod.yml # 生产环境配置
注意:设置IDE的Line sperator 为 LF,确保文件的行分割符为LF
前端工程创建与说明
使用如下命令生成前端工程
npm config set registry https://nexus.gaf.net.cn/repository/npm-group
yarn global add @gaf/create-gaf-project
create-gaf-project extend1
子应用
extend1
extend1
10200
GAF UI 框架
是
extend1
得到如下工程结构
前端基于Vue, Ant Design Vue, GAF-UI,微前端qiankun等技术栈,
前后端启动联调
在后端IDE中导入后端工程,启动时设置激活的配置文件为dev
然后,在Application类中启动SpringBoot程序
注意1:本地需要提前安装JDK1.8及以上、Maven 3.6.3及以上、配置好后端IDE
在前端工程根目录下,执行如命令
yarn install
yarn serve
注意2:需要提前安装nodejs 16.13.2及以上、安装yarn1.22.5及以上、并配置好yarn和npm的仓库地址为https://nexus.gaf.net.cn/repository/npm-group
接着,http://localhost:10204 查看前端启动情况
代码生成
在GAF后台界面, 开发运维->组件扩展->代码模板管理,新增默认的模板并上传。http://gaf.net.cn/download/gaf/other-resources/front-back-mvc-vm.zip
在 开发运维->组件扩展->代码生成菜单下,使用刚才上传的模板,生成单表的前后端代码。步骤如下。
在数据库中创建表event
,表示水管巡检维修中的事件,代表维修任务,包含 任务内容、任务类型、详细地址等, 可被分配指派给处理人员。DDL如下。
create