从1.0.0升级到1.1.0
平台已有的前端模块、组件、服务等清单和详细信息可参考 服务列表。
若无特殊说明,本次升级所有前端模块最新版为 1.1.0
,后端组件、服务版本最新版为 1.1.0.RELEASE
。
- 1.0.0 -> 1.1.0 的重要变更日志请参考 v1.1版本更新
新增组件
组件 | 版本 | 描述 |
---|---|---|
hzero-starter-redis | 1.1.0.RELEASE | Redis依赖,相关工具类等 |
hzero-boot-nlp | 1.1.0.RELEASE | NLP服务客户端 |
删除组件
组件 | 描述 |
---|---|
hzero-boot-common | 代码移至 hzero-starter-core 中,使用方只需删除 hzero-boot-common 的依赖即可 |
新增服务
组件 | 简称 | 默认端口 | 描述 | SaaS和OP说明 | 版本 | 数据库Schema |
---|---|---|---|---|---|---|
hzero-invoice | HIVC | 8015 | 发票服务 | 区分 | 1.1.0.RELEASE | hzero_invoice |
hzero-ocr | HOCR | 8290 | 图像识别服务 | 不区分 | 1.1.0.RELEASE | |
hzero-webexcel | HEXL | 8045 | 在线Excel服务 | 不区分 | 1.1.0.RELEASE | hzero_webexcel |
hzero-admin | HADM | 8060 | 平台治理服务 | 区分 | 1.1.0.RELEASE | hzero_admin |
服务/组件升级
-
修改 pom.xml,如果 parent 依赖的
hzero-parent
,需修改版本号为1.1.0.RELEASE
;如果是自建的 parent 项目,需将其中的 hzero 服务/组件的版本号修改为1.1.0.RELEASE
<parent> <groupId>org.hzero</groupId> <artifactId>hzero-parent</artifactId> <version>1.1.0.RELEASE</version> </parent>
-
修改依赖的服务版本号
<!-- SAAS 版本 --> <dependency> <groupId>org.hzero</groupId> <artifactId>hzero-xxx-saas</artifactId> <version>1.1.0.RELEASE</version> </dependency> <!-- OP 版本 --> <dependency> <groupId>org.hzero</groupId> <artifactId>hzero-xxx</artifactId> <version>1.1.0.RELEASE</version> </dependency>
重点配置调整
服务治理调整
-
1.1.0 新增了 hzero-admin 平台治理服务,且为基础必须服务,升级时可通过服务选配平台创建 hzero-admin 新服务。hzero-admin 服务主要用于管理服务路由、熔断、限流配置等,并集成了 SpringbootAdmin 监控管理页面。除此之外,hzero-admin 还监听服务注册,通知 hzero-iam 刷新权限、通知 hzero-swagger 刷新文档。
-
原 hzero-config 配置中心服务移除了路由、熔断、限流等功能,作为 Spring cloud 版本的配置中心使用。如果项目上没有动态刷新配置的需要,可不部署此服务,也可以使用其它配置中心替换。
-
hzero-config 服务不再区分 OP 和 SaaS 版本,以前依赖
hzero-config-saas
版本的需调整如下:<dependency> <groupId>org.hzero</groupId> <artifactId>hzero-config</artifactId> </dependency>
-
hzero_swagger、hzero_config 服务的数据库需由原
hzero_governance
调整为hzero_admin
,原 hzero_governance 库已废弃。
网关服务调整
-
hzero-gateway 网关服务由 Zuul 替换为 Spring cloud gateway,
application.yml
、bootstrap.yml
需要从依赖的 hzero-gateway jar 包中拷贝出来进行覆盖。启动类需调整为如下:@EnableHZeroGateway @EnableDiscoveryClient public class GatewayApplication { public static void main(String[] args) { new SpringApplicationBuilder(GatewayApplication.class).web(WebApplicationType.REACTIVE).run(args); } }
依赖调整
-
1.1 中新增了
hzero-starter-redis
组件,将hzero-starter-core
中与 redis 相关的功能抽取出来,便于按需引入 redis 依赖。因此使用了 Redis 功能的服务,需在 pom.xml 中加入 hzero-starter-redis 依赖:<dependency> <groupId>org.hzero.starter</groupId> <artifactId>hzero-starter-redis</artifactId> </dependency>
-
1.1 中移除了
hzero-boot-common
组件,将源码移至hzero-starter-core
中,对依赖方无影响,需要移除服务中的hzero-boot-common
依赖。
表结构升级
-
请先备份每个库的表结构及数据,便于出问题之后恢复
-
1.1 中新增了 hzero-admin 服务,需要手动创建
hzero_admin
数据库,再初始化 hzero_admin 的数据库脚本。 -
值集视图行(
hpfm_lov_view_line
)增加了view_header_id、field_name
字段的唯一索引,考虑到以前有脏数据,需要使用如下SQL手动清理脏数据后再升级 hzero_platform 的数据库脚本。-- 删除 hpfm_lov_view_line 中的脏数据 DELETE FROM hpfm_lov_view_line WHERE view_line_id IN ( SELECT t.* FROM ( SELECT h1.view_line_id FROM hpfm_lov_view_line h1 JOIN hpfm_lov_view_line h2 ON ( h1.view_header_id = h2.view_header_id AND h1.field_name = h2.field_name AND h1.view_line_id <> h2.view_line_id ) JOIN hpfm_lov_view_header h3 ON h3.view_header_id = h1.view_header_id AND h3.lov_id <> h1.lov_id ) t ); -- 删除 hpfm_lov_view_line_tl 中的无效数据 DELETE FROM hpfm_lov_view_line_tl WHERE view_line_id NOT IN ( SELECT view_line_id FROM hpfm_lov_view_line );
-
从 gitlab 上下载
1.1.0.RELEASE
的数据库脚本和Excel期初数据ssh: ~ git clone git@code.choerodon.com.cn:hzero-hzero/hzero-resource.git https: ~ git clone https://code.choerodon.com.cn/hzero-hzero/hzero-resource.git ~ git checkout 1.1.0.RELEASE
-
hzero-resource 下提供了更新表结构和数据的脚本以及批量更新脚本,运行脚本交互式更新。
-
使用更新脚本 database-init.sh:需手动选择更新的服务
-
批量更新脚本 batch-database-init.sh:批量更新表结构或数据
-
数据升级
- 卡片管理新增一个卡片参数字段,原有的code唯一性改成了code和卡片参数做唯一性,需使用如下SQL修复工作台卡片数据
-- MySQL
UPDATE hpfm_dashboard_layout hdl
INNER JOIN ( SELECT id, CODE, card_params FROM hpfm_dashboard_card ) b ON b.CODE = hdl.CODE
SET hdl.card_id = b.id;
-- SqlServer
UPDATE hpfm_dashboard_layout
SET card_id = hpfm_dashboard_card.id
FROM
hpfm_dashboard_layout,
hpfm_dashboard_card
WHERE
hpfm_dashboard_layout.CODE = hpfm_dashboard_card.CODE;
-- ORACLE
UPDATE HPFM_DASHBOARD_LAYOUT hdl
SET ( hdl.CARD_ID ) = ( SELECT hdc.ID FROM HPFM_DASHBOARD_CARD hdc WHERE hdc.CODE = hdl.CODE )
WHERE
EXISTS ( SELECT 1 FROM HPFM_DASHBOARD_CARD hdc WHERE hdl.CODE = hdc.CODE );
-
注意:hzero-iam 的数据(菜单、权限等)按服务划分,可按需升级数据
-
hzero-resource 下提供了更新表结构和数据的脚本以及批量更新脚本,运行脚本交互式更新。
数据处理
- 弹性域表新增了多语言表,可通过如下SQL补全弹性域配置多语言数据
-- 插入中文
INSERT INTO hpfm_flex_detail_config_tl ( detail_config_id, lang, field_description ) (
SELECT
detail_config_id,
'zh_CN',
field_description
FROM
hpfm_flex_detail_config hfdc
WHERE NOT EXISTS ( SELECT 1 FROM hpfm_flex_detail_config_tl tl WHERE hfdc.detail_config_id = tl.detail_config_id AND tl.lang = 'zh_CN' )
);
-- 插入英文
INSERT INTO hpfm_flex_detail_config_tl ( detail_config_id, lang, field_description ) (
SELECT
detail_config_id,
'en_US',
field_description
FROM
hpfm_flex_detail_config hfdc
WHERE NOT EXISTS ( SELECT 1 FROM hpfm_flex_detail_config_tl tl WHERE hfdc.detail_config_id = tl.detail_config_id AND tl.lang = 'en_US' )
);
服务部署
-
数据升级完成之后再重启已升级的服务
-
初次启动服务时,建议将刷新缓存的配置开启,便于更新缓存中的数据。
-
hzero-platform
hzero: platform: init-cache: ${HZERO_PLATFORM_INIT_CACHE:true}
-
hzero-iam
hzero: start-init: # 是否初始化密码策略到缓存 password-policy: ${HZERO_START_INIT_PASSWORD_POPLICY:true} # 是否初始化用户到缓存 user: ${HZERO_START_INIT_USER:true} # 是否初始化缓存LDAP ldap: ${HZERO_START_INIT_LDAP:true} # 是否初始化缓存客户端 client: ${HZERO_START_INIT_CLIENT:true}
-
-
建议按如下顺序重启服务
- hzero-register
- hzero-admin
- hzero-gateway
- hzero-iam
- hzero-oauth
- hzero-platform
- 其它服务
前端升级指南
-
前端最小依赖至少包含如下模块
- hzero-front
- hzero-front-runtime
- hzero-front-hiam
- hzero-front-hpfm
-
调整 package.json 版本
在根目录下的
package.json
中更改hzero-front-*
的版本号;比如:
hzero-front-hiam: ^1.0.0
调整为hzero-front-hiam: ^1.1.0
; -
重新安装依赖
在终端中运行如下命令重新安装依赖
yarn —registry=http://nexus.saas.hand-china.com/content/groups/hzero-npm-group/
-
升级 hzero-front-runtime
使用 hzero-front-cli 来升级 hzero-front-runtime,更新配置;
hzero-front-cli .
注意:
1.只是用yarn升级hzero-front-runtime的话,新的环境变量等配置是不会被更新的。
2.在升级
hzero-front-runtime
时,最好备份一下更改过的环境变量相关的内容和 webpack 配置相关的修改。