# LowCode-Runtime **Repository Path**: idealmatrix/lowcode-runtime ## Basic Information - **Project Name**: LowCode-Runtime - **Description**: 低代码运行时服务,服务支撑低代码前端界面,提供统一的低代码后端服务,内置数据访问引擎、状态机、Action服务、表达式服务等关键低代码运行时服务 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-10-31 - **Last Updated**: 2025-10-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LowCode-Runtime(低代码运行时服务) ## ✨ 项目简介 **LowCode-Runtime** 是一个基于 **.Net 9.0** 的低代码运行时服务,提供了一套完整的低代码平台运行时引擎和服务。它既可以支撑响应式组件服务模式,提供组件运行时服务,也为低代码应用提供强大的后端运行时支持。 ## ✨ 核心引擎包括: * 🚀 Action引擎 - 处理业务动作和逻辑 * 🛠 数据访问引擎 - 统一数据访问层 * 📦 表达式引擎 - 动态表达式解析和执行 * ✅ 微流引擎 - 工作流和业务流程管理 * 🔧 计划任务引擎 - 定时任务调度 * 🏗 状态机引擎 - 状态转换管理 * 🌍 元数据运行时服务 - 元数据管理和运行时支持 ## 架构图 ![架构图](architect.png "架构图") ## 📂 项目目录结构 ```plaintext lowcode-runtime/ ├── Base/ # 公共服务 ├── Action/ # ​​Action引擎​​ ├── DataAccess/ # ​​数据访问引擎​​ ├── DataModel/ # 数据访问服务 ├── Excel/ # ​​导入导出服务​​ ├── Expression/ # ​​表达式引擎​​ ├── Metadata/ # 元数据服务 ├── Microflow/ # ​​微流引擎​​ ├── Page/ # ​​Page运行时插件​​ ├── ScheduleJob/ # ​​计划任务引擎​​ ├── StateMachine/ # ​​状态机引擎​​ ├── Term/ # ​​词条服务​​ ├── UserProfile/ # ​​用户配置服务​​ ├── T.SF.Console/ # TSF容器 └── T.FAS.Runtime.sln ``` ## 组件功能说明 ### 核心引擎 ​​Action引擎​​: 负责业务动作的执行和管理,支持同步/异步执行模式 ​​数据访问引擎​​: 提供统一的数据访问接口,支持多种数据源 ​​表达式引擎​​: 解析和执行动态表达式,支持EL表达式、SpEL等 ​​微流引擎​​: 轻量级工作流引擎,支持业务流程编排和状态管理 ​​计划任务引擎​​: 基于Quartz的定时任务调度引擎 ​​状态机引擎​​: 有限状态机实现,支持复杂状态转换逻辑 ### 元数据服务 ​​元数据运行时服务​​: 元数据的加载、缓存和管理 ​​Page运行时插件​​: 页面元数据的解析和渲染支持 ​​数据模型运行时插件​​: 数据模型元数据的运行时处理 ### 支撑服务 ​​词条服务​​: 多语言词条管理和国际化支持 ​​用户配置服务​​: 用户个性化配置存储和管理 ​​导入导出服务​​: 数据导入导出功能,支持多种格式 ## 开发调试 ### 环境要求 .net 9.0 Redis 数据库: PostgreSQL #### 数据库备份还原 1. 创建数据库tfas 从数据库备份中还原数据库表和数据 2. 安装插件 CREATE EXTENSION IF NOT EXISTS citext; -- 检查已安装的扩展 SELECT * FROM pg_extension WHERE extname = 'citext'; 3. 创建root用户 CREATE USER root WITH PASSWORD '123456'; 4. 分配权限 -- 授予当前schema下所有表的权限 GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO root; -- 授予未来创建的所有表的权限 ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO root; ### 启动项目 1. 将 T.SF.Console 设为启动项目; 2. 确认 App.config / Database.config / sgmetadata.json / sfmetadata.json / bindinglist.json 有效; 3. 运行(F5)。 4. 打开 T.SF.Console/Redis目录,点击Start Service.bat启动本机redis服务 5. Post方式访问 http://127.0.0.1:9000/api/invoke?sid=FASR-GetMetaData&metaDataId=002320d7-6348-4529-aaa7-b39d3857835b 验证服务可用 ## 元数据机制 ### 元数据加载执行 元数据通过反射方式加载不同元数据插件 ### 元数据扩展 支持自定义元数据插件:在TFAS数据库meta_typeinfo表中添加自定义元数据插件 ## 单元测试 ### 测试框架结构 - 基础框架:MSTest - 自定义基类:`TUnitTest`(封装 TestInitialize / TestCleanup、耗时统计、结果上报开关) - 标注 Attribute:`UnitTestAttribute`(多重重载,支持: - TestSuiteCode(测试集编号) - SequenceNumber(排序) - ServiceType / ServiceID / ServiceMethodName(覆盖面) - Tag / Description - ChangeSourceCode / ChangeSourceType(变更溯源) - 用例实体:`UnitTestCase`(执行过程 → 转换为 DTO 上报/存储) - 文件/附加:`UnitTestFile`(内容、哈希) ### 示例(MonitorTest) [TestMethod] [UnitTest("TTP.MQService.单元测试框架.监控测试", 1, "获取节点测试", "18615198246", UnitTestType.NormalTest, "获取节点测试")] public void GetClusterNodesTest() { var clusters = RabbitMQMonitorService.GetClusterNodes(); Assert.IsTrue(clusters.Count > 0); } ### 自定义用例编写建议 1. 每个测试集中 SequenceNumber 唯一(1–9999); 2. 覆盖具体服务时必须提供 ServiceID,多个使用英文逗号; 3. 涉及 HSF 服务方法级覆盖时需填写 ServiceMethodName; 4. 变更驱动测试(需求 / 缺陷修复)强烈建议设置 ChangeSourceType + ChangeSourceCode; 5. 测试分类:通过 UnitTestType 区分常规 / 异常 / 边界 / 压力。 ### 上报与采集 - TestCleanup 可收集执行耗时(Stopwatch)并填充 UnitTestCase.Duration / Passed; - 可扩展:在 TestCleanup 中统一推送到内部质量平台(需对接 HTTP / MQ)。 ### 潜在改进 - Attribute 与 UnitTestCase 枚举重复/冲突(ServiceType 多定义),应抽象公共枚举; - 可加入 Source Generator 自动生成测试元数据索引; - 增设分类过滤(基于 Tag / ServiceType)运行指定子集。 ## 6. 联系方式 **邮箱**:sz1stcool@outlook.com **QQ**:704329448 ## 许可 - 本项目以 MIT 许可协议开源。详见 [MIT](./LICENSE) © 2025 LowCode-Runtime contributors - 本项目使用了第三方开源库,其版权和许可证信息详见 [NOTICE.md](NOTICE.md)。