掃描上報(bào)和合并代碼模型
如果您需將本地的模型上報(bào)到平臺上,可通過QuickFix快速修復(fù)的方式上報(bào)或修改某個(gè)field/method
,也可上報(bào)整個(gè)模型,或進(jìn)行多個(gè)模型的上報(bào)。但您需注意需要上報(bào)的模型是否依賴于別的模型,別的模型是否也需要上報(bào)。本文介紹如何在Tool Window中掃描上報(bào)和合并代碼模型。
背景信息
BizWorks Toolkit插件可以直接查看掃描后的結(jié)果和查看Diff,故不需要在掃描代碼模型后到平臺上確認(rèn)掃描結(jié)果再合并到平臺模型。本文提到的上報(bào)即為直接將本地代碼反映的模型信息上報(bào)到平臺,使平臺模型和本地模型一致。
版本變更掃描規(guī)則說明
0.17.0版本及以后版本的Bizworks Toolkit其代碼掃描規(guī)則有以下變化:
領(lǐng)域?qū)右玫降奈礃?biāo)注對象掃描為值對象。
引用情況包含以下幾種:
領(lǐng)域服務(wù)方法的出入?yún)ⅰ?/p>
領(lǐng)域?qū)ο蟮淖侄巍⒗^承的類,以及領(lǐng)域行為的出入?yún)ⅰ?/p>
值對象字段、繼承的類。
被引用的其他未標(biāo)注對象的字段、父類(不包括應(yīng)該忽略的一些包下的類型,比如java.lang.Object,java.io.File等)。
以上類型表達(dá)中包含泛型類型的類型參數(shù)上界。
應(yīng)用層引用到的未標(biāo)注對象掃描為結(jié)構(gòu)對象。
引用情況詳情,請參見領(lǐng)域?qū)印?/p>
同一個(gè)未標(biāo)注的對象被領(lǐng)域?qū)雍蛻?yīng)用層同時(shí)引用,會被掃描為一個(gè)結(jié)構(gòu)對象和一個(gè)領(lǐng)域?qū)ο蟆?/p>
已標(biāo)注為領(lǐng)域?qū)ο蠡蚪Y(jié)構(gòu)對象的類,會按照標(biāo)注類型嚴(yán)格掃描。
如果您希望使用以前的掃描規(guī)則,您可通過配置Registry,修改Registry Key為bizworks.scan.domain.dep.strategy
的值為NONE
,即可修改為以前的掃描規(guī)則。以前版本的掃描規(guī)則與新規(guī)則的不同點(diǎn)如下:
領(lǐng)域?qū)右玫降奈礃?biāo)注對象掃描為結(jié)構(gòu)對象。
同一個(gè)未標(biāo)注的對象被領(lǐng)域?qū)雍蛻?yīng)用層同時(shí)引用,僅會被掃描為結(jié)構(gòu)對象。
需擁有BizWorks注解,例如@DomainObject、@Field、@Method、@Param等才會有檢查與修復(fù)、上報(bào)等操作入口。對于非全量上報(bào)的操作,被依賴到的類型只會在操作明確包含依賴的時(shí)候才會被同時(shí)上報(bào),否則只有選擇(選中)的部分類會被上報(bào)。
關(guān)于依賴傳遞及Java代碼與平臺模型的映射規(guī)則,請參見Java代碼掃描與平臺模型映射的特殊規(guī)則說明。
在模型進(jìn)行上報(bào)到平臺時(shí),插件會檢測關(guān)聯(lián)的限界上下文是否發(fā)生改變。
如果關(guān)聯(lián)的限界上下文不變,限界上下文的版本發(fā)生變化,則插件會提示:應(yīng)用關(guān)聯(lián)的模型版本發(fā)生變化,請重新同步平臺模型,確認(rèn)后重新提交。
如果關(guān)聯(lián)的限界上下文發(fā)生變化,則中斷操作,且有相應(yīng)提示:應(yīng)用關(guān)聯(lián)的模型發(fā)生變化,請修改并重新加載
.bizworks/bizworks.yml
配置文件。
什么是依賴
一個(gè)類的字段類型、方法出入?yún)㈩愋汀⒗^承類型使用到的其他類型均作為當(dāng)前類的依賴。
class A
示例如下所示。
@StructureObject
class A {
@Field
private B field;
}
class B {
@Field
private String field;
}
示例中結(jié)構(gòu)對象A依賴于B。此時(shí)上報(bào)結(jié)構(gòu)對象A時(shí),如果想把B也給上報(bào)上去,那么我們就要上報(bào)依賴到平臺,且不管B有沒有結(jié)構(gòu)對象相關(guān)注解,都會把B當(dāng)成一個(gè)結(jié)構(gòu)對象上報(bào)上去。
上報(bào)代碼模型注意事項(xiàng)
全量上報(bào)時(shí),如果項(xiàng)目中有不同目錄下名稱相同且屬于同一類模型(例如:兩個(gè)都是結(jié)構(gòu)對象或是領(lǐng)域?qū)ο螅r(shí),界面會有相應(yīng)提示,且上報(bào)時(shí)只會上報(bào)一個(gè)。
全量上報(bào)時(shí),如果有相同名稱的兩個(gè)方法或重載的方法,該模型不會被上報(bào)。
全量上報(bào)時(shí),后臺會檢查平臺應(yīng)用配置與本地配置是否同步,若不同步,請?jiān)陉P(guān)聯(lián)平臺配置中刷新配置。具體操作,請參見配置關(guān)聯(lián)平臺。
通過QuickFix上報(bào)當(dāng)前文件部分內(nèi)容
如果多個(gè)應(yīng)用在一個(gè)項(xiàng)目根目錄下,需要使用IDEA單獨(dú)打開應(yīng)用進(jìn)行配置以及上報(bào)。
適用場景:您在當(dāng)前模型類修改了某個(gè)字段的屬性,或修改了某個(gè)方法的參數(shù),或添加了一些字段但只需要上報(bào)一部分字段到平臺。
打開IDEA,在Java類文件上單擊右鍵,選擇在建模平臺添加字段(您可按需選擇),操作示例如下。
上報(bào)編輯中的文件及依賴
適用場景:把當(dāng)前模型類的所有內(nèi)容上報(bào)到平臺,適用于當(dāng)前類有較多修改且需要同步到平臺的情況下使用。
在當(dāng)前模型類單擊右鍵,選擇
。在Tool Window掃描本地模型
打開IDEA,您可以通過以下兩種方式掃描本地模型。
在頂部導(dǎo)航欄選擇
。單擊本地模型頁簽左上角的(掃描)圖標(biāo),對本地項(xiàng)目代碼元數(shù)據(jù)做掃描。
如果掃描后沒有模型,請確認(rèn)以下信息:
modules.yaml(適用于0.12.0之前版本)或bizworks.yml(適用于0.12.0版本及之后的版本) Package是否正確。
項(xiàng)目是否可以正常編譯。
在Tool Window中上報(bào)選中模型
適用場景:將選中的模型上報(bào)到平臺。
單擊BizWorks本地模型頁簽,右鍵單擊目標(biāo)模型(支持多選),選擇上報(bào)選中模型。
在Tool Window中上報(bào)選中模型及依賴
適用場景:將選中的模型以及選中模型的依賴模型上報(bào)到平臺。
單擊BizWorks本地模型頁簽,右鍵單擊目標(biāo)模型(支持多選),選擇上報(bào)選中模型及依賴。
在Tool Window中全量上報(bào)
適用場景:將本地代碼掃描出來的模型全部上傳到平臺。
單擊BizWorks本地模型頁簽,右鍵單擊目標(biāo)模型文件夾后,單擊提交掃描結(jié)果。
您也可以單擊本地模型頁簽左上角的(上報(bào))圖標(biāo),查看差異數(shù)據(jù)。
說明單擊提交掃描結(jié)果后不會直接上報(bào),而是會先觸發(fā)差異比較,在差異比較彈框中可選擇是否確認(rèn)提交掃描結(jié)果。
在默認(rèn)情況,系統(tǒng)只會提交窗口中展示的掃描結(jié)果到平臺,且只新增和更新,不會刪除平臺模型(您可以通過雙向聯(lián)動配置調(diào)整設(shè)置)。
您可在BizWorks 差異結(jié)果對話框中,查看本地模型與平臺模型的差異,單擊提交掃描結(jié)果進(jìn)行全量上報(bào)。