Skip to content

初始化业务应用

准备

环境准备

  • lcp-standalone.zip 下载的压缩包
  • JDK 1.8
  • maven3:需要有金证 maven 远程仓库访问权限与配置(没有账号可以走 OA 流程申请)
  • 四种数据库任选其一:
    • mysql 5.7+
    • oracle 12c+
    • SQL Server 2014(12.0)+
    • PostgreSQL 11.9+
  • nginx
  • node16.x:npm 远程仓库访问权限与 maven 一致

maven 配置

配置金证 maven 远程仓库访问权限

setting.xml 部分配置如下:

  • servers 部分
xml
<servers>
    <server>
        <id>nexus-kd</id>
        <username>maven账号</username>
        <password>maven密码</password>
    </server>
    <server>
        <id>nexus-releases-kd</id>
        <username>maven账号</username>
        <password>maven密码</password>
    </server>
    <server>
        <id>nexus-snapshots-kd</id>
        <username>maven账号</username>
        <password>maven密码</password>
    </server>
</servers>
<servers>
    <server>
        <id>nexus-kd</id>
        <username>maven账号</username>
        <password>maven密码</password>
    </server>
    <server>
        <id>nexus-releases-kd</id>
        <username>maven账号</username>
        <password>maven密码</password>
    </server>
    <server>
        <id>nexus-snapshots-kd</id>
        <username>maven账号</username>
        <password>maven密码</password>
    </server>
</servers>
  • mirrors 部分
xml
<mirrors>
    <mirror>
        <id>nexus-kd</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus for Kingdom</name>
        <url>http://10.200.0.5:8081/repository/public</url>
    </mirror>
</mirrors>
<mirrors>
    <mirror>
        <id>nexus-kd</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus for Kingdom</name>
        <url>http://10.200.0.5:8081/repository/public</url>
    </mirror>
</mirrors>
  • profiles 部分
xml
<profiles>
    <profile>
        <id>koca-cd</id>
        <repositories>
            <repository>
                <id>public</id>
                <url>http://10.200.0.5:8081/repository/public</url>
                <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
                <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>public</id>
                <url>http://10.200.0.5:8081/repository/public</url>
                <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
                <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>

<activeProfiles>
    <activeProfile>koca-cd</activeProfile>
</activeProfiles>
<profiles>
    <profile>
        <id>koca-cd</id>
        <repositories>
            <repository>
                <id>public</id>
                <url>http://10.200.0.5:8081/repository/public</url>
                <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
                <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>public</id>
                <url>http://10.200.0.5:8081/repository/public</url>
                <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
                <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>

<activeProfiles>
    <activeProfile>koca-cd</activeProfile>
</activeProfiles>

npm 配置

1.配置 npm 私库:

shell
npm config set registry http://10.200.0.5:8081/repository/npm-group
npm config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass
npm config set registry http://10.200.0.5:8081/repository/npm-group
npm config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass

2.配置 npm 登录账号(目前 KOCA 项目中使用的 UI 库和模版库需要具有相关权限的账号)

shell
npm config set always-auth true
npm login   # 输入对应的账号、密码、邮箱: xxx/xxx/xxx
npm config set always-auth true
npm login   # 输入对应的账号、密码、邮箱: xxx/xxx/xxx

3.查看 npm 配置信息:npm config list

文件结构

解压下载的压缩包:unzip lcp-standalone.zip,得到的目录结构如下:

./
├── db ---数据库脚本
├── lcp-runtime-bootapp ---后端文件
├── lcp-runtime-web ---前端初始化脚本
└── nginx-config ---nginx配置文件
./
├── db ---数据库脚本
├── lcp-runtime-bootapp ---后端文件
├── lcp-runtime-web ---前端初始化脚本
└── nginx-config ---nginx配置文件

后续安装过程中,如无单独说明,均为以此目录作为工作目录,如果涉及命令,则默认为Linux命令

全新安装

数据库初始化

准备:需要一个已有的空的数据库;

数据库初始化方式可在以下两种方式(flyway执行(推荐),手动执行)任选其一执行即可

flyway执行

properties
flyway.url=jdbc:oracle:thin:@127.0.0.1:1521/orclpdb
flyway.user=KOCA_LCP_BIZ
flyway.password=KOCA_LCP_BIZ
flyway.url=jdbc:oracle:thin:@127.0.0.1:1521/orclpdb
flyway.user=KOCA_LCP_BIZ
flyway.password=KOCA_LCP_BIZ
  • 进入flyway脚本目录:cd db/flyway,执行脚本(以oracle为例):
    1. linux执行:sh flyway-lcp.sh oracle
    2. windows执行:.\flyway-lcp.bat oracle

注意:flyway脚本执行时要根据选择的数据库跟上对应的参数,目前支持oracle、mysql、mssql、postgresql四种

手动执行

业务客户端sql脚本由多个模块组成,这里以oracle目录为例展示:cd db/oracle

全量部署所需的 sql 脚本如下:

shell
admin_user/table/all/*.sql
admin_user_permission/table/all/*.sql
admin_paramter/table/all/*.sql
admin-id-generator-seq/table/all/*.sql
admin_front_profile/table/all/*.sql
admin_workflow/table/all/*.sql
admin_file_manage/table/all/*.sql
admin_report/table/all/*.sql

admin_user/data/all/*.sql
admin_user_permission/data/all/*.sql
admin_paramter/data/all/*.sql
admin-id-generator-seq/data/all/*.sql
admin_front_profile/data/all/*.sql
admin_workflow/data/all/*.sql
admin_file_manage/data/all/*.sql
admin_report/data/all/*.sql

lcp-runtime-datasource/table/all/*.sql
lcp-runtime-model/table/all/*.sql
lcp-runtime-page/table/all/*.sql
lcp-runtime-component/table/all/*.sql
lcp-runtime-api/table/all/*.sql
lcp-runtime-common/table/all/*.sql
lcp-runtime-general-page/table/all/*.sql
admin_user/table/all/*.sql
admin_user_permission/table/all/*.sql
admin_paramter/table/all/*.sql
admin-id-generator-seq/table/all/*.sql
admin_front_profile/table/all/*.sql
admin_workflow/table/all/*.sql
admin_file_manage/table/all/*.sql
admin_report/table/all/*.sql

admin_user/data/all/*.sql
admin_user_permission/data/all/*.sql
admin_paramter/data/all/*.sql
admin-id-generator-seq/data/all/*.sql
admin_front_profile/data/all/*.sql
admin_workflow/data/all/*.sql
admin_file_manage/data/all/*.sql
admin_report/data/all/*.sql

lcp-runtime-datasource/table/all/*.sql
lcp-runtime-model/table/all/*.sql
lcp-runtime-page/table/all/*.sql
lcp-runtime-component/table/all/*.sql
lcp-runtime-api/table/all/*.sql
lcp-runtime-common/table/all/*.sql
lcp-runtime-general-page/table/all/*.sql

执行方式一:将这些 sql 脚本按照上述指定顺序复制到对应数据库中执行,即可完成数据初始化;

执行方式二:先借助工具将多个模块的sql合并为一个,再执行

  • 进入sql合并工具目录:cd db/sqlmigrate
  • 执行sql合并:java -jar sql-migrate.jar -c all-migrate.conf -d oracle,参数解释如下:
    • -d oracle: 代表数据库类型,支持mssql/mysql/oracle/postgresql,不写默认oracle
  • 执行完成后,得到全量sql文件:all.sql
  • 在数据库中执行:all.sql脚本即可

构建及运行

后端

  • 进入后端目录:cd lcp-runtime-bootapp

  • 编辑配置文件:src/main/resources/config/application-prod.yml,按需修改数据库连接信息:

配置项如下:

yml
koca:
  jdbc:
    default-data-sourceId: default
    data-sources:
      - id: default
        pool:
          url: jdbc:oracle:thin:@127.0.0.1:1521/orclpdb
          username: KOCA_LCP_BIZ
          password: KOCA_LCP_BIZ
          initialSize: 5
          minIdle: 10
          maxActive: 30
          maxWait: 60000
koca:
  jdbc:
    default-data-sourceId: default
    data-sources:
      - id: default
        pool:
          url: jdbc:oracle:thin:@127.0.0.1:1521/orclpdb
          username: KOCA_LCP_BIZ
          password: KOCA_LCP_BIZ
          initialSize: 5
          minIdle: 10
          maxActive: 30
          maxWait: 60000
  • maven 打包:mvn clean package,生成打包文件

  • 解压打包文件:tar -xvf target/lcp-runtime-bootapp-x.x.x-bin.tar.gz

  • 进入解压后得到的目录:cd lcp-runtime-bootapp-x.x.x,运行:

    1. linux 环境:sh ./bin/startup.sh
    2. window 环境:双击文件bin/startup.bat
  • 打开日志文件:tail -f -n 1000 logs/lcp-biz.log(其中-n 1000选项代表行数),当日志中打印started on port(s): 8098字样表示正常启动

  • 执行:jps命令,可以找到名称类似lcp-runtime-bootapp-x.x.x-assembly.jar的 Java 进程

前端

  • 进入前端目录:cd lcp-runtime-web

  • 创建工程:

    1. linux: sh create-web.sh
    2. windows: 双击create-web.bat
  • 等待前端工程创建完成;进入创建好的工程:cd lcp-web

  • 打包:pnpm build(此过程可能需要十几分钟)

  • 打包完成后会在当前工程目录下生成打包文件:dist

nginx 配置

  • 编辑 nginx 配置文件:nginx-config/lcp-biz.conf,修改前端静态资源目录:
location / {
    # 此处的路径修改为前端项目目录下的dist目录
    root	/opt/lcp-standalone/lcp-web/dist;
    index  index.html index.html;

    autoindex on;
    autoindex_exact_size on;
    autoindex_localtime on;
    client_max_body_size 100m;
}
location / {
    # 此处的路径修改为前端项目目录下的dist目录
    root	/opt/lcp-standalone/lcp-web/dist;
    index  index.html index.html;

    autoindex on;
    autoindex_exact_size on;
    autoindex_localtime on;
    client_max_body_size 100m;
}
  • 应用 nginx 配置文件,默认情况下:打开 nginx 配置文件(在 nginx 安装目录下的conf/nginx.conf),在 http 模块加入以下配置:
http {
  # 值应该为lcp-app安装目录下的nginx配置文件全路径
  # 如果是windows环境,则应该以盘符开头,例如:D:/opt/app/lcp-standalone/nginx-config/lcp-biz.conf
  include   /opt/application/lcp-standalone/nginx-config/lcp-biz.conf;
}
http {
  # 值应该为lcp-app安装目录下的nginx配置文件全路径
  # 如果是windows环境,则应该以盘符开头,例如:D:/opt/app/lcp-standalone/nginx-config/lcp-biz.conf
  include   /opt/application/lcp-standalone/nginx-config/lcp-biz.conf;
}
  • 重启 nginx,操作示例:
    • 先查看nginx进程:ps -aux | grep nginx
    • 如果有nginx进程,则重新加载配置即可: nginx -s reload
    • 如果没有nginx进程,则启动nginx: nginx

验证是否安装成功

前后端都启动完成后,浏览器访问http://部署到机器ip:4010;默认登录的用户名密码为:admin/123456

已有项目集成

前提

  • 后端:由于后端项目属于 koca 项目,所以已有项目需要是 koca 项目,否则可能导致集成失败;

  • 前端:由于前端项目是基于 kc 脚手架,所以已有项目需要是 kc 创建的项目,否则可能导致集成失败;

  • 版本:由于数据库脚本、后端接口、前端的版本是一一对应的,不同版本不兼容;所以此处统一限定版本为:5.0.1;如果版本不是 5.0.1,请先升级

初始化数据库

一、数据库初始化:对于已有的项目,本项目的依赖项则可能已经集成,已经集成的模块的 sql 脚本则无需重复执行,依赖详情如下:

  • admin_user:基础管理-用户管理模块

  • admin_user_permission:基础管理-用户权限模块

  • admin_paramter:基础管理-参数管理模块

  • admin-id-generator-seq:id 生成器模块

  • admin_front_profile:前端配置模块

  • admin_workflow:流程管理模块

  • admin_file_manage:文件管理模块

  • admin_report:报表引擎模块

    上述模块根据项目实际依赖情况选择性执行;执行方式按已有系统原有方式执行即可;

二、初始化低码模块 sql,低码模块也是由几个子模块构成,具体如下:

  • lcp-runtime-common:公共模块

  • lcp-runtime-datasource:数据源管理

  • lcp-runtime-model:模型管理

  • lcp-runtime-component:组件管理

  • lcp-runtime-page:页面管理

  • lcp-runtime-api:接口设计管理

    上述子模块可能有些项目已经集成了一部分,根据项目实际集成情况选择性执行;执行方式按已有系统原有方式执行即可;

后端集成

  • 添加 pom 依赖:
xml
<dependency>
    <groupId>com.szkingdom.koca.lcp</groupId>
    <artifactId>lcp-runtime-agent-starter</artifactId>
    <!-- x.x.x代表当前版本号 -->
    <version>x.x.x</version>
</dependency>
<dependency>
    <groupId>com.szkingdom.koca.lcp</groupId>
    <artifactId>lcp-runtime-agent-starter</artifactId>
    <!-- x.x.x代表当前版本号 -->
    <version>x.x.x</version>
</dependency>
  • 由于本项目需要集成业务系统的菜单功能,要实现与业务系统菜单的对接,就需要有统一的菜单接口规范;本项目默认使用 koca 菜单,并提供 koca 菜单的默认实现类,如果业务系统也使用 koca 菜单,则无需此步骤,否则请参考菜单扩展自行实现;

  • 编译并运行业务系统

后端配置项

  • 配置文件位置:
lcp-runtime-bootapp/src/main/resources/application.yml
lcp-runtime-bootapp/src/main/resources/config/application-prod.yml
lcp-runtime-bootapp/src/main/resources/application.yml
lcp-runtime-bootapp/src/main/resources/config/application-prod.yml

权限验证配置(用于 lcp-app 访问本业务客户端的权限验证):

  • koca.lcp.agent.auth.enable: 是否开启权限验证,默认开启
  • koca.lcp.agent.auth.username: 权限验证账号,默认:admin
  • koca.lcp.agent.auth.password: 权限验证密码,默认:123456

前端集成

  • 进入已有的前端项目,添加低码模块:kc add

选择低码模块:

  • lcp-runtime-page
  • lcp-workflow
  • admin-report

选择模块

版本选择:参考前提选择版本

  • 将初始化脚本(位于lcp-standalone/lcp-runtime-web/*-init.sh目录下)拷贝到当前项目目录下,然后执行初始化脚本:

    linux: sh add-web-init.sh

    windows: 双击add-web-init.bat

  • 编译并运行业务系统

验证

业务客户端安装完成后,就可以在 lcp-app 中添加并使用了,参考创建应用

常见问题

  1. 已有项目集成时,后端服务编译或启动阶段报错:java.lang.ClassNotFoundException: com.szkingdom.koca.lcp.xxx.Xxx

    • 该问题是集成前没能保持版本一致导致的,请确认项目koca版本与低码版本保持一致
    • 有些项目可能引入过部分低码模块,请确保这部分模块也要与当前低码版本保持一致,如果没有,则忽略,这部分模块具体如下:
    xml
    <dependencies>
      <!-- 请确保这些模块:如果有,则保持版本与当前版本一致;如果没有,则忽略 -->
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-common</artifactId>
      </dependency>
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-page</artifactId>
      </dependency>
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-datasource</artifactId>
      </dependency>
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-component</artifactId>
      </dependency>
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-model</artifactId>
      </dependency>
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-api</artifactId>
      </dependency>
    </dependencies>
    <dependencies>
      <!-- 请确保这些模块:如果有,则保持版本与当前版本一致;如果没有,则忽略 -->
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-common</artifactId>
      </dependency>
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-page</artifactId>
      </dependency>
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-datasource</artifactId>
      </dependency>
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-component</artifactId>
      </dependency>
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-model</artifactId>
      </dependency>
      <dependency>
        <groupId>com.szkingdom.koca.lcp</groupId>
        <artifactId>lcp-runtime-api</artifactId>
      </dependency>
    </dependencies>