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 字(可选)

微服务配置

相关推荐
不爱学英文的码字机器1 小时前
解读CANN MindX SDK仓库:AIGC应用开发的“低代码加速器“
低代码·aigc
HUIBUR科技4 小时前
低代码赋能供应商管理:打破管理壁垒,重塑供应链效能
低代码·数字化转型
guizhoumen4 小时前
2026国内外企业级cms建站系统的BI图表功能评测
低代码·cms·网站建设·建站系统·内容管理系统
豆豆5 小时前
企业级CMS和低代码平台标杆:PageAdmin新版的可视化BI和自定义表单功能体验
低代码·cms·可视化·bi·表单功能·工单功能·统一平台
红迅低代码平台(redxun)5 小时前
构建企业“第二大脑“:AI低代码平台如何打造智能知识中枢?
人工智能·低代码·ai agent·ai开发平台·智能体开发平台·红迅软件
feasibility.3 天前
在OpenCode使用skills搭建基于LLM的dify工作流
人工智能·低代码·docker·ollama·skills·opencode·智能体/工作流
IT研究所3 天前
信创浪潮下 ITSM 的价值重构与实践赋能
大数据·运维·人工智能·安全·低代码·重构·自动化
希艾席帝恩4 天前
智慧城市建设中,数字孪生的价值在哪里?
人工智能·低代码·私有化部署·数字孪生·数字化转型
小W与影刀RPA4 天前
【影刀 RPA】 :文档敏感词批量替换,省时省力又高效
人工智能·python·低代码·自动化·rpa·影刀rpa
esmap4 天前
技术解构:ESMAP AI数字孪生赋能传统行业转型的全链路技术方案
人工智能·低代码·ai·架构·编辑器·智慧城市