前言
在刚刚过去的2022年,在平台互联互通的方面,阿里在第二季度推出开源引擎 “LowCodeEngin”,国家队信通院也应市场需求在第四季度推出了《低代码开发平台通用技术要求》,针对低代码相关概念以及功能点新型了进一步的规范和梳理。进入到2023年的第一个季度随着ChatGPT的强势开局更是将以“全民开发”为宗旨的低代码零代码开发强势推向了普通公众的面前。
【资料图】
一个全新的“低码时代”呼之欲出,但这一切对于正处在风口浪尖上的传统软件行业而言却无疑是一种煎熬。更换赛道追跑“低代码”对于长期以业务定制开发为主导的中小型行业软件公司而言,其薄弱的技术积累成为了自主研发最大的屏障。集成和开源二次开发成为了传统软件行业紧跟时代的唯一选择,低代码领域开源领域虽然不乏类似于阿里“LowCodeEngin”百度“amis”等一些优秀开源框架,但多数更多的侧重在纯前端展现,而这些前端技术本身在学习难度以及其冗长的工具链条使得其集成和嵌入变得极其复杂。
在这样的背景下,CodeBee面向软件开发团队推出了基于OneCode的集成开发方案。本文主要针对OneCode 的开发编译原理以及基础工具使用做说明。在后续的章节中将根据具体的示例以及部署管理等多个方面展开描述。
一,OneCode技术原理及系统组成
OneCode由三块自成体系的可独立部署运行的部分组成。前端引擎负责界面建模并按低代码协议协议生成标准JSON,中后台OneCode通过读取标准JSON协议,完成后端的视图建模,合并DSM后端服务建模系统,完成完整的后端服务建模应用,通过代码工程完成前后端一体的出码应用。JDSCloud是OneCode的协同支撑系统,除了常规的资源代码空间管理外,提供了独立的沙箱运行环境。为OneCode 提供工程化的仿真版本Ops等服务。
二,OneCode开发模式
(1)CodeFrist 模式(代码优先)
OneCode 本身基于JAVA语言体系,是在Java Spring 注解基础上的一套扩展子集,混合编译引擎器通过扩展注解构建完整的Domain模型,通过读取标准Spring 注解完成普通Web数据交付及调度过程,通过Domain域模型动态渲染JS文件输出为JSON交付给前端引擎构建页面。
OneCode代码编译原理
通用列表示例
表单示例
在开源的组织机构插件中,采用了完整的OneCode开发完成,下午截取了一个典型的嵌入指标的例子做了一个说明。
真实代码示例
为方便大家熟悉OneCode 基础语法,OneCode平台组件中还内置了一款,在线的OneCode代码编辑器,开发者可以方便的直接在线编辑编译OneCode代码。
OneCode web在线IDE
为方便大家快速上手,OneCode 也提供了,各种简单模型的代码模板工具,方便大家初期上手时快速构建代码结构。
在代码工具中为方便大家不同技术栈的接入,OneCode 也开放了自定义模板的管理和构建功能,方便大家自主进行代码结构设计。
业务代码模板
在完成编码后可以调用云端的在线编译功能个,动态完成代码编译,代码编译完成后可以下载到本地进行集成也可以在线部署发布运行。
在线编译
(2),ViewFrist 视图优先(拖拽优先)
通过视图引擎拖拽完成前期的交互模型,然后选择服务端代码模板进行,出码来完成基础代码以及建模应用。
用户可以通过,拖拽方式
(3),ModuleFrist (模型优先)
OneCode除了在前端实现了标准化组件定义外,还额外提供了后端建模的工具DSM,并通过领域模型将二者打通。这样在前端组件建模时便可以直接调用后端服务模型完成数据部分API构建。而DSM模型工具也可以在后端建模时直接读取前端组件属性,打通前端动作与后端服务的通讯能力。
(4)DSM逆向转换
通过不同方式完成的DSM模型,可以通过OneCode 在视图、Code 、以及Module 三种方式之间自由切换,利用相关工具完成仿真调试以及部署运行。
传统低代码平台基本上都是完全建立在JS的模型下,在初期建模时结构还算清晰但经过稍有点复杂的逻辑,构建时代码的冗余度以及结构就会变得混乱,特别是页跨页面操作或者完成前后台数据交互时。由于其脚本语言的特点无法完成实时校验,只能运行期测试才能发现问题。采用低代码构建的页面往往只是由于页面中做了一些简单的组件增删或者属性样式就该就会造成不可预期的结果,这大大降低了代码的可维护度。OneCode所构建的领域模型则很好的解决了这一问题,在前后端任意模型发生变化时即可调用混合编译,将页面间的连接关系以及前后台的数据关系进行校验通知。在预编译中提升整体的编译能力。
(5)DSM第三方语言转换
DSM出码模块采用了独立的模板架构,除了可以以OneCode形式存在,还可以支持独立的出码模块定制独立的第三方语言模型输出。