生成代码

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

说明
  • 如果关联了限界上下文,则根据限界上下文的模型生成代码。

  • 如果没有关联限界上下文,则生成空的脚手架代码。

  • 已发布的应用不支持代码生成功能。

操作步骤

  1. 登录BizWorks,在选择平台下拉列表中选中微服务开发平台image.png

  2. 单击页面右上角image.png图标或其文本框区域,在下拉列表中单击目标项目名称后,单击应用页签。在应用列表页面单击目标中心应用名称。image.png

  3. 在目标中心应用左侧导航栏中,选择应用开发 > 代码生成

  4. 代码生成页面,单击代码生成image.png

  5. 代码生成面板,查看代码内容和版本,选择合适的代码分支,并设置相关参数。image

    只有当您开启模型联动配套功能开关后,在代码生成面板您才能看到代码内容和版本相关内容和配置项。更多关于模型关联的信息,请参见管理模型

    imageimage

    说明
    • 本文以代码分支提交至代码库获取方式为例说明如何配置相关配置项。

    • 对于根据限界上下文应用服务方法重置接口定义选项:

      • 如果您选中该选项,平台将根据关联的限界上下文应用服务方法,按照平台代码生成规则重新生成并覆盖现有的接口定义,接口定义重置后您可在应用接口管理中查看。

      • 如果您不勾选该选项,则应用接口定义信息不会更新,后续您可通过代码扫描的方式上报应用接口信息。

    • 如果在创建应用时,您有做脚手架配置,则在代码生成面板的配置与创建应用时候配置是一致的。

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

    代码分支

    生成逻辑

    新分支

    直接全量生成新代码。

    基于旧分支checkout新分支

    需要在已有代码的基础上重新生成代码:

    • 模型中存在但代码中不存在,直接生成新的代码。

    • 模型中存在且代码中也存在,但代码中已经做过修改,则用模型覆盖。

    • 代码模型中存在,代码中也存在,并且两者相同的,不做任何处理。

    • 模型中不存在但代码中存在的,不做任何处理。

    说明

    不显示生成代码结构部分,只能根据原有分支的结构生成代码。

    生成到已有分支

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

    • 新分支

      参数

      说明

      新建分支

      填写新分支的名称,默认格式为:develop_yyyyMMdd_HHmmss。限制如下:

      • 由大小写字母、数字、中文或字符组成。

      • 字符数不超过100位。

      GroupId

      填写工程GroupId的名称。限制如下:

      • 由小写字母、数字和小数点组成。

      • 需以小写字母开头,且需以小写字母或数字结尾。

      • 字符数不超过64位。

      完成GroupId首次填写后,您可以单击点击修改,在编辑中心应用面板维护GroupId1具体操作,请参见设置代码项目基本信息

      ArtifactId

      默认为该应用的编码。您可以修改此编码,限制如下:

      • 由小写字母、数字和短横线(-)组成。

      • 需以小写字母开头,且需以小写字母或数字结尾。

      • 字符数不超过64位。

      完成ArtifactId首次填写后,您可以单击点击修改,在编辑中心应用面板维护ArtifactId1具体操作,请参见设置代码项目基本信息

      Version

      默认值为1.0.0。您可以修改此描述,限制如下:

      • 由大小写字母、数字、小数点和短横线(-)组成。

      • 需以字母或数字开头和结尾。

      • 字符数不超过64位。

      包路径

      默认格式为groupid.artifactid。您可以修改此路径描述,限制如下:

      • 由小写字母、数字和小数点组成。

      • 需以小写字母开头,且需以小写字母或数字结尾。

      • 字符数不能超过128位。

      脚手架模板

      支持自定义脚手架模板的包路径。具体操作,请参见自定义脚手架模板的包路径

      组件依赖

      您可以按需选择Spring Boot版本和目标组件。支持全部展开全部折叠两种方式查看组件详情。image.png

    • 基于旧分支checkout新分支

      参数

      说明

      基础分支

      在基础分支列表中,选择所需的旧分支。

      新建分支

      填写新分支的名称,默认格式为:develop_yyyyMMdd_HHmmss。新分支名称的限制如下:

      • 由英文、数字、中文或字符组成。

      • 字符数不超过100位。

      GroupId

      项目信息自动带出基础分支所对应的项目信息。

      您可以单击点击修改,在编辑中心应用面板维护GroupId1具体操作,请参见设置代码项目基本信息

      ArtifactId

      项目信息自动带出基础分支所对应的项目信息。

      您可以单击点击修改,在编辑中心应用面板维护ArtifactId1具体操作,请参见设置代码项目基本信息

      Version

      不可修改。项目信息自动带出基础分支所对应的项目信息。

      包路径

      脚手架模板

      支持自定义脚手架模板的包路径。具体操作,请参见自定义脚手架模板的包路径

      组件依赖

      您可以按需选择Spring Boot版本和目标组件。支持全部展开全部折叠两种方式查看组件详情。image.png

    • 生成到已有分支

      参数

      说明

      基础分支

      在基础分支列表中,选择所需的旧分支。

      GroupId

      项目信息自动带出基础分支所对应的项目信息。

      您可以单击点击修改,在编辑中心应用面板维护GroupId1具体操作,请参见设置代码项目基本信息

      ArtifactId

      项目信息自动带出基础分支所对应的项目信息。

      您可以单击点击修改,在编辑中心应用面板维护ArtifactId1具体操作,请参见设置代码项目基本信息

      Version

      不可修改。项目信息自动带出基础分支所对应的项目信息。

      包路径

      脚手架模板

      支持自定义脚手架模板的包路径。具体操作,请参见自定义脚手架模板的包路径

      组件依赖

      您可以按需选择Spring Boot版本和目标组件。支持全部展开全部折叠两种方式查看组件详情。image.png

    说明

    如果您选择添加技术组件生成代码,则系统会在脚手架默认添加对应依赖、配置、示例代码、使用说明。如果涉及外部服务(例如:Nacos、RocketMQ等),则不会自动部署一套外部服务,主要提供脚手架支持。

执行结果

代码生成后,您可以进入对应的代码仓库,查看生成的分支,包含appentrydomaininfrastructureclientstarter7个基础模块(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、接口返回错误码定义、业务自定义异常定义等。

starter

应用启动。

独立应用启动的包,方便启动方式插拔变更。

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