-
Notifications
You must be signed in to change notification settings - Fork 0
Description
ObjectStack Enterprise Framework
Phase 1: The Code-Driven Metadata Engine
"定义即应用 (Definition is Application)"
1. 核心理念 (Core Philosophy)
在第一阶段,我们将 ObjectStack 定义为**“面向专业开发者的企业级应用元框架”**。
- 没有黑盒: 所有的业务定义都在本地代码中,基于 TypeScript,清晰透明。
- Git 为中心: 使用 Git 仓库作为唯一真理来源 (Single Source of Truth)。
- 自带基建: 开发者只负责写“业务描述”,框架负责“数据库迁移、API 生成、界面渲染”。
2. 架构全景图 (The Architecture)
在这个阶段,我们不需要画复杂的云端图,而是画一张**“编译与运行时”**的流程图。
A. 创造层:ObjectStack SDK (The Creator)
"在 IDE 中定义世界"
开发者不再需要登录网页后台配置,而是直接在 VS Code 中工作。
-
ObjectStack CLI: 命令行工具,用于快速生成代码模版。
-
ostack init: 初始化标准项目结构。 -
ostack g resource contract: 生成“合同”模块的标准目录。 -
Metadata as Code (基于代码的元数据):
-
我们利用 TypeScript 的静态类型能力来定义元数据。
-
Schema: 使用类似 Zod 或 TypeORM 的语法定义数据结构。
-
Logic: 直接编写 TS 函数作为 Trigger。
-
UI: 使用 JSON 或 TS 对象描述界面布局(通过我们提供的类型提示)。
代码示例:
// src/objects/contract.ts import { defineObject, Field } from '@objectstack/sdk';
export const Contract = defineObject({
name: 'contract',
label: '销售合同',
fields: {
title: Field.String({ label: '标题', required: true }),
amount: Field.Currency({ label: '金额' }),
status: Field.Select({ options: ['draft', 'signed'] })
},
// 触发器逻辑直接写在这里
triggers: {
beforeInsert: async ({ doc }) => {
if (doc.amount < 0) throw new Error("金额不能为负");
}
}
});
B. 治理层:CI/CD Pipeline (The Compiler)
"Git 仓库即控制台"
没有 Hub,Git Repository 就是 Hub。
-
构建时编排 (Build-Time Composition):
-
当代码提交时,ObjectStack 的构建工具(基于 Vite 或 Rollup)会扫描所有
.ts文件。 -
Extract: 提取其中的元数据定义(Schema/UI)。
-
Compile: 将后端逻辑编译为优化的 JS 包。
-
Bundle: 将这些打包成一个不可变的 Artifact (制品)。
-
版本管理:
-
利用 Git Tag 管理版本(v1.0, v1.1)。
-
利用 Pull Request 进行变更审批。
C. 执行层:ObjectStack Kernel (The Runtime)
"自带动力的单体引擎"
这是交付给客户的核心。它是一个标准的 Docker 镜像 或 NPM 包,客户将其部署在自己的服务器上。
这个 Kernel 包含了你尚未拆分的“三位一体”引擎:
- ObjectQL (Auto-Migration):
- 应用启动时,Kernel 读取打包好的 Metadata。
- 自动同步 DB: 发现
Contract对象多了amount字段 -> 自动对 Postgres 执行ALTER TABLE。 - 自动生成 API: 自动挂载 GraphQL/REST 端点
/api/data/contract。
- ObjectOS (Logic Sandbox):
- 负责加载并执行开发者编写的
triggers函数。
- ObjectUI (Renderer API):
- 向前端(React/Vue 客户端)提供
schema.json。 - Amis 集成: 如果使用 Amis,这里直接输出 Amis 标准的 JSON 配置,前端直接渲染。
3. 落地工作流 (Implementation Workflow)
这是客户采用该方案时的标准作业流程(SOP):
| 步骤 | 角色 | 动作 | 产物 |
|---|---|---|---|
| 1. 初始化 | 架构师 | npm create objectstack-app my-erp |
包含核心依赖的 Git 仓库 |
| 2. 开发 | 开发者 | 编写 .ts 文件定义对象、逻辑和界面 |
源代码 (Source Code) |
| 3. 提交 | 开发者 | git push origin main |
触发 CI 构建 |
| 4. 构建 | CI Server | 运行 ostack build |
Docker Image (包含 Kernel + 业务代码) |
| 5. 部署 | 运维 | docker run -d my-erp:latest |
运行中的企业应用 |
| 6. 迭代 | 全员 | 修改代码 -> Push -> 自动热更新 | 持续交付 |
4. 商业模式与交付物 (Deliverables)
在 Phase 1,你交付给客户的是一套 “开发底座”。
核心交付物清单:
@objectstack/cli: 命令行工具 (NPM)。@objectstack/core: 核心运行时依赖 (包含 ObjectQL/OS/UI 的逻辑)。- Standard Template: 标准的企业级项目脚手架。
- Documentation: 详细的 API 文档和最佳实践指南。
卖点话术:
- "不被厂商绑定": 代码在你们自己手里,Git 仓库在你们自己服务器上。
- "零技术债务": 你们只写业务逻辑,底层脏活累活(数据库连接、API 封装、权限校验)全部由框架处理。
- "类型安全": 全链路 TypeScript 支持,重构不再火葬场。
这就是 ObjectStack Enterprise Framework。
Code it locally. Run it globally.