OneCode是一款基于DDD模型驱动设计的低代码引擎。从2022年底推出以来,现在的最新版本是1.1.0。本文重点是采用OneCode提供的工具来实际搭建一个简单的(员工请销假)业务应用。在搭建过程中穿插讲解一些功能设计思想以及使用方法。
OneCode建模流程
数据库表设计我们可以通过GPT来辅助一下,本文使用的是百度的文心一言辅助操作:
(1)向文心一言发起基本操作请求:请设计一张请假单的数据库表
(2)根据返回结果进行个性化微调:OneCode推荐采用UUID主键的方式来做,并且需要字段添加注解以方方便生成页面,于是继续域文心交互:为请假单设计一张UUID为主键的数据库表,为字段添加中文comment 输出为mysql数据库脚本
这个交互中添加了4个提示词,分别是:1,请假单,2,UUID主键,3,字段添加中文注解 4,mysql 脚本
经过微调后文心一言返回脚本:
CREATE TABLE `leave_requests` (
-- 请假单ID,唯一标识请假单
`id` CHAR(36) NOT NULL PRIMARY KEY COMMENT '请假单ID',
-- 员工ID,与员工表关联的外键
`employee_id` INT COMMENT '员工ID',
-- 请假开始日期
`start_date` DATE COMMENT '请假开始日期',
-- 请假结束日期
`end_date` DATE COMMENT '请假结束日期',
-- 请假原因,可存储文本或JSON格式的理由
`reason` TEXT COMMENT '请假原因',
-- 请假状态,使用字符串常量表示('Pending', 'Approved', 'Rejected')
`status` VARCHAR(20) COMMENT '请假状态',
-- 请假单提交日期
`submitted_date` DATE COMMENT '请假单提交日期',
-- 批准人ID,与用户表关联的外键
`approved_by` INT COMMENT '批准人ID',
-- 批准日期
`approval_date` DATE COMMENT '批准日期'
);
(2)打开OneCode 进入资源库管理
(1)打开OneCode 进入资源库管理
选择添加数据库表,查看信息,确认无误后,开始构建:
构建完毕后控制台,输出了创建的后端对象以及编译信息。
(2)进入OneCode 代码编辑器,查看一下代码结构:
至此我们便完成了OneCode流程中的第一部仓储库的建模。
从领域工具中将接口代码自动识别为了,视图接口和领域事件。
其中,视图:包括一张查询的列表页面,和表单的编辑页面。
而数据操作方面则自动读取为,领域事件,包括update 更新,find查找、delete删除,和findByWhere条件查找.
进入到可是话交互页面可以看到,两个视图的基本页面:但有一些结构和信息还需要从数据层面做一下调整。
在完成视图的基础建模后,可以通过OneCode提供的运行期配置工具进行前后段一体的领域聚合构建
找到刚刚创建的请假表配置
运行期配置主要包括:视图配置、视图路由、以及领域事件三个配置部分。
视图配置会根据当前页面的类型自动匹配可以配置的属性
而配置完成后又可以通过,OneCode逆向编译为OneCode代码结构,方便可视化编译器以及程序员进行二次加工处理。
对于常见用户操作,OneCode建模还提供了一些快捷的操作入口。如:在列表上增加几个常用功能按钮,然后点击编译视图;
我们再回到当前可视化编辑器,会发现一些基本基本的操作功能已经自动构建了。
而点击编译后,回到代码窗口发现对应的OneCode代码也同步发生了变化。
而这些配置覆盖了绝大多数的接口以及模块组件级别的操作包括:数据路由层面的接口参数、动作监听以及动作事件等等。
而视图层面更是通过,领域模型以及子域的扩展将领域模型中常用配置进行了高度的概括和有序的整理。
完成基础的表单模型设置后,我们便进入到了具体的业务功能设计。
完成上述5步基本配置后,一个小的业务模块便可以进入到微调和个性化修改的阶段。但再具体的实施过程中,根据业务应用不同,单一的从表单和流程配置角度还不能达到用户个性化的需求。这些就要求平台对于面向用户的公共部分提供相应的配置修改以及建模能力。应用聚合输出作为最后一个步骤最主要的是提供,所有通用组件的根据也模块的自适应能力配置。为此我们回到OneCode提供运行期配置。我们发现在这个用例中作为应用最多的流程部分的通用组件应用也可以和其他表单以及数据服务接口一样完成建模设定。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。