代码生成是根据当前应用关联的业务域和商业能力数据模型生成对应的接口定义、接口实现、领域服务类、聚合根、值对象、实体类、数据对象类、数据ORM以及常用的操作,包括增、删、改、查等相关操作代码,以完成业务活动的开发。本文介绍如何生成代码。

前提条件

  • 当前应用为中台中心应用,且已关联了业务域或商业能力。
  • 已获取接口定义。如何生成接口定义,请参见管理接口
说明 已发布的应用不支持代码生成功能。

操作步骤

  1. 登录BizWorks,单击左侧导航栏1图标。在概览页面的左上角,单击1图标,从项目下拉列表中选择目标项目实例。1
  2. 单击1图标,在应用列表页面,单击目标中心应用名称。
  3. 在目标中心应用导航栏中,选择应用开发 > 代码生成
  4. 代码生成页面,单击代码生成
  5. 代码生成面板,查看内容和版本,选择合适的代码分支,并设置相关参数。代码分支

    代码分支与生成逻辑如下:

    代码分支 生成逻辑
    新分支 直接全量生成新代码。
    基于旧分支checkout新分支
    需要在已有代码的基础上重新生成代码:
    • 模型中存在但代码中不存在,直接生成新的代码。
    • 模型中存在且代码中也存在,但代码中已经做过修改,则用模型覆盖。
    • 代码模型中存在,代码中也存在,并且两者相同的,不做任何处理。
    • 模型中不存在但代码中存在的,不做任何处理。
    说明 不显示生成代码结构部分,只能根据原有分支的结构生成代码。
    生成到已有分支

    代码分支与参数说明如下:

    • 新分支
      参数 说明
      新建分支 填写新分支的名称,默认格式为:develop_yyyyMMdd_HHmmss。限制如下:
      • 由大小写字母、数字、中文或字符组成。
      • 字符数不超过100位。
      GroupId 填写工程GroupId的名称。限制如下:
      • 由小写字母、数字和小数点组成。
      • 需以小写字母开头,且需以小写字母或数字结尾。
      • 字符数不超过64位。
      完成GroupId首次填写后,您可以单击点击修改,在编辑中心应用面板维护GroupId1具体操作,请参见设置代码项目基本信息
      ArtifactId 默认为该应用的编码。您可以修改此编码,限制如下:
      • 由小写字母、数字和短横线(-)组成。
      • 需以小写字母开头,且需以小写字母或数字结尾。
      • 字符数不超过64位。
      完成ArtifactId首次填写后,您可以单击点击修改,在编辑中心应用面板维护ArtifactId1具体操作,请参见设置代码项目基本信息
      Version 默认值为1.0.0。您可以修改此描述,限制如下:
      • 由大小写字母、数字、小数点和短横线(-)组成。
      • 需以字母或数字开头和结尾。
      • 字符数不超过64位。
      包路径 默认格式为groupid.artifactid。您可以修改此路径描述,限制如下:
      • 由小写字母、数字和小数点组成。
      • 需以小写字母开头,且需以小写字母或数字结尾。
      • 字符数不能超过128位。
      应用架构 支持DDD四层架构与MVC三层架构。
      生成代码结构(应用架构选择DDD四层架构时选择)
      支持一级Module和二级Module,默认选择二级Module。
      • 一级Module:Module直接按DDD架构实践分层,在各Module内部用包划分业务域和商业能力。
      • 二级Module:第一级按业务域和商业能力划分,第二级按DDD架构时间分层。
      技术组件

      默认选择MyBatis。技术组件支持Nacos、Swagger、JPA等,可多选。

    • 基于旧分支checkout新分支
      参数 说明
      基础分支 在基础分支列表中,选择所需的旧分支。
      新建分支 填写新分支的名称,默认格式为:develop_yyyyMMdd_HHmmss。新分支名称的限制如下:
      • 由英文、数字、中文或字符组成。
      • 字符数不超过100位。
      GroupId 项目信息自动带出基础分支所对应的项目信息。
      您可以单击点击修改,在编辑中心应用面板维护GroupId1具体操作,请参见设置代码项目基本信息
      ArtifactId 项目信息自动带出基础分支所对应的项目信息。
      您可以单击点击修改,在编辑中心应用面板维护ArtifactId1具体操作,请参见设置代码项目基本信息
      Version 不可修改。项目信息自动带出基础分支所对应的项目信息。
      包路径
      应用架构 支持DDD四层架构与MVC三层架构。
      技术组件
      • 默认勾选基础分支生成脚手架时选择的技术组件。
        • 如果基础分支在生成脚手架时没有选择技术组件,则默认都不勾选。
        • 如果基础分支在生成脚手架时有选择对应的技术组件,则默认勾选支持的技术组件。
      • 默认选择的技术组件不支持重新选择。
    • 生成到已有分支
      参数 说明
      基础分支 在基础分支列表中,选择所需的旧分支。
      GroupId 项目信息自动带出基础分支所对应的项目信息。
      您可以单击点击修改,在编辑中心应用面板维护GroupId1具体操作,请参见设置代码项目基本信息
      ArtifactId 项目信息自动带出基础分支所对应的项目信息。
      您可以单击点击修改,在编辑中心应用面板维护ArtifactId1具体操作,请参见设置代码项目基本信息
      Version 不可修改。项目信息自动带出基础分支所对应的项目信息。
      包路径
      应用架构 支持DDD四层架构与MVC三层架构。
      技术组件
      • 默认勾选基础分支生成脚手架时选择的技术组件。
        • 如果基础分支在生成脚手架时没有选择技术组件,则默认都不勾选。
        • 如果基础分支在生成脚手架时有选择对应的技术组件,则默认勾选支持的技术组件。
      • 默认选择的技术组件不支持重新选择。
    说明 如果您选择添加技术组件生成代码,则系统会在脚手架默认添加对应依赖、配置、示例代码、使用说明。如果涉及外部服务(例如:Nacos、RocketMQ等),则不会自动部署一套外部服务,主要提供脚手架支持。
    • 如果您将应用的生成代码结构参数设置为一级Module,单击生成代码

      平台在生成代码时前后端都不会校验该应用是否关联了业务域或商业能力。如果当前应用没有实现任何业务域或商业能力,生成的代码中有app、client等目录,且目录下面会有demo代码。

    • 如果您将应用的生成代码结构参数设置为二级Module,且如果当前应用没有实现任何业务域或商业能力,完成其他参数配置,单击生成代码后界面会弹出报错信息。

      请您先完成业务域或商业能力的构建。具体操作,请参见创建与管理业务域创建与管理商业能力

    • 如果您将应用的生成代码结构参数设置为二级Module,且如果当前应用已实现业务域或商业能力,完成其他参数配置后,单击代码生成

执行结果

代码生成后,您可以进入对应的代码仓库,查看生成的分支,包含appentrydomaininfrastructureclientextensionstarter7个基础模块(module)。脚手架代码框架每个module的职责说明如下:
module 职责 描述
app 元数据表达转化。 业务域应用服务方法、商业能力服务方法出入参的元数据表达转化。同时,业务方也可以在这里写应用实现。
entry 核心业务入口。 业务入口,当应用通过Spring Cloud实现,则controller在该模块编写,通过controller调用底层业务逻辑形成闭环,并将DTO与domain entity进行转换。
domain 领域实现层,实现核心业务逻辑。 domain层主要负责编写业务逻辑。通过业务建模后,业务逻辑通过domain entitydomain service来承载,因此是通过充血模型的方式来完成代码开发。涉及对外调用则通过调用domain层定义的repository interface来完成。具体外部访问的技术实现由infrastructure实现。
infrastructure 基础设施层:负责技术实现,包括访问DB、Cache、RPC、MQ等。 domain会实现业务逻辑,而业务逻辑中涉及到技术实现的部分(保存、RPC请求、MQ发送消息、缓存等)都通过infrastructurerepositoryImpl实现。infrastructure除了技术实现,还包括DO定义、DO与domain entity的互相转换,以及集成并调用外部服务的client
client 商业能力、域服务接口定义。 外部应用集成的SDK,便于能力调用。在SDK中定义商业能力、业务域应用服务接口定义、接口入参和返回值DTO、接口返回错误码定义、业务自定义异常定义等。
extension 负责扩展点接口定义。 外部应用集成SDK,便于根据扩展点定义实现自定义扩展点业务逻辑。
starter 应用启动。 独立应用启动的包,方便启动方式插拔变更。

如果代码生成失败,分支状态显示生成失败,单击查看原因,查看具体失败原因。