incloud开发文档 5.1.0 Help

模块说明(重点)

服务类模块介绍

incloud-base-admin

使用的是基于springboot admin的依赖,对服务进行监控,注意需要使用此服务对其要监控的服务进行监控时, 需要添加上相应的依赖;

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>

如果使用了平台的 @ResourceConfiguration 注解后,默认已经放行了相应监控的资源url,如果不使用,需要自己配置放行相应URL及资源文件。

同时需要配置yaml文件打开相应的endpoints和管理端端口,如下:

... management: endpoints: web: exposure: include: "*" endpoint: health: show-details: ALWAYS server: port: 18003

incloud-base-gateway

作为微服务架构中的API网关,它主要负责请求路由、API组合、负载均衡、限流、熔断、认证与授权等功能。 在平台中我们用到他的功能主要有以下几个:

  • 请求路由:这是他基本的功能,所有的子服务都使用了网关配置的路由转发规则进行请求转发。

  • 动态路由:在数据建模中配合使用了动态接口,可以根据在线创建数据建模动态发布接口、取消接口,其原理就是利用了spring cloud gateway的动态路由特性。

  • 路径重写:主要应用在系统提供的认证模块中大量使用了路径重写,用于一个基础服务提供多种不同方式的请求URL。

  • 过滤器:在平台中使用到网关的过滤器,如果对Bear Token的处理等。

开启动态路由的配置

spring: cloud: gateway: httpclient: connect-timeout: 60000 response-timeout: 30s discovery: locator: #开启从注册中心动态创建路由的功能 enabled: true #使用小写服务名,默认是大写 lower-case-service-id: true

    filter的应用

    ... - id: incloud-base-main uri: lb://incloud-base-main predicates: - Path=/main/** filters: - StripPrefix=1 - name: TokenHeader order: 10000 ...

      路由的重写、增加参数、增加header等应用

      ... - id: biz-login uri: lb://incloud-base-main predicates: - Path=/biz/login filters: - PreserveHostHeader - RewritePath=/biz/login,/oauth2/token - AddRequestParameter=grant_type,client_credentials - AddRequestHeader=loginType,biz ...

        完整的网关配置

        incloud: table: packages: - com.netwisd.base.gateway.entity spring: cloud: gateway: httpclient: connect-timeout: 60000 response-timeout: 30s discovery: locator: #开启从注册中心动态创建路由的功能 enabled: true #使用小写服务名,默认是大写 lower-case-service-id: true routes: - id: sys-login uri: lb://incloud-base-main predicates: - Path=/sys/login filters: - PreserveHostHeader - RewritePath=/sys/login,/oauth2/token - AddRequestParameter=grant_type,client_credentials - AddRequestHeader=loginType,sys - id: biz-login uri: lb://incloud-base-main predicates: - Path=/biz/login filters: - PreserveHostHeader - RewritePath=/biz/login,/oauth2/token - AddRequestParameter=grant_type,client_credentials - AddRequestHeader=loginType,biz - id: client-login uri: lb://incloud-base-main predicates: - Path=/client/oauth filters: - PreserveHostHeader - RewritePath=/client/oauth,/oauth2/token - AddRequestParameter=grant_type,client_credentials - id: incloud-base-fine uri: lb://incloud-base-main predicates: - Path=/fine/** filters: - StripPrefix=1 order: 10000 - id: incloud-base-wf uri: lb://incloud-base-wf predicates: - Path=/wf/** filters: - StripPrefix=1 order: 10000 - id: incloud-base-main-websocket uri: lb:ws://incloud-base-main predicates: - Path=/ws/** order: 10000 - id: incloud-base-main uri: lb://incloud-base-main predicates: - Path=/main/** filters: - StripPrefix=1 - name: TokenHeader order: 10000 - id: incloud-product-portal uri: lb://incloud-product-portal predicates: - Path=/portal/** filters: - StripPrefix=1 order: 10000 - id: incloud-base-log uri: lb://incloud-base-log predicates: - Path=/log/** filters: - StripPrefix=1 order: 10000 - id: incloud-base-demo uri: lb://incloud-base-demo predicates: - Path=/demo/** filters: - StripPrefix=1 order: 10000 knife4j: gateway: enable: true routes: - name: Main服务 url: /main/v3/api-docs service-name: main-service order: 1 - name: Portal服务 url: /portal/v3/api-docs service-name: portal-service order: 2 - name: Wf服务 url: /wf/v3/api-docs service-name: wf-service order: 3 - name: Log服务 url: /log/v3/api-docs service-name: log-service order: 4 - name: 帮助服务 url: /log/v3/api-docs service-name: help-service order: 5 management: endpoint: gateway: enabled: true endpoints: web: exposure: include: gateway

        incloud-base-main

        主服务是做为平台的核心服务,所有业务都是基于主服务,所以主服务必须优先启动,主服务本身并没有什么实现,其功能都是相应的依赖包提供的。 其自身的配置主要有以下几项:

        MainConfig

        @Knife4jConfig(title = "主模块") @ResourceConfiguration(permitAll = {"/ctsApiController/**", "/smsTaskApiController/**", "/securityApiController/**", "/appApiController/**", "/sso/**", "/authenticationManagement/authenticator", "/fileinfo/stream", "/ws/msg", "/preview/info/**", "/ws/**"}) public class MainConfig { }

          nacos yaml

          incloud: table: packages: - com.netwisd.base.center.entity - com.netwisd.base.cts.entity - com.netwisd.base.dict.entity - com.netwisd.base.dynamic.entity - com.netwisd.base.file.entity - com.netwisd.base.log.entity - com.netwisd.base.mdm.entity - com.netwisd.base.model.entity - com.netwisd.base.msg.entity - com.netwisd.base.openapi.entity - com.netwisd.base.permission.entity - com.netwisd.base.sms.entity - com.netwisd.base.task.entity - com.netwisd.base.app.entity - com.netwisd.base.security.entity - com.netwisd.base.help.entity index: update: false openapi: prefix: main feign: #开启Feign熔断 hystrix: enabled: true seata: registry: type: nacos nacos: application: seata-server server-addr: ${INCLOUD_NACOS_SERVICE_HOST}:${INCLOUD_NACOS_SERVICE_PORT} group : "DEFAULT_GROUP" namespace: ${INCLOUD_NACOS_NAMESPACE} username: "nacos" password: "nacos" service: vgroup-mapping: incloud-base-mdm-seata-service-group: default tx-service-group: incloud-base-mdm-seata-service-group elasticsearch: address: ${INCLOUD_ES_SERVICE_HOST}:${INCLOUD_ES_SERVICE_PORT} canal: canalServer: ${INCLOUD_ES_SERVICE_HOST} canalPort: 11111 destination: incloud5 userName: canal spring: main: allow-bean-definition-overriding: true rocketmq: isSend: true disable: true namesrvAddr: ${INCLOUD_ROCKETMQ_SERVICE_HOST}:${INCLOUD_ROCKETMQ_SERVICE_PORT} orgTopics: geps_org_topic,oa_org_topic postTopics: geps_post_topic,oa_post_topic dutyTopics: geps_duty_topic,oa_duty_topic userTopics: geps_user_topic,oa_user_topic mdmUserCache: mdm_user_cache_topic mail: host: smtp.qq.com # 配置 smtp 服务器地址 port: 587 # smtp 服务器的端口 username: 2523079491@qq.com # 配置邮箱用户名(你的邮箱地址) password: gebtediiknpidhjd # 配置申请到的授权码(刚让复制的授权码) default-encoding: UTF-8 # 配置邮件编码 properties: mail: smtp: socketFactoryClass: javax.net.ssl.SSLSocketFactory # 配饰 SSL 加密工厂 debug: true jsms: appKey: 2e18a2cf2d222f148836f14c secret: 75f535a57308cce7e88ba4f2 jiguang: appKey: xxx masterSecret: xxxx templateId: 203952 file: isUploadPreview: true local: path: /root/incloud/statics prefix: /statics urlPrefix: ${file.local.prefix} exclude: - asp - sql - sh - exe - js - html - ashx minio: url: http://${INCLOUD_MINIO_SERVICE_HOST}:${INCLOUD_MINIO_SERVICE_PORT} accessKey: ${INCLOUD_MINIO_ACCESSKEY} secretKey: ${INCLOUD_MINIO_SECRETKEY} bucketName: ${INCLOUD_MINIO_BACKETNAME} aliyun: stsEndpoint: xxxx stsRoleArn: xxxx ossEndpoint: xxxx accessKeyId: xxxx accessKeySecret: xxxx bucketName: incloud5 domain: finereport: reportletsPath: /root/incloud5/statics/reportlets management: server: port: 18001 go: client: connect: true start: true server: level: debug path: logs/incloud-go

            pom.xml

            <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>incloud-base</artifactId> <groupId>com.netwisd</groupId> <version>5.1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>incloud-base-main</artifactId> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- openApi --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-openapi</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- wf-start--> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-wf</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-app</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- task --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-task</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- openapi --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-openapi</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- msg --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-msg</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- permission --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-permission</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- mdm --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-mdm</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- model --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-model</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- file --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-file</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-fine</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- dynamic --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-dynamic</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!--dict--> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-dict</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!--help--> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-help</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- security --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-security</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- CODE --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-common-code</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- nacos的注册发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- nacos的配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!-- reflectasm --> <dependency> <groupId>com.esotericsoftware.reflectasm</groupId> <artifactId>reflectasm</artifactId> <version>1.07</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> <!--<executable>true</executable> &lt;!&ndash; 默认值是${artifactId}-${version} &ndash;&gt; &lt;!&ndash; 改为如下设置,即可去除jar包的版本号 &ndash;&gt; <finalName>${artifactId}-${version}</finalName>--> </configuration> </plugin> </plugins> </build> </project>

            incloud-base-log

            此模块为系统的日志模块,此模块主要依赖es服务,需要配置中间件es,项目上使用时, 不必要有什么需要特别配置的,可以直接使用平台提供的服务包,平台以docker image形式提供。

            incloud-base-wf

            工作流服务包里主要是提供独立的工作流服务,由平台默认提供docker image,项目上也可以直接自己创建相应服务,添加上wf相应依赖

            pom.xml

            <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>incloud-base</artifactId> <groupId>com.netwisd</groupId> <version>5.1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>incloud-base-wf</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-wf</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- openApi --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-openapi</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- netwisd security模块 --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-oauth</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> <!-- nacos的注册发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- nacos的配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> </plugins> </build> </project>

            Dockerfile

            wf的Dockerfile需要注意一点,运行java的参数与其他服务不同,如下:

            CMD java --add-opens java.base/java.lang.reflect=ALL-UNNAMED -Xms128m -Xmx2048m -jar incloud-base-wf.jar

            wf的yaml配置

            incloud: table: packages: - com.netwisd.base.wf.entity openapi: prefix: wf camunda: bpm: database: table-prefix: incloud_base_wf_ schema-update: false #type: mysql type: postgres seata: registry: type: nacos nacos: application: seata-server server-addr: ${INCLOUD_NACOS_SERVICE_HOST}:${INCLOUD_NACOS_SERVICE_PORT} group : "DEFAULT_GROUP" namespace: ${INCLOUD_NACOS_NAMESPACE} username: "nacos" password: "nacos" service: vgroup-mapping: incloud-base-wf-seata-service-group: default tx-service-group: incloud-base-wf-seata-service-group management: server: port: 18003

            依赖模块介绍

            incloud-base-dependency-app

            app模块为应用管理模块,此模块后期做为应用商店的一部分,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-app</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-dict

            dict模块为数据字典模块,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-dict</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-dynamic

            dynamic模块为动态接口模块,做为数据建模依赖的一部分,做为model的一部分,做为业务服务和main服务不需要显示的引用。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-dynamic</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-file

            file模块为文件管理模块,做为平台的文件上传和文件数据源管理使用,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-file</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-fine

            fine模块为报表模块,做为报表文件管理使用,可以通过系统上传报表文件到指定共享目录中,供报表工具使用,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-fine</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-gateway

            gateway模块为网关模块,当前版本中可以做为gateway服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-gateway</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-help

            help模块为帮助模块,提供系统界面中的帮助文档上传功能,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-help</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-log

            log模块为帮助模块,当前版本中可以做为log服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-log</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-mdm

            mdm模块为主数据模块,提供组织、用户、岗位、角色、菜单、资源授权等基础服务的,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-mdm</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-model

            model模块为模型模块,提供数据建模、数据源管理、调用动态接口等作用,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-model</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-msg

            msg模块为消息模块,提供消息提醒功能,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-msg</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-openapi

            openapi模块为接口模块,提供接口注册、管理、授权等功能,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-openapi</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-permission

            permission模块为数据权限模块,提供数据层面的权限过滤功能,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-permission</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-security

            security模块为安全认证模块,提供登录、认证、单点、客户端管理等功能,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-security</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-task

            task模块为任务模块,提供定时任务调度功能,当前版本中可以做为main服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-task</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-base-dependency-wf

            wf模块为工作流模块,提供流程相关的所有功能,当前版本中可以做为wf服务的依赖直接引用即可。

            <!-- app --> <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-base-dependency-wf</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter

            incloud-starter模块为平台的starter模块,提供了平台的starter包,这些starter包主要是一些基础的技术层的服务包, 一般情况下跟业务的关系不大。

            incloud-starter-base-center

            主要是为任务管理中心提供依赖支持,业务上一般不使用。

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-center</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-base-oauth

            给业务服务提供统一认证、授权、单点登录等功能,业务服务中一般都需要集成此依赖。

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-oauth</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-base-openapi

            给业务服务提供接口注册、管理、授权等功能,业务服务中一般都需要集成此依赖。

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-openapi</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-base-permission

            给业务服务提供数据权限过滤功能,它提供了默认数据权限、自定义数据权限等多种方式,可以配置平台的数据权限设置使用,业务服务中如果有数据权限的功能,可以集成此模块。

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-permission</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-base-security

            基于spring-security、spring-security-oauth2-authorization-server的统一服务鉴权、认证的基础依赖封装, 主要是为incloud-starter-base-oauth、incloud-base-dependency-security提供基础的底层依赖,业务服务中不需要依赖。

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-security</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-base-wf

            基于camunda的工作流服务的starter包,主要是为incloud-base-dependency-wf提供基础的底层依赖,业务中需要使用工作流的,只需要集成这个starter即可。详细使用请参考【工作流

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-base-wf</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-common-core

            平台的基础核心依赖,几乎所有的服务都需要依赖这个,不过因为平台的其他starter都依赖了这个,所以业务服务中不需要显示的引用。

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-common-core</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-common-db

            平台的数据库依赖,主要封装了对数据库mysql/postgres/vastbase/dm/kingbaset等数据库,业务模块上需要使用数据库的自动化创建表、以及平台封装的数据库批量操作、数据源管理等功能的,都需要依赖这个。

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-common-db</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-common-es

            针对ES操作相关的封装,如果业务中使用到对es的相关操作,可以引用此依赖

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-common-es</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-common-log

            对系统和业务日志记录的封装,业务中的操作相关会通过此依赖记录并送到mq中,最终再存入到es中,所以引入此依赖的前提,是需要环境中有es和mq。

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-common-log</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-common-mq

            此依赖针对了rocketmq和rabbitmq进行了封装组件,使用不同的mq,需要引用不同的mq组件。

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-common-mq-rabbit</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>
            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-common-mq-rabbit</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-starter-common-task

            针对定时任务相关的封装。

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-starter-common-task</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            incloud-codegen

            codegen做为后台专用的代码生成,功能上提供与线上数据建模类似的功能,但更轻量、简单,不需要启动其他服务,更不需要启动前端、中间件等,只需要能访问相应数据库即可。

            详细组件使用情况请参考【代码生成

            incloud-go-starter

            平台部分功能使用了go底层依赖,incloud-go-starter就是java跟go通信的介质,基于google的开源框架gRPC实现,性能和安全性有保证。

            incloud-go-starter版本与平台的版本一一对应,对应pom如下:

            <dependency> <groupId>com.netwisd</groupId> <artifactId>incloud-go-starter</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency>

            异常处理

            由于是两个完全独立的程序,对于异常的处理,需要引入方做异常try catch处理,go端程序如果发生异常后,会通过gRPC框架返回, 客户端只需要捕获异常即可。

            API接口

            详细incloud-go-starter的API接口,请参考【Incloud-go-starter

            incloud-go

            incloud-go指实际的go serve程序,这里指的统称,具体程序分别为:

            • Incloud-go-serve

            • Incloud-go-code

            他们分别代表了go端的服务集 和 go代码生成程序集,请详细参考相应文档说明;

            根pom.xml

            <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.netwisd</groupId> <artifactId>incloud</artifactId> <version>5.1.0-SNAPSHOT</version> <modules> <module>incloud-base</module> <module>incloud-starter</module> <module>incloud-pojo</module> <module>incloud-go-starter</module> <module>incloud-codegen</module> </modules> <name>${project.artifactId}</name> <packaging>pom</packaging> <organization> <name>incloud</name> <url>http://www.netwisd.com</url> </organization> <properties> <spring-boot.version>3.0.2</spring-boot.version> <spring-cloud.version>2022.0.1</spring-cloud.version> <spring-cloud-alibaba.version>2022.0.0.0-RC1</spring-cloud-alibaba.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <hutool.version>5.8.11</hutool.version> <knife4j.version>4.0.0</knife4j.version> <jasypt.version>3.0.5</jasypt.version> <ttl.version>2.11.4</ttl.version> <minio.version>8.4.6</minio.version> <xxl.job.version>2.3.0</xxl.job.version> <security.oauth.version>2.3.6.RELEASE</security.oauth.version> <velocity.version>1.7</velocity.version> <mybatis-plus.version>3.5.3</mybatis-plus.version> <mp-dynamic-ds.version>3.6.1</mp-dynamic-ds.version> <druid.version>1.2.15</druid.version> <aliyun-sdk-oss.version>3.14.0</aliyun-sdk-oss.version> <jakarta.servlet.version>6.0.0</jakarta.servlet.version> <mysql.connector.version>8.0.31</mysql.connector.version> <commons.configuration>1.8</commons.configuration> <dozermapper.version>6.5.2</dozermapper.version> <hystrix.version>2.2.1.RELEASE</hystrix.version> <seata.version>1.4.2</seata.version> <elasticsearch.version>7.9.1</elasticsearch.version> <mail.version>1.4.7</mail.version> <commons-text.version>1.8</commons-text.version> <mybatis-starter.version>2.2.2</mybatis-starter.version> <camunda.version>7.16.0</camunda.version> <juel.version>2.2.7</juel.version> <canal-client.version>1.1.4</canal-client.version> <tdengine.version>2.0.34</tdengine.version> <lombok.version>1.18.24</lombok.version> <oauth2.version>2.2.5.RELEASE</oauth2.version> <okhttp.version>4.8.1</okhttp.version> <plugin-core.version>2.0.0.RELEASE</plugin-core.version> <jaxb-impl.version>2.3.1</jaxb-impl.version> <nimbus.version>9.22</nimbus.version> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <spring-authorization-server.version>1.0.0</spring-authorization-server.version> <slf4j.version>2.0.6</slf4j.version> <native.maven.plugin.version>0.9.19</native.maven.plugin.version> <rocketmq.version>4.9.3</rocketmq.version> <rocketmq.start.version>2.2.0</rocketmq.start.version> <dm.connector.version>8.1.1.193</dm.connector.version> <kingbase8.connector.version>8.6.0</kingbase8.connector.version> <postgresql.connector.version>42.5.2</postgresql.connector.version> <maven.compiler.plugin.version>3.10.1</maven.compiler.plugin.version> <maven.source.plugin.version>3.2.1</maven.source.plugin.version> <maven.deploy.plugin.version>3.1.1</maven.deploy.plugin.version> <maven.resources.plugin.version>3.3.1</maven.resources.plugin.version> </properties> <dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> <!--配置文件处理器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> <version>${spring-boot.version}</version> </dependency> <!--jasypt配置文件加解密--> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>${jasypt.version}</version> </dependency> <!--监控--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>${spring-boot.version}</version> </dependency> <!--Lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> <version>${lombok.version}</version> </dependency> <!--测试依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>${spring-boot.version}</version> </dependency> <dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>${plugin-core.version}</version> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-dependencies</artifactId> <version>${knife4j.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 熔断 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> <version>${hystrix.version}</version> </dependency> <!--spring cloud alibaba--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--web 模块--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot.version}</version> <exclusions> <!--排除tomcat依赖--> <exclusion> <artifactId>spring-boot-starter-tomcat</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> </exclusions> </dependency> <!--mybatis plus extension,包含了mybatis plus core--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-extension</artifactId> <version>${mybatis-plus.version}</version> </dependency> <!--mybatis--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis-plus.version}</version> </dependency> <!-- druid 连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </dependency> <!--mysql 驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.connector.version}</version> </dependency> <!-- 做数据copy,也可自定义更强大的copy做为springboot容器bean --> <dependency> <groupId>com.github.dozermapper</groupId> <artifactId>dozer-spring-boot-starter</artifactId> <version>${dozermapper.version}</version> </dependency> <!-- es,最新版本的 --> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>${elasticsearch.version}</version> </dependency> <!-- restful形式的客户端,官方好像已经不准备使用Transport了 --> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>${elasticsearch.version}</version> </dependency> <!-- 数据库自动创建中会到到他的一些工具类 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-text</artifactId> <version>${commons-text.version}</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>${jaxb-impl.version}</version> </dependency> <!-- 达梦 --> <dependency> <groupId>com.dameng</groupId> <artifactId>DmJdbcDriver18</artifactId> <version>${dm.connector.version}</version> </dependency> <!-- 人大金仓 --> <dependency> <groupId>com.kingbase8</groupId> <artifactId>kingbase8</artifactId> <version>${kingbase8.connector.version}</version> </dependency> <!-- postgresql --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>${postgresql.connector.version}</version> </dependency> </dependencies> </dependencyManagement> <build> <finalName>${project.artifactId}</finalName> <extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.7.1</version> </extension> </extensions> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <pluginManagement> <plugins> <plugin> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.7.1</version> <executions> <execution> <phase>initialize</phase> <goals> <goal>detect</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <jvmArguments>-parameters</jvmArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>${maven.source.plugin.version}</version> <executions> <execution> <id>attach-sources</id> <phase>verify</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>${maven.deploy.plugin.version}</version> <executions> <execution> <id>default-deploy</id> <phase>deploy</phase> <goals> <goal>deploy</goal> </goals> <!-- skip默认deploy插件的执行 --> <configuration> <skip>true</skip> </configuration> </execution> <execution> <id>deploy-file</id> <phase>deploy</phase> <goals> <goal>deploy-file</goal> </goals> <configuration> <!-- 开发阶段上传到snapshot仓库,上线阶段上传到release仓库 --> <repositoryId>${project.distributionManagement.snapshotRepository.id}</repositoryId> <url>${project.distributionManagement.snapshotRepository.url}</url> <file>${project.build.directory}/${project.artifactId}-${project.version}.jar</file> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> </configuration> </execution> </executions> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven.compiler.plugin.version}</version> <configuration> <target>${maven.compiler.target}</target> <source>${maven.compiler.source}</source> <encoding>UTF-8</encoding> <skip>true</skip> <release>${maven.compiler.target}</release> <!--开启JDK预览特性,我们要使用一些JDK的新特性 --> <compilerArgs> <arg>-parameters</arg> <!--<arg>&#45;&#45;enable-preview</arg>--> </compilerArgs> </configuration> </plugin> </plugins> </build> <repositories> <repository> <id>maven-public</id> <name>maven-public</name> <url>http://192.168.0.200:8081/repository/maven-public/</url> </repository> </repositories> <distributionManagement> <repository> <!-- release 版本上传用的仓库 --> <id>maven-netwisd</id> <!-- server 的 id --> <url>http://192.168.0.200:8081/repository/maven-netwisd/</url> <!-- 仓库的 URL --> </repository> <snapshotRepository> <!-- snapshot 版本上传用的仓库 --> <id>maven-netwisd-snapshot</id> <url>http://192.168.0.200:8081/repository/maven-netwisd-snapshot/</url> </snapshotRepository> </distributionManagement> </project>

            前端组件、功能模块介绍

            @platform-lib/base

            前端基础组件和功能模块,此模块包含基础组件以及基础功能,是开发中不可缺少的一个模块。详细使用方法参考前端组件

            引入方法如下:

            // 引入图标组件 import {NwIcon} from '@platform-lib/base' // 引入常用方法 import { Utils } from "@platform-lib/base";

            @platform-lib/mdm

            前端组织机构组件模块。主要包括组织、机构、人员、职位、岗位等操作组件。详细使用方法参考前端组件

            引入方法如下:

            // 引入选择人员组件 import { NwEmpPick } from "@platform-lib/mdm"

            @platform-lib/portal

            前端门户组件,用于门户组件开发。此模块为平台集成开发门户组件使用。

            @platform-lib/wf

            前端工作流组件,用于工作流开发。此模块为平台集成开发工作流业务使用。

            Last modified: 20 一月 2025