低代码应用全链路闭环_9fb825cd.md 13 KB

低代码应用全链路闭环优化

核心设计

概念模型

业务对象(商机/合同/客户)
  └── 记录(带状态的单据,如一条商机数据)
       ├── 状态机:草稿 → 已提交 → 审批中 → 已通过/已驳回
       ├── 触发器:事件发生时自动执行动作
       │     ├── 事件:新增记录/更新记录/状态变更/字段变化
       │     └── 动作:发起流程/推送消息/创建关联记录/调用Webhook
       ├── 流程绑定:关联已有流程模型,映射表单变量
       ├── 消息推送:流程事件/触发器 → 站内信 + 第三方平台(TODO)
       ├── 报表统计:基于对象数据的聚合展示
       └── 权限控制:数据权限 + 按钮权限

业务场景示例(商机管理)

商机录入(填写动态表单)
  → 触发器:新增记录且状态=已提交时,自动发起审批流程
    → 流程变量从表单字段映射(商机名称→title, 金额→amount, 负责人→assignee)
      → 审批流程执行(部门主管→总监)
        → 审批通过 → 触发器:状态变更为已通过时
          → 推送消息给商机负责人
          → 创建跟进记录
        → 审批驳回 → 推送消息给提交人
  → 报表看板:商机阶段分布/金额汇总/转化率

Task 1: 数据库结构设计

1.1 触发器规则表 ai_business_trigger

-- 核心字段
id, tenant_id, suite_code, object_code, trigger_name,
trigger_type (EVENT/SCHEDULE/MANUAL),
event_type (RECORD_CREATED/RECORD_UPDATED/STATUS_CHANGED/FIELD_CHANGED),
event_condition (JSON: 字段条件表达式),
action_type (START_FLOW/SEND_MESSAGE/CREATE_RECORD/UPDATE_FIELD/WEBHOOK),
action_config (JSON: 动作配置),
status, sort_order, create_by, create_time...

1.2 流程绑定变量映射表 ai_business_flow_bindng

-- 在 ai_business_binding 中 binding_type=FLOW 时,binding_config 结构增强:
{
  "flowModelKey": "opportunity_approval",
  "startEvent": "STATUS_CHANGED",
  "startCondition": {"field": "status", "from": "*", "to": "submitted"},
  "variableMapping": [
    {"formField": "opportunityName", "flowVariable": "title"},
    {"formField": "amountCent", "flowVariable": "amount"},
    {"formField": "ownerUserId", "flowVariable": "assignee"}
  ],
  "callbackMapping": {
    "PROCESS_COMPLETED": {"updateField": "status", "value": "approved"},
    "PROCESS_REJECTED": {"updateField": "status", "value": "rejected"}
  }
}

1.3 消息推送通道表 ai_business_message_channel

-- 第三方推送通道框架(留 TODO 实现)
id, tenant_id, channel_type (WECHAT_WORK/FEISHU/DINGTALK/WEBHOOK),
channel_name, channel_config_ref (引用安全配置),
status, create_by, create_time...

1.4 业务对象状态机配置

ai_business_object.options JSON 中增加 statusMachine 节点:

{
  "statusMachine": {
    "enabled": true,
    "statusField": "status",
    "states": [
      {"value": "draft", "label": "草稿", "color": "default"},
      {"value": "submitted", "label": "已提交", "color": "processing"},
      {"value": "approving", "label": "审批中", "color": "warning"},
      {"value": "approved", "label": "已通过", "color": "success"},
      {"value": "rejected", "label": "已驳回", "color": "error"}
    ],
    "transitions": [
      {"from": "draft", "to": "submitted", "action": "submit", "label": "提交"},
      {"from": "submitted", "to": "approving", "trigger": "flow_started"},
      {"from": "approving", "to": "approved", "trigger": "flow_completed"},
      {"from": "approving", "to": "rejected", "trigger": "flow_rejected"},
      {"from": "rejected", "to": "draft", "action": "resubmit", "label": "重新提交"}
    ]
  }
}

涉及文件:

  • 新增 forge/db/migration/V1.0.4X__add_business_trigger_and_flow_enhancement.sql

Task 2: 触发器引擎后端实现

2.1 核心服务

  • BusinessTriggerService - 触发器 CRUD + 启停
  • BusinessTriggerExecutor - 触发器执行引擎(事件匹配 → 条件评估 → 动作执行)
  • BusinessEventPublisher - 业务事件发布(在 DynamicCrudController 的增删改操作中发布事件)

2.2 触发器动作执行器

  • StartFlowAction - 发起流程(通过 FlowClient 调用)
  • SendMessageAction - 发送消息(站内信 + 第三方通道 TODO)
  • CreateRecordAction - 创建关联记录(调用 DynamicCrudController)
  • UpdateFieldAction - 更新指定字段
  • WebhookAction - 调用外部 Webhook(TODO 预留)

2.3 接口设计

GET    /ai/business/trigger/page          触发器列表
GET    /ai/business/trigger/:id           触发器详情
POST   /ai/business/trigger               新增触发器
PUT    /ai/business/trigger               修改触发器
DELETE /ai/business/trigger/:id           删除触发器
PUT    /ai/business/trigger/:id/status    启停触发器
POST   /ai/business/trigger/:id/test      测试触发器(模拟执行)

涉及文件:

  • 新增 forge-plugin-generatorbusinessapp/trigger/
  • 修改 DynamicCrudController 增加事件发布切面

Task 3: 流程引擎与业务对象集成

3.1 流程绑定配置接口

  • 在业务对象设计器中增加"流程配置"页签
  • 支持选择已有流程模型(来自 Flowable)
  • 支持表单字段 → 流程变量映射配置
  • 支持流程回调 → 状态变更映射

3.2 动态流程发起

  • BusinessFlowService - 从业务对象记录动态发起流程
  • 不再需要硬编码 @FlowBind 注解,改为运行时读取 ai_business_binding 配置
  • 支持从动态 CRUD 页面中点击"提交审批"按钮发起

3.3 流程回调处理

  • BusinessFlowCallbackHandler - 监听流程事件
  • 根据 binding_config.callbackMapping 自动更新业务记录状态
  • 触发后续触发器(状态变更事件)

3.4 接口设计

GET    /ai/business/flow/bindings/:objectCode     查询对象流程绑定
POST   /ai/business/flow/bindings                 保存流程绑定配置
GET    /ai/business/flow/models                   获取可用流程模型列表
POST   /ai/business/flow/start                    从业务记录发起流程
GET    /ai/business/flow/status/:businessKey      查询流程状态

涉及文件:

  • 新增 forge-plugin-generatorbusinessapp/flow/
  • 修改 FlowEventSubscriber 增加动态回调路由

Task 4: 消息推送集成

4.1 触发器消息动作

  • 触发器的 SEND_MESSAGE 动作配置:
    • 消息模板选择
    • 接收人规则(记录创建人/负责人/指定角色/指定人员)
    • 推送通道(站内信 + 第三方 TODO)

4.2 流程事件消息推送

  • 流程状态变更时自动推送:
    • 审批通过 → 推送给提交人
    • 审批驳回 → 推送给提交人
    • 待办产生 → 推送给审批人

4.3 第三方通道框架(TODO 预留)

  • MessageChannelAdapter 接口定义
  • WechatWorkChannelAdapter - 企微通道(TODO)
  • FeishuChannelAdapter - 飞书通道(TODO)
  • DingtalkChannelAdapter - 钉钉通道(TODO)
  • 通道配置使用安全引用,不存明文密钥

涉及文件:

  • 增强 forge-plugin-messageSysMessageService
  • 新增通道适配器接口和配置

Task 5: 报表统计集成

5.1 对象统计卡片

  • 在业务对象的列表页上方增加统计摘要区域
  • 支持配置统计指标(计数/求和/平均值/分组统计)
  • 配置存储在 ai_business_bindingREPORT 类型绑定配置中

5.2 统计查询接口

GET /ai/business/report/:objectCode/summary    对象统计摘要
  • 根据 binding_config 中的统计配置,动态生成聚合 SQL
  • 返回数量、金额汇总、状态分布等

涉及文件:

  • 新增 businessapp/report/
  • 新增统计查询 Service + Controller

Task 6: 权限配置集成

6.1 数据权限

  • 业务对象支持配置数据权限策略
  • ai_business_bindingPERMISSION 绑定中配置:
    • 权限维度(用户/部门/角色)
    • 权限字段映射(ownerUserId / ownerDeptId)
  • 自动注册到 sys_data_scope_config

6.2 按钮权限

  • 业务对象支持配置操作按钮权限
  • 标准权限:新增/编辑/删除/导入/导出/提交审批
  • 自定义按钮权限
  • 运行时通过 ai_crud_config.options 传递到前端

涉及文件:

  • 增强 BusinessBindingService 的权限配置处理
  • 修改运行态配置生成时注入权限信息

Task 7: 前端 - 应用中心清理与引擎重组

7.1 移除入口

  • app-center/engines.vue 中移除"审批引擎""导入导出引擎"卡片
  • 审批统一归入"流程引擎"展示
  • 导入导出作为对象基础能力,不在引擎中心单独展示
  • 移除 app-center/mobile.vue 菜单入口(代码保留)
  • 移除 app-center/integration.vue 菜单入口(代码保留)
  • 移除 ai_business_binding.binding_type 中 APPROVAL/IMPORT/EXPORT/MOBILE/INTEGRATION 在前端的独立展示

7.2 引擎中心保留

  • 流程引擎(含审批场景)
  • 消息引擎(含第三方推送 TODO)
  • 报表引擎(统计卡片 + 大屏嵌入)
  • 触发器引擎
  • 权限引擎

涉及文件:

  • 修改 app-center/engines.vue
  • 修改 app-center/index.vue 导航
  • 修改路由配置

Task 8: 前端 - 触发器配置 UI

8.1 触发器管理页

  • 在业务对象详情中增加"自动化/触发器"页签
  • 支持新增/编辑/删除/启停触发器
  • 可视化配置:触发事件 + 条件 + 动作

8.2 触发器配置表单

  • 事件选择:新增记录/更新记录/状态变更/字段变化
  • 条件配置:字段条件表达式(简单表达式构建器)
  • 动作选择:发起流程/推送消息/创建记录/更新字段/Webhook(TODO)
  • 动作配置:根据动作类型展示不同配置面板

涉及文件:

  • 新增 views/app-center/components/TriggerPanel.vue
  • 新增 views/app-center/components/TriggerConfigDrawer.vue

Task 9: 前端 - 流程绑定与发起

9.1 流程配置面板

  • 在业务对象详情中增加"流程配置"页签
  • 流程模型选择器(从已发布的流程模型中选择)
  • 变量映射配置(表单字段 ↔ 流程变量)
  • 回调映射配置(流程结果 → 记录状态)

9.2 运行态"提交审批"按钮

  • 在 AiCrudPage 的操作列/工具栏中增加"提交审批"按钮
  • 按钮仅在对象绑定了流程且记录状态满足条件时显示
  • 点击后调用 /ai/business/flow/start

9.3 流程状态展示

  • 在记录详情中展示当前流程状态、审批进度
  • 支持查看审批记录和审批意见

涉及文件:

  • 新增 views/app-center/components/FlowBindingPanel.vue
  • 修改 AiCrudPage 配置,支持流程操作按钮

Task 10: 前端 - 消息推送配置 + 报表统计 + 权限

10.1 消息推送配置

  • 触发器动作中"发送消息"的配置面板
  • 消息模板选择 + 接收人规则配置
  • 第三方通道选择(显示 TODO 状态)

10.2 报表统计区域

  • 在对象列表页上方增加可配置的统计摘要卡片
  • 支持配置展示哪些聚合指标

10.3 权限配置面板

  • 在业务对象详情中增加"权限"页签
  • 数据权限策略配置
  • 操作按钮权限配置

涉及文件:

  • 增强现有面板组件
  • 修改 AiCrudPage 展示统计卡片逻辑

Task 11: 集成验证

  • 后端编译:cd forge && mvn clean compile -DskipTests
  • 前端构建:cd forge-admin-ui && pnpm build
  • 业务场景走通:商机录入 → 提交 → 触发器发起流程 → 流程回调更新状态 → 推送消息

实施优先级

优先级 Task 原因
P0 Task 1(数据库) 基础依赖
P0 Task 7(UI清理) 快速可见效果
P1 Task 2(触发器后端) 核心引擎
P1 Task 3(流程集成) 核心链路
P1 Task 8(触发器前端) 核心交互
P1 Task 9(流程前端) 核心交互
P2 Task 4(消息推送) 第三方部分为TODO
P2 Task 5(报表统计) 锦上添花
P2 Task 6(权限集成) 复用现有能力
P2 Task 10(其余前端) 依赖后端完成
P3 Task 11(集成验证) 最终验证

技术约束

  • 不重写 DynamicCrudController 和 AiCrudPage
  • 不重写 Flowable 底层,只做业务层桥接
  • 第三方消息推送只建框架接口,具体实现留 TODO
  • 触发器只做轻量事件驱动,不做复杂规则引擎
  • 所有新增数据库表遵循 Flyway + 防重复规范
  • 单据状态=业务对象记录状态字段,无需新建独立概念