基于KOCA-RELEASE搭建KOCA门户

搭建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:同样参考 模块-数据库表,选择模块对应的数据库表。

    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 migrate

          oracle示例: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
            
        • 执行命令
          #同场景一
      • 第二种方法:sql-migrate.jar工具
        ```
        #同场景一
        #Linux:
        java -jar sql-migrate.jar -a -v -d oracle -m “admin_dtc” -M admin.sql
        #windows:
        TODO
      • 第三种方法手动执行
    • 场景三: ** 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
        
      • 第三种方法手动执行