搭建KOCA门户分为两种方式,另一种请参考 基于交付件搭建KOCA门户
flyway使用手册参考:【工具链】flyway使用详解
KOCA交付件下载:金证开发者社区
脚本下载:seizeAllSql.bat (436 字节)
seizeAllSql.sh (322 字节)
seizeUpdateSql.bat (812 字节)
seizeUpdateSql.sh (825 字节)
sqlPath.txt (792 字节)
updateSqlPath.txt (159 字节)
sql-migrate.zip (55.5 KB)
全文是基于KOCA4.2.0为例
1、资源准备
2、环境准备
前端环境:VUE2的环境
前端环境:VUE3的环境
后端环境: KOCA快速开发 | 金证开发者社区 1.2后端环境准备部分
3、KOCA门户搭建
3.1 前后端版本对应关系表
3.2 门户-前端模块-数据库脚本对应关系表
3.3 标准门户搭建
-
1 第一步首先是前端构建
参考模块-数据库表,选择要集成的组件,通过KC CREATE 命令选择门户相应的前端模块
ADMIN-V3:
kc create admin-msa-v3 -f --archetype=koca-template-v3 --version latest --uiversion latest --modules=admin-basic,admin-file-manage,admin-workflow,admin-jobschedule,admin-biz-log,admin-oem,admin-message,admin-role-interceptor,admin-report, --preset=3
ADMIN-V2:
kc create admin-msa-v2 -f --archetype=koca-template --version latest --uiversion latest --modules=admin-basic,admin-file-manage,admin-workflow,admin-report,admin-jobschedule,admin-common-confirm,admin-biz-log,admin-view-module,admin-app-access,admin-business,admin-backlog,admin-oem,admin-message,admin-document,registry-manager, --preset=2
AMO:
kc create amo-standalone -f --archetype=koca-template-v3 --version latest --uiversion latest --modules=admin-basic,amo-cmdb,amo-alert,amo-monitor,amo-cmp,amo-conf,amo-logging,amo-operation,amo-tracing,amo-prettybi,amo-topology,registry-manager,admin-jobschedule,config-center, --preset=3
LCP-RUNTIME:
kc create lcp-runtime -f --archetype=koca-template-v3 --version latest --uiversion=latest --modules=admin-basic,lcp-runtime-model,lcp-runtime-component,lcp-runtime-page,lcp-runtime-api,lcp-workflow,lcp-runtime-api-manage,lcp-workflow-page, --preset=3
web接口前缀配置请参考:KOCA快速开发 | 金证开发者社区 -
2 第二步执行数据库脚本
A:同样参考 模块-数据库表,选择模块对应的数据库表。-
ADMIN标准门户对应的数据库表
-
LCP-RUNTIME标准门户对应的数据库表
-
AMO标准门户对应的数据库表
B:执行数据库表
-
场景一:初次使用KOCA,从0开始全量执行KOCA4.2.0的数据库脚本,admin_dtc模块用不到,所以sqlPath.txt中没有添加此模块
-
第一种方法:FLYWAY
注意:flyway推荐的版本是6.2.2,mysql:5.7.0 oracle:12.2.0.2 sqlserver:2017
同时flyway社区版本不支持回滚,需要手动回滚,在升级数据库前需要做好备份
脚本目录结构
-
Linux系统
- seizeAllSql.sh
mkdir -p ./all-sql rm -rf ./all-sql/* #sed -i 's/\r//' ./sqlPath.txt for line in `cat ./sqlPath.txt` do for sql in ` find ./$line -type f -name '*.sql' | grep 'ALL' ` do cp -f $sql ./all-sql/ done done cd all-sql for file in `ls -R | grep "ALL*"` do newfile=${file/ALL/V$1} mv $file $newfile done
-
sqlPath.txt
mysql/01.koca-admin/admin-id-generator-seq
mysql/01.koca-admin/admin_app_access
mysql/01.koca-admin/admin_backlog
mysql/01.koca-admin/admin_batch_manager
mysql/01.koca-admin/admin_biz_log
mysql/01.koca-admin/admin_business_flow
mysql/01.koca-admin/admin_common_confirm
mysql/01.koca-admin/admin_document
mysql/01.koca-admin/admin_file_manage
mysql/01.koca-admin/admin_front_data_collect
mysql/01.koca-admin/admin_front_profile
mysql/01.koca-admin/admin_jobschedule
mysql/01.koca-admin/admin_mq
mysql/01.koca-admin/admin_oem
mysql/01.koca-admin/admin_paramter
mysql/01.koca-admin/admin_report
mysql/01.koca-admin/admin_role_interceptor
mysql/01.koca-admin/admin_user
mysql/01.koca-admin/admin_user_permission
mysql/01.koca-admin/admin_view_module
mysql/01.koca-admin/admin_workflow -
执行命令:[命令+版本号]
sh seizeAllSql.sh 4.2.0
// 执行上述命令会在当前目录生成all-sql目录,可以看到脚本开头是V4.2.0
ls all-sql
V4.2.0_0_1000__koca_admin_user.sql V4.2.0_1_1031__WORKFLOW.sql
V4.2.0_0_1010__koca_admin_permission.sql V4.2.0_1_1032__SYS_MENU_WORKFLOW.sql
V4.2.0_0_1020__koca_admin_paramter.sql V4.2.0_1_1041__REPORT.sql
V4.2.0_0_1030__koca_admin_workflow.sql V4.2.0_1_1042__SYS_MENU_REPORT.sql
…
-
Windows系统
- seizeAllSql.bat
@echo off cd %~dp0 md all-sql del /s/q all-sql*.* for /f “delims=,” %%l in (sqlPath.txt) do ( cd %~dp0 cd %%l for /f “delims=,” %%s in (‘dir *.sql /a-d/s/b^|findstr “ALL”’) do ( copy “%%s” “%~dp0\all-sql” ) ) cd %~dp0 cd all-sql set str=ALL set ChangeStr=%1 for /f “delims=!” %%f in (‘dir /a-d/b *’) do ( set str1=%%f setlocal EnableDelayedExpansion set “str2=!str1:%str%=%ChangeStr%!” ren “%%f” “!str2!” ) cd %~dp0
- sqlPath.txt
如上
-
执行命令:[命令+版本号]
seizeAllSql.bat 4.2.0
// 执行上述命令会在当前目录生成all-sql目录,可以看到脚本开头是V4.2.0
dir all-sql
V4.2.0_0_1000__koca_admin_user.sql V4.2.0_1_1031__WORKFLOW.sql
V4.2.0_0_1010__koca_admin_permission.sql V4.2.0_1_1032__SYS_MENU_WORKFLOW.sql
V4.2.0_0_1020__koca_admin_paramter.sql V4.2.0_1_1041__REPORT.sql
V4.2.0_0_1030__koca_admin_workflow.sql V4.2.0_1_1042__SYS_MENU_REPORT.sql
…
-
执行命令
进入到目录04.databaes目录
mysql示例,执行 flyway,mysql数据库用户名:root,密码:123456,数据库名:koca_demo
清空数据库:flyway -driver=com.mysql.cj.jdbc.Driver -url=‘jdbc:mysql://10.202.63.128:3306/koca_demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowMultiQueries=true’ -user=root -password=123456 clean
执行数据库脚本:flyway -locations=filesystem:all-sql -driver=com.mysql.cj.jdbc.Driver -url=‘jdbc:mysql://10.202.63.128:3306/koca_demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowMultiQueries=true’ -user=root -password=123456 -placeholderReplacement=false -validateOnMigrate=false migrateoracle示例:oracle数据库用户名:koca_demo,密码:koca_demo
清空数据库:flyway -driver=oracle.jdbc.OracleDriver -url=‘jdbc:oracle:thin:@127.0.0.1:1521/orclpdb’ -user=koca_demo -password=koca_demo clean
执行数据库脚本:flyway -locations=filesystem:all-sql -driver=oracle.jdbc.OracleDriver -url=‘jdbc:oracle:thin:@127.0.0.1:1521/orclpdb’ -user=koca_demo -password=koca_demo -placeholderReplacement=false -validateOnMigrate=false migrate
-
-
第二种方法:sql-migrate.jar工具
使用命令参照文档:可提取指定的模块全量sql,增量sql,并合成一个sql文件,例如:
#Linux:
java -jar sql-migrate.jar -a -v -d oracle -m “admin*” -M admin.sql
#windows:
TODO
#命令解析:
-a:sql迁移模式, 全量脚本, 默认全量
-v:打印详细过程
-d:数据库类型, mssql/mysql/oracle, 默认 mysql
-m:指定模块, 多个模块用英文逗号隔开, 支持正则表达式, 默认全部
-l:交付件数据库脚本目录, 默认当前文件夹
-M:合并所有脚本生成一个指定文件名的文件 -
第三种方法手动执行
-
-
场景二: 由于业务发展需要,在场景一的基础上想使用KOCA4.2.0版本的admin_dtc模块
-
第一种方法:FLYWAY
思路:查看flyway_schema_history的版本列表
最大的版本号是4.2.0.1.1101,要保证admin_dtc的版本号是否比4.2.0.1.1101要大,如何保证请看下面执行命令版块。-
Linux系统
-
seizeAllSql.sh
#同场景一
-
sqlPath.txt
mysql/01.koca-admin/admin_dtc -
执行命令[命令+版本号]
# 此处要注意,版本号写成4.2.1(建议版本的范围4.2.x,要大于4.2.0小于4.3.0) sh seizeAllSql.sh 4.2.1 # 执行上述命令会在当前目录生成all-sql目录,可以看到脚本开头是V4.2.1 ls all-sql V4.2.1_1_1_160__admin_dtc.sql
-
-
Windows系统
-
seizeAllSql.bat
#同场景一
-
sqlPath.txt
mysql/01.koca-admin/admin_dtc
-
执行命令[命令+版本号]
# 此处要注意,版本号写成4.2.1(建议版本的范围4.2.x,要大于4.2.0小于4.3.0) sh seizeAllSql.bat 4.2.1 # 执行上述命令会在当前目录生成all-sql目录,可以看到脚本开头是V4.2.1 dir all-sql V4.2.1_1_1_160__admin_dtc.sql
-
seizeAllSql.bat
-
执行命令
#同场景一
-
Linux系统
-
第二种方法:sql-migrate.jar工具
```
#同场景一:
#Linux:
java -jar sql-migrate.jar -a -v -d oracle -m “admin_dtc” -M admin.sql
#windows:
TODO - 第三种方法手动执行
-
第一种方法:FLYWAY
-
场景三: ** admin_tenant、admin_user、admin_paramter、admin_user_permission想从KOCA4.2.0升级到4.6.0**
-
第一种方法:FLYWAY
-
Linux系统
- seizeUpdateSql.sh
if [ $# -ne 2 ] then echo "缺少参数" echo "参考格式:seizeUpdateSql.sh 当前版本号 目标版本号" echo "例如:seizeUpdateSql.sh 4.2.0 4.6.0" exit 1 fi mkdir -p ./update-sql rm -rf ./update-sql/* #sed -i 's/\r//' ./updateSqlPath.txt for line in `cat ./updateSqlPath.txt` do for sql in ` find ./$line -type f -name '*.sql' | grep 'V' ` do echo $sql #通过/把sql路径分割 array=(${sql//// }) length=${#array[*]} if [ $length -lt 2 ] then continue fi #获取版本号 version=${array[length-2]} startVersion=$1 endVersion=$2 # 拷贝符合条件的sql if [[ "$version" > "$1" ]] && [[ "$version" < "$2" ]] || [[ "$version" = "$2" ]] then cp -f $sql ./update-sql/ fi done done
-
updateSqlPath.txt
mysql/01.koca-admin/admin_paramter
mysql/01.koca-admin/admin_role_interceptor
mysql/01.koca-admin/admin_user
mysql/01.koca-admin/admin_user_permission -
执行命令[命令+版本号]
# 此处要注意,下面命令的含义是指目前是4.2.0版本,要升级到4.6.0 sh seizeUpdateSql.sh 4.2.0 4.6.0 # 执行上述命令会在当前目录生成update-sql目录,update-sql目录提取了updateSqlPath.txt模块从4.3.0--4.6.0中的升级脚本 ll update-sql V4.3.0_0_1_011__admin_paramter.sql V4.6.0_0_1_001__koca_user_role.sql V4.6.0_0_1_002__perm_menu_role.sql V4.6.0_0_1_011__admin_paramter.sql V4.6.0_1_1_011__sys_dictionary_item_update.sql
-
Windows系统
- seizeUpdateSql.bat
REM 获取参数个数 set argC=0 for %%x in (%*) do Set /A argC+=1 if %argC% LSS 2 ( GOTO PARAM_ERROR ) REM 创建目录 cd %~dp0 md update-sql REM 删除目录下所有的文件 del /s/q update-sql\*.* for /f %%l in (updateSqlPath.txt) do ( REM 获取bat当前路径 cd %~dp0 REM 进入到模块目录 cd %%l for /f %%s in ('dir *.sql /a-d/s/b^|findstr "V"') do ( for %%I in (%%s) do ( REM 获取版本号 echo %%~nI set str=V_ for /f "tokens=1* delims=_" %%a in ("%%~nI") do ( @echo %%a if %%a GTR V%1 ( if %%a LEQ V%2 (copy "%%s" "%~dp0\update-sql") ) ) ) ) ) GOTO END :PARAM_ERROR echo "缺少参数" echo "参考格式:seizeUpdateSql.sh 当前版本号 目标版本号" echo "例如:seizeUpdateSql.bat 4.2.0 4.6.0" GOTO END :END EXIT /B 0
-
updateSqlPath.txt
mysql/01.koca-admin/admin_paramter
mysql/01.koca-admin/admin_role_interceptor
mysql/01.koca-admin/admin_user
mysql/01.koca-admin/admin_user_permission -
执行命令[命令+版本号]
# 此处要注意,下面命令的含义是指目前是4.2.0版本,要升级到4.6.0 seizeUpdateSql.bat 4.2.0 4.6.0 # 执行上述命令会在当前目录生成update-sql目录,update-sql目录提取了updateSqlPath.txt模块从4.3.0--4.6.0中的升级脚本 dir update-sql V4.3.0_0_1_011__admin_paramter.sql V4.6.0_0_1_001__koca_user_role.sql V4.6.0_0_1_002__perm_menu_role.sql V4.6.0_0_1_011__admin_paramter.sql V4.6.0_1_1_011__sys_dictionary_item_update.sql
-
执行命令
同场景一
-
-
第二种方法:sql-migrate.jar工具
Linux: java -jar sql-migrate.jar -u -v -d oracle -m admin_paramter,admin_role_interceptor,admin_user,admin_user_permission -f 4.2.0 -t 4.6.0 Windows: TODO
- 第三种方法手动执行
-
第一种方法:FLYWAY
-
ADMIN标准门户对应的数据库表