Skip to content

新增模块流程

本页给二开者一条从零新增模块的标准路径。你可以先用代码生成器生成基础 CRUD,再按本流程补齐平台约定。

1. 明确模块边界

先回答:

  • 这个模块属于平台能力还是业务能力?
  • 是否需要租户隔离?
  • 是否需要数据权限?
  • 是否需要审批?
  • 是否需要消息通知?
  • 是否需要文件附件?
  • 是否需要导入导出?

2. 后端实现

建议顺序:

  1. 新增实体。
  2. 新增 DTO 和请求对象。
  3. 新增应用服务接口。
  4. 实现带 [DynamicApi] 和方法元数据的应用服务。
  5. 注册依赖注入。
  6. 仅在文件上传、下载等场景增加薄传输端点。
  7. PageDefinitionProvider 注册路由、组件、标题和权限。
  8. 确认 RBAC 权限码与 ABAC 资源动作一致。
  9. 增加测试。

完整示例见 Dynamic API 与 PageRegistry。代码生成器已经按这套约定生成,不再生成标准 CRUD Controller 或菜单种子。

3. 前端实现

建议顺序:

  1. 新增 api 文件。
  2. 新增页面目录。
  3. 实现列表、筛选、分页。
  4. 实现新增和编辑表单。
  5. 实现删除或状态操作。
  6. 接入按钮权限。
  7. 检查动态菜单。

4. 接入工作流

如果模块需要审批:

  1. 增加审批状态字段。
  2. 增加提交审批动作。
  3. 增加撤回审批动作。
  4. 保存工作流实例 ID 或业务标识。
  5. 配置业务类型和流程绑定。
  6. 实现业务状态处理器。
  7. 页面增加流程详情入口。

5. 接入消息中心

如果模块需要通知:

  1. 定义事件类型。
  2. 增加默认通知策略。
  3. 增加默认模板。
  4. 在业务动作中发送通知。
  5. 链接到对应业务详情。
  6. 增加模板渲染测试。

6. 使用事件总线和工作单元

如果模块有多个写操作或提交后副作用:

  1. 在应用服务中注入 IUnitOfWork
  2. BeginTransactionAsync 开启事务。
  3. 执行业务写入。
  4. AddPostCommitEvent 登记提交后事件。
  5. CommitAsync 提交。
  6. 在异常时调用 RollbackAsync

提交后通知、清缓存和状态同步建议放到 ILocalEventHandler<TEvent> 中。

7. 文档和验收

每个完整功能建议补:

text
docs/features/YYYY-MM-DD-feature-name/01-requirements.md
docs/features/YYYY-MM-DD-feature-name/02-tasks.md
docs/features/YYYY-MM-DD-feature-name/03-summary.md

上线前至少验证:

  • 菜单可见。
  • 权限生效。
  • 列表查询正确。
  • 新增、编辑、删除或状态操作正确。
  • 租户边界正确。
  • 审计日志可追踪。
  • 前端类型检查通过。
  • 后端目标测试通过。

MiniAdmin documentation site. Built for learning, delivery, and secondary development.