OneCode低代码引擎 V2.0源码结构详解

前言

OneCode今天(12月10日)正式更新了其V2.0版本。从OneCode的季度版本生命中,可以看到2.0版本还是一个重量级的版本,笔者在收到2.0更新后第一时间下拉了最新的代码。在参考了OneCode 的技术说明后,根据包结构来分析一下OneCode2.0的结构。

添加图片注释,不超过 140 字(可选)

一,OneCodeV2.0 更新说明

(1)基线由1.1.2升级到了2.0

从中央仓库的OneCode版本来看,已经统一调整到了2.0版本。相应的Gitee 仓库也做了更新。

添加图片注释,不超过 140 字(可选)

(2)OCStuido 开发工具也变更了2.0版本

onecode/onecode低代码引擎

OCStuido 版本这次采用了一个新的版本号,onecode-all.

同时在版本提交日志中也显示改版本为完整版OneCode,并且在版本说明中简单介绍了包说明。

更新代码后,发现src下的源码数量也大大增加。

(3)私有云部署包也统一调整到了2.0版本

这次私有云版本中,没有发现太多的更新。但经编译测试后和2.0版本还是可以兼容使用的。

二,OCStuido2.0 新更代码包结构说明

这次OneCode更新,最主要的部分还是在OCStudio上开放的代码量上有了一个数量级上的提升,这对于对OneCode感兴趣的开发者而言大大减少了构建工程(以前版本完整源码可以从中央仓库自行解析编译)的工作量,可以快速的阅读调试OneCode 源代码。下面是笔者根据开放的源码包结构整理的功能模块图:

三,领域驱动配置:com.ds.dsm

OneCode-DSM工具集,是OneCode中一个重量级的工具集合。

(1)首页导航页

com.ds.dsm.IndexNav 导航页

复制代码
@Controller
@RequestMapping("/dsm/nav/")
@MethodChinaName(cname = "DSM导航")
@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);
    }
}

从导航页的配置而言

RequestMapping("/dsm/nav/")

RequestMapping(method =RequestMethod.POST, value ="DSMInstNavTree")

页面资源地为:/dsm/nav/DSMInstNavTree

转换为OneCode .view的访问转换地址

dsm.nav.DSMInstNavTree.view

http://bpm.itjds.net/RAD/bpmVVVERSION0/dsm.nav.DSMInstNavTree.view

也可以通过,Studio的仿真菜单进入

DSM入口页

(2)DSM包视图

  • com.ds.dsm.repository资源库管理模块;

  • com.ds.dsm.aggreagtion领域模型构建模块

  • com.ds.dsm.view以及视图工厂配置模块

添加图片注释,不超过 140 字(可选)

仓储模型模块:主要功能是辅助用户将用户的数据库,外部API接口,以及已有的"代码"应用通过转换器转变为可被DSM识别的资源部格式。

领域模型模块:是DSM核心工具,在领域模型中导入的资源会同具体场景下的值对象,场景菜单、通用域服务根据具体的业务场景完成领域模型的建模工作。

视图工厂是领域模型的具体实现,在领域模型应用中建模输出的产物会通过出码工厂输出位视图应用,这些视图应用会通过视图工厂进一步加工处理输出为用户交互应用。

(3)DSM-Aggregation 领域模型

com.ds.dsm.aggreagtion 包结构

dsm.agg web资源地址

功能应用配置

添加图片注释,不超过 140 字(可选)

(4)DSM-View 视图工厂

com.ds.dsm.view包结构

dsm.view web资源地址

视图总览

列表配置

列表配置

表单配置

字段配置

四,系统配置管理:com.ds.system

(1)com.ds.system.SystemIndex 导航页

复制代码
java 复制代码
@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 = "系统管理")
    @RequestMapping(method = RequestMethod.POST, value = "SystemNav")
    @NavTreeViewAnnotation
    @ModuleAnnotation(imageClass = "xui-icon-bullet", caption = "系统管理")
    @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 = "模板站点")
    @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 = "服务管理")
    @RequestMapping(method = RequestMethod.POST, value = "ServiceBeanNav")
    @NavTreeViewAnnotation
    @ModuleAnnotation(imageClass = "spafont spa-icon-conf1", caption = "服务管理")
    @CustomAnnotation(index = 4)
    @ResponseBody
    public ResultModel<ServiceBeanNav> getServiceBeanNav(String projectId) {
        return new ResultModel<ServiceBeanNav>();
    }

}

(2)system.index.view Web导航地址

子系统管理

添加图片注释,不超过 140 字(可选)

租户管理

添加图片注释,不超过 140 字(可选)

表达式管理

添加图片注释,不超过 140 字(可选)

模板站点管理

添加图片注释,不超过 140 字(可选)

出码模板管理

添加图片注释,不超过 140 字(可选)

微服务配置

相关推荐
踩着两条虫11 小时前
可视化 vs 终端 vs 云端:VTJ.PRO、Claude Code、Codex 三强横评
前端·vue.js·人工智能·低代码·架构
搭贝12 小时前
低代码平台私有化部署架构与信创全栈适配实战
低代码·架构·rxjava
搭贝17 小时前
低代码平台成本TCO分析:从许可证到运维迭代的全生命周期拆解
低代码·架构·rxjava
xn71332 天前
个人网站站外分发怎么做归因?我给 XBSTACK 补了一套 UTM 追踪规则
后端·低代码
卷叶小树4 天前
Style Resolver:Schema 驱动低代码平台的样式能力设计
低代码
SL_staff12 天前
3周搭完MES系统:JVS低代码+JVS-IoT物联网的实战记录
java·前端·低代码
AprChell14 天前
低代码设计器和低代码设计引擎架构综述
前端·vue.js·低代码
Kagol18 天前
NocoBase 开源项目源码深度分析
低代码
UXbot20 天前
帮助企业低门槛开展AI应用开发的平台推荐
前端·低代码·ui·交互·产品经理·原型模式·web app
盟接之桥20 天前
电子数据交换(EDI)|制造业汽车零配件场景方案
大数据·网络·人工智能·安全·低代码·汽车·制造