根据领域对象批量生成相关模型

本文介绍如何在领域对象的基础上直接批量创建应用服务、结构对象和数据模型。

背景信息

技术建模中结构对象、领域对象和数据对象中的很多字段可能都是相同的,如果所有的模型都从对象到字段逐个手动创建,会带来较大的维护成本。系统支持根据领域对象直接批量创建应用服务、结构对象和数据模型,同时会自动创建模型间的关系映射,减少模型设计的工作量。

操作步骤

  1. 登录BizWorks,在选择平台下拉列表中选中建模平台image.png

  2. 单击页面右上角a7.png图标或其文本框区域,在下拉列表中单击目标项目名称后,单击建模页签。在建模导航栏中,选择技术建模 > 限界上下文

  3. 限界上下文页面,单击目标限界上下文名称。

  4. 在目标限界上下文导航栏中,单击领域对象。在领域对象页面,单击批量生成相关模型image.png

    1. 批量生成相关模型面板,选择生成范围(支持全量生产部分生成)。1

      • 如果您选择全量生成,单击下一步

      • 如果您选择部分生成,在领域对象列表中选中目标领域对象后,单击下一步1

      1. 生成设置面板,完成相关参数配置。image.png

        配置项

        描述

        生成应用服务和结构对象

        支持以下取值:

        • 生成

          • 每个领域对象都将生成一个应用服务,应用服务编码规则为:领域对象编码+Service,如果领域对象编码超出29位,则截取前29位。

          • 领域对象中,被标记为“聚合根”的对象生成的应用服务,将为具备完整增删改查功能的应用服务方法。

          • 领域对象中,被标记为“实体对象”、“值对象”类型的对象生成的应用服务,将仅为具备查询功能的应用服务方法。

          • 每个领域对象以及领域对象字段中引用其它的领域对象将生成对应结构对象,结构对象编码规则为:领域对象编码+DTO。

        • 不生成

        生成数据模型

        支持以下取值:

        • 生成

          • 每个领域对象都将生成一个数据模型,数据模型与领域对象编码相同。

          • 领域对象中每一个基础类型的字段都将生成数据模型的字段。

        • 不生成

        重复数据判断规则

        支持以下取值:

        • 对象编码重复

          • 生成结构对象和数据模型时,仅判断模型的编码是否重复,不对模型字段编码作比较。

          • 生成应用服务时,仅判断服务编码是否存在,不判断服务的字段。

        • 字段编码重复

          • 生成结构对象和数据模型时,在模型的编码重复时,继续比较模型字段编码,判断字段是否重复。

          • 生成应用服务时,仅判断服务编码是否存在,不判断服务的字段。

        重复数据处理策略

        支持以下取值:

        • 跳过重复数据

          • 生成结构对象和数据模型时,如果编码已经存在,则结构对象和数据模型的名称、编码以及所有的字段都不做任何修改。

          • 生成应用服务时,如果服务编码已存在,服务本身信息不做修改,并继续判断方法是否存在,如果方法编码也相同则不再判断出入参,该方法将不再重复生成。

        • 覆盖已有数据

          • 编码相同的数据将被覆盖,包括名称和类型。

          • 不在生成范围内的数据不受影响,将被保留。

        • 终止生成数据:只要应用服务、应用服务方法、结构对象或者数据模型中有任何一个编码与已有数据编码重复,则任何数据都不会生成,生成过程将自动终止。

    2. 单击开始生成,待界面提示生成成功后,单击关闭

    3. 您可以在数据模型应用服务页面,查看对应生成的数据模型、应用服务和结构对象。

      说明

      批量生成模型时,系统会做如下处理:

      • 为每个领域对象生成一个应用服务,应用服务中都包含一个按条件查询的方法。

      • 生成三个结构对象作为所有按条件查询方法的入参:QueryConditionPredicateOrderBy。建议您不要随便修改这三个方法,否则可能会导致生成的代码报错。

      • 为每个结构对象生成一个分页的结构对象****PageInfo作为按条件查询方法的出参。

      • 生成以下映射关系:

        • 结构对象领域对象

        • 结构对象数据对象

        • 领域对象数据对象

      • 如果领域对象间有继承关系,生成结构对象时也同样会保留继承关系。