扫描上报和合并代码模型

如果您需将本地的模型上报到平台上,可通过QuickFix快速修复的方式上报或修改某个field/method,也可上报整个模型,或进行多个模型的上报。但您需注意需要上报的模型是否依赖于别的模型,别的模型是否也需要上报。本文介绍如何在Tool Window中扫描上报和合并代码模型。

背景信息

BizWorks Toolkit插件可以直接查看扫描后的结果和查看Diff,故不需要在扫描代码模型后到平台上确认扫描结果再合并到平台模型。本文提到的上报即为直接将本地代码反映的模型信息上报到平台,使平台模型和本地模型一致。

版本变更扫描规则说明

0.17.0版本及以后版本的Bizworks Toolkit其代码扫描规则有以下变化:

  • 领域层引用到的未标注对象扫描为值对象。

    引用情况包含以下几种:

    • 领域服务方法的出入参。

    • 领域对象的字段、继承的类,以及领域行为的出入参。

    • 值对象字段、继承的类。

    • 被引用的其他未标注对象的字段、父类(不包括应该忽略的一些包下的类型,比如java.lang.Objectjava.io.File等)。

    • 以上类型表达中包含泛型类型的类型参数上界。

  • 应用层引用到的未标注对象扫描为结构对象。

    引用情况详情,请参见领域层。

  • 同一个未标注的对象被领域层和应用层同时引用,会被扫描为一个结构对象和一个领域对象。

  • 已标注为领域对象或结构对象的类,会按照标注类型严格扫描。

如果您希望使用以前的扫描规则,您可通过配置Registry,修改Registry Key为bizworks.scan.domain.dep.strategy的值为NONE,即可修改为以前的扫描规则。以前版本的扫描规则与新规则的不同点如下:

  • 领域层引用到的未标注对象扫描为结构对象。

  • 同一个未标注的对象被领域层和应用层同时引用,仅会被扫描为结构对象。

说明
  • 需拥有BizWorks注解,例如@DomainObject、@Field、@Method、@Param等才会有检查与修复、上报等操作入口。对于非全量上报的操作,被依赖到的类型只会在操作明确包含依赖的时候才会被同时上报,否则只有选择(选中)的部分类会被上报。

    关于依赖传递及Java代码与平台模型的映射规则,请参见Java代码扫描与平台模型映射的特殊规则说明

  • 在模型进行上报到平台时,插件会检测关联的限界上下文是否发生改变。

    • 如果关联的限界上下文不变,限界上下文的版本发生变化,则插件会提示:应用关联的模型版本发生变化,请重新同步平台模型,确认后重新提交。

    • 如果关联的限界上下文发生变化,则中断操作,且有相应提示:应用关联的模型发生变化,请修改并重新加载.bizworks/bizworks.yml配置文件。

什么是依赖

一个类的字段类型、方法出入参类型、继承类型使用到的其他类型均作为当前类的依赖。

class A示例如下所示。

@StructureObject
class A {
    @Field
    private B field;
}

class B {
    @Field
    private String field;
}

示例中结构对象A依赖于B。此时上报结构对象A时,如果想把B也给上报上去,那么我们就要上报依赖到平台,且不管B有没有结构对象相关注解,都会把B当成一个结构对象上报上去。

上报代码模型注意事项

  • 全量上报时,如果项目中有不同目录下名称相同且属于同一类模型(例如:两个都是结构对象或是领域对象)时,界面会有相应提示,且上报时只会上报一个。

  • 全量上报时,如果有相同名称的两个方法或重载的方法,该模型不会被上报。

  • 全量上报时,后台会检查平台应用配置与本地配置是否同步,若不同步,请在关联平台配置中刷新配置。具体操作,请参见配置关联平台

通过QuickFix上报当前文件部分内容

重要

如果多个应用在一个项目根目录下,需要使用IDEA单独打开应用进行配置以及上报。

适用场景:您在当前模型类修改了某个字段的属性,或修改了某个方法的参数,或添加了一些字段但只需要上报一部分字段到平台。

打开IDEA,在Java类文件上单击右键,选择在建模平台添加字段(您可按需选择),操作示例如下。1

上报编辑中的文件及依赖

适用场景:把当前模型类的所有内容上报到平台,适用于当前类有较多修改且需要同步到平台的情况下使用。

在当前模型类单击右键,选择BizWorks > 上报当前类及依赖到平台image.png

在Tool Window扫描本地模型

打开IDEA,您可以通过以下两种方式扫描本地模型。

  • 在顶部导航栏选择BizWorks > 扫描项目代码为模型image.png

  • 单击本地模型页签左上角的1(扫描)图标,对本地项目代码元数据做扫描。1

如果扫描后没有模型,请确认以下信息:

  • modules.yaml(适用于0.12.0之前版本)或bizworks.yml(适用于0.12.0版本及之后的版本) Package是否正确。

  • 项目是否可以正常编译。

在Tool Window中上报选中模型

适用场景:将选中的模型上报到平台。

单击BizWorks本地模型页签,右键单击目标模型(支持多选),选择上报选中模型1

在Tool Window中上报选中模型及依赖

适用场景:将选中的模型以及选中模型的依赖模型上报到平台。

单击BizWorks本地模型页签,右键单击目标模型(支持多选),选择上报选中模型及依赖1

在Tool Window中全量上报

适用场景:将本地代码扫描出来的模型全部上传到平台。

  1. 单击BizWorks本地模型页签,右键单击目标模型文件夹后,单击提交扫描结果1

    您也可以单击本地模型页签左上角的1(上报)图标,查看差异数据。

    说明
    • 单击提交扫描结果后不会直接上报,而是会先触发差异比较,在差异比较弹框中可选择是否确认提交扫描结果。

    • 在默认情况,系统只会提交窗口中展示的扫描结果到平台,且只新增和更新,不会删除平台模型(您可以通过双向联动配置调整设置)。

  2. 您可在BizWorks 差异结果对话框中,查看本地模型与平台模型的差异,单击提交扫描结果进行全量上报。1