OneCode低代碼引擎 V2.0源碼結(jié)構(gòu)詳解(低代碼開(kāi)發(fā)平臺(tái) 知乎)
OneCode今天(12月10日)正式更新了其V2.0版本。從OneCode的季度版本生命中,可以看到2.0版本還是一個(gè)重量級(jí)的版本,筆者在收到2.0更新后第一時(shí)間下拉了最新的代碼。在參考了OneCode 的技術(shù)說(shuō)明后,根據(jù)包結(jié)構(gòu)來(lái)分析一下OneCode2.0的結(jié)構(gòu)。
一,OneCodeV2.0 更新說(shuō)明
添加圖片注釋,不超過(guò) 140 字(可選)
(1)基線由1.1.2升級(jí)到了2.0
從中央倉(cāng)庫(kù)的OneCode版本來(lái)看,已經(jīng)統(tǒng)一調(diào)整到了2.0版本。相應(yīng)的Gitee 倉(cāng)庫(kù)也做了更新。
(2)OCStuido 開(kāi)發(fā)工具也變更了2.0版本
onecode/onecode低代碼引擎
OCStuido 版本這次采用了一個(gè)新的版本號(hào),onecode-all.
同時(shí)在版本提交日志中也顯示改版本為完整版OneCode,并且在版本說(shuō)明中簡(jiǎn)單介紹了包說(shuō)明。
更新代碼后,發(fā)現(xiàn)src下的源碼數(shù)量也大大增加。
(3)私有云部署包也統(tǒng)一調(diào)整到了2.0版本
這次私有云版本中,沒(méi)有發(fā)現(xiàn)太多的更新。但經(jīng)編譯測(cè)試后和2.0版本還是可以兼容使用的。
二,OCStuido2.0 新更代碼包結(jié)構(gòu)說(shuō)明
這次OneCode更新,最主要的部分還是在OCStudio上開(kāi)放的代碼量上有了一個(gè)數(shù)量級(jí)上的提升,這對(duì)于對(duì)OneCode感興趣的開(kāi)發(fā)者而言大大減少了構(gòu)建工程(以前版本完整源碼可以從中央倉(cāng)庫(kù)自行解析編譯)的工作量,可以快速的閱讀調(diào)試OneCode 源代碼。下面是筆者根據(jù)開(kāi)放的源碼包結(jié)構(gòu)整理的功能模塊圖:
三,領(lǐng)域驅(qū)動(dòng)配置:com.ds.dsm
OneCode-DSM工具集,是OneCode中一個(gè)重量級(jí)的工具集合。
(1)首頁(yè)導(dǎo)航頁(yè)
添加圖片注釋,不超過(guò) 140 字(可選)
com.ds.dsm.IndexNav 導(dǎo)航頁(yè)
@Controller@RequestMapping("/dsm/nav/")@MethodChinaName(cname = "DSM導(dǎo)航")@IndexAnnotation@LayoutAnnotation(transparent = false, type = LayoutType.vertical, items = {@LayoutItemAnnotation(panelBgClr = "#3498DB", size = 28, pos = PosType.before, locked = true, moveDisplay = false, cmd = false)})public class IndexNav { @CustomAnnotation(hidden = true, pid = true) public String projectVersionName; @MethodChinaName(cname = "DSM建模") @RequestMapping(method = RequestMethod.POST, value = "DSMInstNavTree") @NavTreeViewAnnotation @ModuleAnnotation(dynLoad = true, imageClass = "spafont spa-icon-conf", caption = "DSM建模") @CustomAnnotation(index = 1) @ResponseBody public TreeListResultModel<List<DSMNavTree>> getDSMInstNavTree(String projectVersionName) { return TreePageUtil.getTreeList(Arrays.asList(DSMNavItems.values()), DSMNavTree.class); }
}
從導(dǎo)航頁(yè)的配置而言
RequestMapping("/dsm/nav/")
RequestMapping(method =RequestMethod.POST, value ="DSMInstNavTree")
頁(yè)面資源地為:/dsm/nav/DSMInstNavTree
轉(zhuǎn)換為OneCode .view的訪問(wèn)轉(zhuǎn)換地址
dsm.nav.DSMInstNavTree.view
http://bpm.itjds.net/RAD/bpmVVVERSION0/dsm.nav.DSMInstNavTree.view
添加圖片注釋,不超過(guò) 140 字(可選)
也可以通過(guò),Studio的仿真菜單進(jìn)入
添加圖片注釋,不超過(guò) 140 字(可選)
DSM入口頁(yè)
(2)DSM包視圖
- com.ds.dsm.repository資源庫(kù)管理模塊;
- com.ds.dsm.aggreagtion領(lǐng)域模型構(gòu)建模塊
- com.ds.dsm.view以及視圖工廠配置模塊
倉(cāng)儲(chǔ)模型模塊:主要功能是輔助用戶將用戶的數(shù)據(jù)庫(kù),外部API接口,以及已有的“代碼”應(yīng)用通過(guò)轉(zhuǎn)換器轉(zhuǎn)變?yōu)榭杀籇SM識(shí)別的資源部格式。
領(lǐng)域模型模塊:是DSM核心工具,在領(lǐng)域模型中導(dǎo)入的資源會(huì)同具體場(chǎng)景下的值對(duì)象,場(chǎng)景菜單、通用域服務(wù)根據(jù)具體的業(yè)務(wù)場(chǎng)景完成領(lǐng)域模型的建模工作。
視圖工廠是領(lǐng)域模型的具體實(shí)現(xiàn),在領(lǐng)域模型應(yīng)用中建模輸出的產(chǎn)物會(huì)通過(guò)出碼工廠輸出位視圖應(yīng)用,這些視圖應(yīng)用會(huì)通過(guò)視圖工廠進(jìn)一步加工處理輸出為用戶交互應(yīng)用。
(3)DSM-Aggregation 領(lǐng)域模型
com.ds.dsm.aggreagtion 包結(jié)構(gòu)
dsm.agg web資源地址
添加圖片注釋,不超過(guò) 140 字(可選)
功能應(yīng)用配置
添加圖片注釋,不超過(guò) 140 字(可選)
(4)DSM-View 視圖工廠
com.ds.dsm.view包結(jié)構(gòu)
dsm.view web資源地址
視圖總覽
添加圖片注釋,不超過(guò) 140 字(可選)
列表配置
列表配置
表單配置
字段配置
四,系統(tǒng)配置管理:com.ds.system
(1)com.ds.system.SystemIndex 導(dǎo)航頁(yè)
@Controller@RequestMapping("/system/")@IndexAnnotation@LayoutAnnotation(transparent = false, type = LayoutType.vertical, items = {@LayoutItemAnnotation(panelBgClr = "#3498DB", size = 28, pos = PosType.before, locked = true, moveDisplay = false, cmd = false)})public class SystemIndex { @MethodChinaName(cname = "系統(tǒng)管理") @RequestMapping(method = RequestMethod.POST, value = "SystemNav") @NavTreeViewAnnotation @ModuleAnnotation(imageClass = "xui-icon-bullet", caption = "系統(tǒng)管理") @CustomAnnotation(index = 0) @ResponseBody public ResultModel<SystemNav> getSystemNav(String projectId) { return new ResultModel<SystemNav>(); } @MethodChinaName(cname = "公式管理") @RequestMapping(method = RequestMethod.POST, value = "FormulaManager") @NavTreeViewAnnotation @ModuleAnnotation(dynLoad = true, imageClass = "spafont spa-icon-function") @CustomAnnotation(index = 1) @ResponseBody public TreeListResultModel<List<FormulaTypeItem>> getFormulaManager(String id) { } @RequestMapping(method = RequestMethod.POST, value = "WebSiteTreeNav") @APIEventAnnotation(autoRun = true @NavTreeViewAnnotation @ModuleAnnotation(imageClass = "spafont spa-icon-c-cssbox", dynLoad = true, caption = "模板站點(diǎn)") @CustomAnnotation(index = 2) @ResponseBody public TreeListResultModel<List<DomainTempNavTree>> getDSMTempTreeNav(String id) { return resultModel; } @MethodChinaName(cname = "模板管理") @RequestMapping(method = RequestMethod.POST, value = "CodeTemps") @APIEventAnnotation(autoRun = true) @NavTreeViewAnnotation @ModuleAnnotation(imageClass = "spafont spa-icon-settingprj", dynLoad = true, caption = "模板管理") @CustomAnnotation(index = 3) @ResponseBody public TreeListResultModel<List<JavaTempNavTree>> getTempManager(String id) { return resultModel; } @MethodChinaName(cname = "服務(wù)管理") @RequestMapping(method = RequestMethod.POST, value = "ServiceBeanNav") @NavTreeViewAnnotation @ModuleAnnotation(imageClass = "spafont spa-icon-conf1", caption = "服務(wù)管理") @CustomAnnotation(index = 4) @ResponseBody public ResultModel<ServiceBeanNav> getServiceBeanNav(String projectId) { return new ResultModel<ServiceBeanNav>(); }}
(2)system.index.view Web導(dǎo)航地址
子系統(tǒng)管理
添加圖片注釋,不超過(guò) 140 字(可選)
租戶管理
表達(dá)式管理
模板站點(diǎn)管理
添加圖片注釋,不超過(guò) 140 字(可選)
出碼模板管理
微服務(wù)配置