• Changelog

    [2019-06-22] 本文档记录了 HZERO 0.10.0 中 网关整合、不同平台支持、平台服务、IAM服务、认证服务、调度服务 等服务的优化和BUG修复记录。

    重大功能变更

    1. 平台各个服务支持阿里云、百度云的部署,并能使用阿里云(注册中心、配置中心)、百度云(注册中心)进行替换HZERO的相关服务
    2. hzero-gateway 与 hzero-gateway-helper 合并,增加产品或项目自行实现网关鉴权逻辑支持
    3. 提供hzero-file、hzero-message、hzero-iam、hzero-import、hzero-report、hzero-scheduler服务合并到hzero-platform平台服务的支持
    4. 用户增加不同端类型,同一个用户可在不同端登录和用户管理需求
    5. OAuth 集成 CAS 单点登录客户端
    6. 去除开发的微服务对 Redis、不同类型数据库的强依赖
    7. 去除服务应用对不同注册中心、配置中心及对应客户端的强依赖,需选择配置中心、注册中心后,自行引入相关客户端依赖,下文已提供依赖参考
    8. 新增新版工作流服务hzero-workflow-plus,在原工作流的基础上整合配置,将编辑器和服务整合在一起
    9. 基于 hzero-parent 统一管理版本、服务 hotfix 升级等,强烈建议各个项目或产品通过继承 hzero-parent 统一管理依赖版本
    10. 为了适配服务合并等操作,需要解决部分API冲突问题,对部分API有小调整,请详见下文中的说明,依赖的项目升级版本后需检查并判断是否需要调整
    11. 老版工作流服务 hzero-workflowhzero-workflow-editor 最终版本定为 0.10.0.RELEASE,后续不再提供支持,可升级使用 hzero-workflow-plus

    注册中心

    HZERO 注册中心提供多个版本的支持,根据实际情况引入相应的依赖和修改对应的配置即可。

    Eureka 版本

    依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    

    配置

    eureka:
      instance:
        # 以IP注册到注册中心
        preferIpAddress: ${EUREKA_INSTANCE_PREFER_IP_ADDRESS:true}
        leaseRenewalIntervalInSeconds: 10
        leaseExpirationDurationInSeconds: 30
        # 服务的一些元数据信息
        metadata-map:
          VERSION: 0.10.0
          NODE_GROUP_ID: ${HZERO_NODE_GROUP_ID:0}
          PRODUCT_CODE: ${HZERO_PRODUCT_CODE:DEFAULT}
          PRODUCT_VERSION_CODE: ${HZERO_PRODUCT_VERSION_CODE:DEFAULT}
          PRODUCT_ENV_CODE: ${HZERO_PRODUCT_ENV_CODE:DEFAULT}
          SERVICE_VERSION_CODE: ${HZERO_SERVICE_VERSION_CODE:DEFAULT}
      client:
        serviceUrl:
          # 注册中心地址
          defaultZone: ${EUREKA_DEFAULT_ZONE:http://dev.hzero.org:8000/eureka}
        registryFetchIntervalSeconds: 10
        disable-delta: true
    

    Zookeeper 版本

    依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
    </dependency>
    

    配置

    spring:
      cloud:
        zookeeper:
          connect-string: localhost:2181
          discovery:
            enabled: true
            metadata:
              VERSION: 0.10.0
    

    示例:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.12</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    

    Nacos(edas) 版本

    依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    

    配置

    spring:
      cloud:
    	nacos:
      	  discovery:
            server-addr: 127.0.0.1:8848
            namespace: 3767dfeb-ec5f-4611-97bb-ee530d19ef89
            metadata:
              VERSION: 0.10.0
    

    Formula(cnap) 版本

    依赖

    <dependency>
        <groupId>com.baidu.formula</groupId>
        <artifactId>discovery-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>com.baidu.formula</groupId>
        <artifactId>env-core-spring-boot-starter</artifactId>
    </dependency>
    

    配置

    formula:
      discovery:
        service-url: http://cnapregistry.bj.baidubce.com:443/api/service-center
        customs: 
          VERSION: 0.10.0
    
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    </dependency>
    

    网关

    合并 hzero-gateway-helper

    hzero-gateway的适配改造

    注意

    配置中心

    HZERO 配置中心提供多版本的支持,根据实际情况引入相应的依赖和修改对应的配置即可。

    SpringCloud 版本

    依赖

    <dependency>
        <groupId>io.choerodon</groupId>
        <artifactId>choerodon-starter-config-client</artifactId>
    </dependency>
    

    配置

    spring:
      profiles:
        active: ${SPRING_PROFILES_ACTIVE:default}
      cloud:
        config:
          fail-fast: false
          # 是否启用配置中心
          enabled: ${SPRING_CLOUD_CONFIG_ENABLED:false}
          # 配置中心地址
          uri: ${SPRING_CLOUD_CONFIG_URI:http://dev.hzero.org:8010}
          retry:
            # 最大重试次数
            maxAttempts: 6
            multiplier: 1.1
            # 重试间隔时间
            maxInterval: 2000
          # 标签
          label: ${SPRING_CLOUD_CONFIG_LABEL:}
    

    Nacos(edas) 版本

    依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    

    配置

    spring:
      profiles:
        active: ${SPRING_PROFILES_ACTIVE:default}
      cloud:
        nacos:
          config:
            server-addr: 127.0.0.1:8848
            namespace: 3767dfeb-ec5f-4611-97bb-ee530d19ef89
    

    Formula(cnap) 版本

    依赖

    <dependency>
        <groupId>com.baidu.formula</groupId>
        <artifactId>config-client-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>com.baidu.formula</groupId>
        <artifactId>env-core-spring-boot-starter</artifactId>
    </dependency>
    

    配置

    formula-config基于Spring Cloud Config实现,所以配置方式与 Spring Cloud Config的配置方式相似。

    spring:
      profiles:
        active: ${SPRING_PROFILES_ACTIVE:default}
      cloud:
        config:
          fail-fast: false
          # 是否启用配置中心
          enabled: ${SPRING_CLOUD_CONFIG_ENABLED:true}
          # 配置中心地址
          uri: ${SPRING_CLOUD_CONFIG_URI:http://cnapregistry.bj.baidubce.com:443/api/config}
          retry:
            # 最大重试次数
            maxAttempts: 6
            multiplier: 1.1
            # 重试间隔时间
            maxInterval: 2000
          # 标签
          label: ${SPRING_CLOUD_CONFIG_LABEL:}
    

    注意:必须确保引入了spring-cloud-starter-config-client且开启配置中心,否则会启动失败。 原因:formula目前打包的all依赖formula-cnap依赖了formula-parent,但formula-parent暂未发布,所以无法为我们自动引入spring-cloud-starter-config-client等依赖。

    spring.cloud.config.enabled: true
    

    hzero-iam

    功能优化

    新增功能

    问题修复

    代码优化

    Bug 修复

    API

    API 删除

    API 新增

    新增消息模板

    表结构调整

    调整表结构

    addColumn(tableName: 'iam_user') {
        column(name: "user_type", type: "varchar(30)", defaultValue: "P", remarks: "用户类型(P/C),平台用户/C端用户,默认P")  {constraints(nullable:"false")}
    }
    

    hzero-oauth

    功能调整

    OAuth 登录相关API请参考:OAuth Token API

    新增功能

    问题修复

    代码优化

    Bug 修复

    API

    API 新增

    hzero-platform

    功能调整

    功能优化

    UPDATE hpfm_dashboard_card SET fd_level=
    CASE fd_level WHEN 'site' THEN 'SITE'
    WHEN 'tenant' THEN 'TENANT'
    ELSE 'SITE' END 
    

    新增功能

    问题修复

    Bug 修复

    API

    API 新增

    API 调整

    值集

    过期值集(禁用)

    表结构调整

    新增表

    调整表结构

    hpfm_dashboard_card_clause.groovy: addColumn("rank")
    hpfm_event.groovy: addColumn("tenant_id"),updateUniqueConstraint("event_code -> event_code,tenant_id")
    hpfm_database_tenant.groovy: updateUniqueConstraint("datasource_id,tenant_id -> database_id,tenant_id")
    

    hzero-plugin-parent

    问题修复

    代码优化

    Bug 修复

    API

    API 新增

    hzero-message

    功能调整

    功能优化

    新增功能

    问题修复

    代码优化

    API

    API调整

    值集

    新增值集

    表结构调整

    新增表

    调整表结构

    hmsg_user_message.groovy: add column("user_message_type_code");update UniqueConstraint("user_id,message_id,tenant_id,user_message_type_code")
    
    hmsg_receiver_type.groovy: add column("type_mode_code")
    
    hmsg_receive_config.groovy: add column("tenant_id")
    
    hmsg_user_receive_config.groovy: add column("tenant_id")
    
    hmsg_receiver_type: dropNotNullConstraint("route_name","api_url")
    
    

    hzero-portal

    功能调整

    功能优化

    问题修复

    代码优化

    Bug 修复

    API

    API 新增

    表结构调整

    调整表结构

    hptl_templates.groovy: addColumn("tenant_id","template_level"), updateUniqueConstraint("template_code" -> "template_code,tenant_id")
    

    hzero-file

    功能调整

    功能优化

    新增功能

    问题修复

    Bug 修复

    API

    API 删除

    API 新增

    表结构调整

    调整表结构

    hfle_file.groovy: addColumn(tableName: 'hfle_file') {
                column(name: "storage_code", type: "varchar(" + 30 * weight + ")", remarks: "存储编码")
            }
    
    addColumn(tableName: 'hfle_storage_config') {
                column(name: "prefix_strategy", type: "varchar(" + 30 * weight + ")", remarks: "文件名前缀策略")
            }
    
    hfle_storage_config.groovy: dropUniqueConstraint(tableName: 'hfle_storage_config', constraintName: 'hfle_storage_config_u1')
            addColumn(tableName: 'hfle_storage_config') {
                    column(name: "storage_code", type: "varchar(" + 30 * weight + ")", remarks: "存储编码")
            }
            addUniqueConstraint(tableName: 'hfle_storage_config', columnNames: 'tenant_id,storage_type,storage_code', constraintName: 'hfle_storage_config_u1')
    
    

    hzero-scheduler

    功能调整

    新增功能

    问题修复

    Bug 修复

    API

    API 新增

    * [GET] /v1/concurrents/usable
    * 编码:hzero-scheduler.concurrent-site-level.pageConcurrentByTenantId
    * 说明:用户可选并发程序列表(平台级)
    * 原因:平台级新建并发请求使用租户级的api,存在问题
    

    值集

    新增值集

    表结构调整

    调整表结构

    hsdr_job_info.groovy: addColumn(tableName: 'hsdr_job_info') {
                column(name: "serial", type: "tinyint(1)",   remarks: "串行标识")
            }
    
    

    hzero-report

    功能调整

    功能优化

    新增功能

    问题修复

    Bug 修复

    hzero-workflow

    问题修复

    Bug 修复

    hzero-workflow-plus

    新版工作流

    新增功能

    值集

    新增值集

    表结构调整

    新增表