本文介绍BizWorks Toolkit插件使用过程中的常见问题和相应解决方案。
在项目中没有找到文档中提到的modules.yaml怎么办?
代码和模型不一致,但编辑器中没有提示是什么原因?
提示代码扫描为模型后存在相互覆盖的情况怎么处理?
Java代码中的一些特定内容是如何支持的?
如何快速检查代码是否符合平台规则?
扫描后在Tool Window中没有任何模型怎么处理?
如何获取idea.log?
插件异常报告
项目中存在bizworks.yml文件但却提示需要新建是什么原因?
解决方案:
从平台重新生成代码,查看项目中是否存在 modules.yaml 。
modules.yaml
根据业务域或Package在合适的位置手动创建 modules.yaml ,具体操作,请参见 配置modules.yaml 。
请检查BizWorks Toolkit插件是否完全配置正确,IDEA平台界面右下角的BizWorks图标是否为下图状态,若未配置完成请重新配置。具体操作,请参见 配置BizWorks Toolkit(适用于0.12.0之前版本) 。
请检查本地代码 平台模型 的缓存是否为最新状态,您可尝试重新获取 平台模型 。具体操作,请参见 获取平台模型最新状态 。
请检查本地代码是否可以编译通过,BizWorks注解(例如:@DomainObject、@ApplicationService等)是否可以正常引用。更多信息,请参见 BizWorks Toolkit插件使用项目前提 和 快速标记代码为模型 。
相互覆盖不会阻断扫描上报,但无法保证上报后平台模型的正确性。您可以临时忽略,但建议修改。
问题原因:
相互覆盖指的是在不同的Package下,存在拥有相同BizWorks模型类型(例如:领域对象、结构对象等) 且同名的两个类。
因为扫描会覆盖所有标记BizWorks注解和被依赖的类(相关信息,请参见 什么是依赖 ),且映射到平台模型的时候 code 为类名,不包含Package。所以对于映射为平台模型的Java类型,需要保证类名不同。
code
修改类的名称,确保不重复。您可以直接使用IDEA提供的Rename(Shift+F6)功能(建议使用)。
当方法重载时,您可通过quickFix方式或手动方式为Method注解中指定code属性。如果注解中code属性存在且有值的情况下,BizWorks Toolkit插件则会将code值作为方法唯一编码上报至平台;如果code不存在,则以方法名作为方法唯一编码上报至平台。
方法重载时quickFix提示如下:
方法重载时正确情况示例如下:
泛型类型会实例化为一个结构对象上报。
泛型类型的使用,会去掉尖括号,将类型与类型参数拼接在一起成为新的结构对象Code,示例如下:
GenericExample<ObjectA> -> GenericExampleObjectA GenericExample<GenericExample<ObjectB> -> GenericExampleGenericExampleObjectB
如果泛型使用并未提供参数类型, 或使用单个通配符 ? ,则默认参数类型为Object。如果泛型的参数类型使用通配符表达则取其上界类型。示例如下:
?
GenericExample -> GenericExampleObject GenericExample<?> -> GenericExampleObject GenericExample<? extends ObjectA> -> GenericExampleObjectA
为了防止内部类类名冲突,内部类会在外部类类名后拼接内部类类名为平台的 code 。具体示例如下,外部类A正常上报为 A,A的内部类InnerClassB会上报为AInnerClassB。
@StructureObject class A { @StructureObject Class InnerClassB { }
当前平台对枚举类型无特殊处理,扫描的时候会作为一个普通的结构对象上报。
您可以通过 BizWorks规约扫描 查看当前目录下类是否符合平台规则。具体操作,请参见 触发检查和快速修复本地代码 。
请检查 File > Settings > BizWorks > 关联平台配置 路径下的 关联代码package 在项目中是否正确存在。具体操作,请参见 配置关联平台 和 配置modules.yaml 。
请检查项目是否正确导入且构建通过。具体操作,请参见 使用BizWorks Toolkit注意事项 。
请检查BizWorks注解(例如:@DomainObject、@ApplicationService等)是否正确标注。具体操作,请参见 快速标记代码为模型 。
在排查问题的时候,研发人员也许会需要您提供 idea.log 以帮助定位问题。您可以通过以下三种方式获取。
idea.log 通常会被IDEA按大小等原因切分。通常情况下您只需获取最新的 idea.log 文件即可。您也可以补充序号最大的日志文件。
打开IDEA,在顶部导航栏选择 Help > Show Log in Explorer (如果是macOS系统:请选择 Help > Show Log in Finder )打开日志目录。
在顶部导航栏选择 Help > Find Action 。
在 Actions 页签的文本搜索框中输入 show log in 后,您可以在系统的资源浏览器中打开日志所在目录。
具体操作,请参见 Logs directory 打开日志目录。
如果您在使用IDEA插件时未得到预期效果,或您在使用插件期间在平台界面得右下角出现BizWorks相关异常,请使用钉钉搜索钉钉群号41519770加入钉钉群进行反馈。
对于插件异常的场景,您可以参考以下图例操作,取得异常报告,并协助提供给我们。
点击下图 图标,查看异常报告。
在 IDE Fatal Errors 对话框的文本输入框中,输入您做何种具体操作的时候发生了异常,完成后单击对话框右下角的 创建BizWorks插件错误报告 。
问题原因:请检查您的项目是否存在根目录名称和项目名与某个子模块名称一致。
解决方案:请查看您的项目结构,避免您的项目根目录名称和项目名与某个子模块名称一致的情况。