示例:开发中心应用

更新时间: 2023-09-19 10:50:00

在完成技术模型设计后,您将进入共享能力中心的开发阶段。本文以示例项目为例,介绍如何使用BizWorks的中心应用进行共享能力中心的开发。中心应用是利用BizWorks平台进行建模、开发、部署并运维的应用,BizWorks平台不仅提供应用的运行时托管能力,还提供脚手架生成等能力,加快了应用开发速度。

在示例项目的应用列表页面,您可以看到自动创建的名为示例商品中心的中心应用。image.png

单击应用名称示例商品中心,默认进入该示例项目v1.0.0版本的应用概览页。

更多信息,请参见查看中心应用概览信息

说明

按照正常流程创建中心应用时,您还需要指定对应的代码仓库、代码凭证等信息。具体操作,请参见创建和管理中心应用。由于示例应用是自动生成的,因此这些过程都已经跳过。

管理模型

在示例应用中的限界上下文页面,您可以看到示例应用的限界上下文分别已经关联了商品上下文image.png

通过模型管理功能,您可以变更当前应用关联的限界上下文以及其版本,并可在应用中继续对模型进行调整。具体操作,请参见管理模型

生成代码

BizWorks为全代码开发实现提供了代码生成功能,会根据当前应用关联的限界上下文和数据模型等生成对应的接口定义、接口实现、领域服务类、聚合根、值对象、实体类、数据对象类、数据ORM以及常用的操作,包括增、删、改、查等相关操作代码,以完成业务活动的开发。

说明

在示例应用中,需要您完成代码生成阶段的操作,才能继续体验后续的操作。

  1. 在示例应用(示例商品中心)的代码生成页面,单击代码生成。在代码生成面板中所有的必配项都已经默认配置就绪,您可以直接单击生成代码image.png

    示例应用的代码生成配置,主要包括:采用新分支的方法保存生成的代码脚手架、代码结构默认使用二级Module、代码中使用MyBatis作为数据ORM的技术组件。更多信息,请参见生成代码

  2. 代码生成页面,单击刚生成的代码分支名称右侧操作列下的下载代码。将生成的代码下载到本地,解压后查看生成的代码结构。image.png

    说明

    只有示例应用的代码生成后,才为您提供下载代码的方式进行查看。如果您使用BizWorks正常流程创建的中心应用,代码生成后,您可以通过本地IDE打开该中心应用使用的代码仓库进行查看和编辑。

    • 下载代码并完成解压后,您可以看到第一级对应的是限界上下文等。1

    • 进入businessdomain-commodity(商品上下文)文件夹,里面的结构是按DDD架构实践的分层。1

      Module的定位主要如下:

      Module

      职责

      说明

      Entry

      核心业务入口。

      业务入口,当应用通过SpringCloud实现则Controller在该模块编写,通过Controller调用底层业务逻辑形成闭环。

      App

      业务调用入口。

      Entry通过调用App层实现业务逻辑调用。App层需要负责调用Domain层业务逻辑,且将DTO与Domain Entity进行转换。

      Domain

      领域实现层:核心业务逻辑。

      Domain层主要编写业务逻辑,业务通过建模后,业务逻辑通过Domain Entity和Domain Service来承载,因此是充血模型的方式来完成代码开发。

      当涉及对外调用时,则通过调用Domain层定义的Repository Interface来完成,而具体外部访问的技术实现由Infrastructure实现。

      Infrastructure

      基础设施层:负责技术实现,包括访问DB、Cache、RPC、MQ等。

      Domain会实现业务逻辑,而业务逻辑中涉及到技术实现的部分(例如:保存、RPC请求、MQ发送消息、缓存等)都通过Infrastructure在Repository Impl实现。

      Infrastructure除了技术实现,还包括DO定义、DO与Domain Entity的互相转换,以及集成并调用外部服务的Client。

      Starter

      应用启动。

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

      Client

      域服务接口定义。

      外部应用集成的SDK,便于能力调用。在SDK中定义包括:域服务接口定义、接口入参和返回值DTO、接口返回错误码定义、业务自定义异常定义等。

      ExtensionPoint

      负责扩展点接口定义。

      外部应用集成SDK,便于根据扩展点定义实现自定义扩展点业务逻辑。

扫描代码与合并模型

在使用BizWorks做设计开发的过程中,您可能会遇到这种场景:在生成了脚手架做开发时,却发现需要修改模型。而此时已经生成了代码,如果再返回去修改模型、重新生成脚手架,会打断研发人员的工作流程,降低工作效率。因此,平台要提供元数据和代码双向同步的能力,研发人员可以在开发过程中使用特定的注解实现新增、修改或删除模型元数据,开发完成后再上报到平台与平台上的元数据做合并,形成最终确定的元数据。

说明

在示例应用中,由于您没有向您开发的代码的提交权限,因此在示例应用中不能体验到代码扫描与合并的效果。您可以通过新创建一个新的中心应用来体验。

更多信息,请参见扫描代码与合并模型

部署中心应用实例

在研发过程中,完成脚手架代码的生成后,应用开发人员将进入详细设计和编码过程。开发人员在完成本地开发和单元调试后,需要各个模块进行微服务的部署联调,此时会需要将应用部署在容器环境中。

由于示例应用并不涉及到具体的编码实现过程,因此跳过此步骤,在完成代码生成后,您可以直接进入到开发环境的打包部署步骤。BizWorks默认提供了基本的CICD过程,也支持与三方DevOps产品进行集成对接。本文在示例应用中重点演示如何使用内置CICD完成中心应用的部署过程。

  1. 在示例应用的应用部署页面,您可以看到已经自动为示例项目创建了两个示例环境,环境类型分别为开发环境生产环境image.png

    关于如何创建和管理环境,请参见创建和管理项目环境

  2. 单击示例开发环境卡片,在新建实例部署 - 部署配置面板,完成代码分支(选择生成代码时的代码分支)、部署流水线(只能选择默认流水线)、资源配置(默认不能修改)配置,单击下一步image.png

  3. 新建实例部署 - 部署配置面板,生命周期管理环境变量存储健康检查应用监控标签等都不支持配置,单击开始部署

    说明

    示例项目的应用部署,在流水线选择和实例资源配置方面都有固定限制,所以生命周期管理环境变量存储等高级选项都不支持配置。

  4. 单击正在部署应用的环境(示例开发环境)卡片,在应用部署实例面板的部署记录区域,先找到状态执行中部署记录,再单击其右侧的日志,您能够了解到当前部署记录的运行情况和详细信息。image.png

  5. 刷新页面,待部署状态部署成功后,单击示例开发环境卡片。在应用部署实例面板,您可以查看到该环境下的应用调用域名

    在浏览器中直接访问此调用域名,您可以看到Hello BizWorks的页面(证明示例应用实例已经能够访问)。1

    说明
    • 调用域名是激活示例项目过程中为您自动创建的域名,并自动完成了DNS配置,因此可以直接访问。关于环境和环境上绑定的域名,请参见创建和管理项目环境

    • Hello BizWorks的页面仅在示例应用中生成的代码中出现,用于辅助示例项目的实验过程。您正常创建的中心应用的代码生成中不包含此部分代码和功能。

  6. 可选:访问接口。将API的请求URL使用此应用实例的访问地址补全,Request Body使用默认信息,单击Send,您即可看到接口请求过程。具体如下图所示:Response Status为200 OK,Response Body内容为JSON结构,code=2001

    说明

    由于在示例应用中仅是生成了脚手架代码,部署的代码中并未补充对应的逻辑实现,因此上图仅为示例中心应用的接口调用过程。

    中心应用的部署功能,除了上述演示的内容之外,还包含了对应用实例的管控、应用运行情况监控等功能。更多信息,请参见以下文档:

阿里云首页 云原生应用组装平台 BizWorks 相关技术圈