VTJ.PRO 在线应用开发平台的DSL生命周期

张开发
2026/4/16 8:41:30 15 分钟阅读

分享文章

VTJ.PRO 在线应用开发平台的DSL生命周期
DSL 生命周期从开发到生产本文档记录了 VTJ.PRO 平台中领域特定语言DSL实体的生命周期。它详细说明了DslService如何管理应用程序模式从开发环境到生产环境的过渡包括同步、历史跟踪和批处理。1. DSL 实体概述该平台将低代码应用、物料和文件表示为 DSL 对象。这些对象通过DslEntity持久化到数据库中并通过DslType枚举进行分类。DslType 类别DslType定义了 DSL 记录的范围和目的类型值描述Project0低代码项目的根配置。Material1组件元数据和物料库定义。File2单个页面或组件 DSL 文件。History3用于版本回滚的文件快照。环境隔离每个 DSL 实体跟踪其内容的两个不同版本content: 开发环境中的当前工作版本。prod: 当前部署到生产环境的版本。2. DSL 生命周期工作流生命周期由DslService管理它提供了更新开发草稿、发布到生产以及还原更改的方法。开发到生产发布publishFromDev方法将开发环境中的content同步到prod字段。这个过程有效地将当前的开发状态“发布”到生产运行时。工作流通过 ID 检索实体。将content的值赋给prod。保存更新后的实体。生产到开发还原copyToDev方法执行相反的操作允许开发者通过用稳定的prod数据覆盖content来丢弃开发环境中的实验性更改。逻辑流程开发/生产同步下图说明了单个DslEntity内部开发和生产状态之间的数据流。DSL 状态转换3. 实现细节DslServiceDslService扩展了BaseCrudService并处理复杂操作如历史创建和项目文件的批量更新。主要方法方法描述saveDsl更新 DSL 实体的content。如果类型是File它会自动创建一个History条目。publishFromDev将特定实体的content移动到prod。publishApp批量发布与特定appId关联的所有 DSL 实体项目、物料和文件。copyToDev从prod恢复content。recovery从特定的History实体中恢复文件的content。代码实体映射此图将服务逻辑与底层的 TypeORM 实体联系起来。服务到实体映射4. 历史记录和版本控制当通过saveDsl保存一个类型为File的 DSL 时系统不仅仅会覆盖content。它会创建一个快照以确保数据安全。检查类型: 服务检查DslType DslType.File。创建历史: 实例化一个新的DslEntity其type: DslType.History。链接引用: 历史记录的parentId设置为原始文件的 ID。保留: 系统维护一个变更历史可以通过recovery方法查看或恢复。5. 批处理策略发布整个应用程序需要同步多个相关实体。publishApp方法通过定位与appId链接的所有 DSL 记录来自动完成此操作。async publishApp(appId: string) { return await this.repository.update( { appId }, { prod: () content, // TypeORM 原生 SQL 表达式用于复制列 updateTime: new Date(), }, ); }这种方法可确保项目配置、物料定义和所有文件在单个数据库操作中更新到生产环境从而保持应用程序运行时的一致性。参考资料官网文档https://vtj.pro/在线平台https://app.vtj.pro/开源仓库https://gitee.com/newgateway/vtj

更多文章