业务对象(商机/合同/客户)
└── 记录(带状态的单据,如一条商机数据)
├── 状态机:草稿 → 已提交 → 审批中 → 已通过/已驳回
├── 触发器:事件发生时自动执行动作
│ ├── 事件:新增记录/更新记录/状态变更/字段变化
│ └── 动作:发起流程/推送消息/创建关联记录/调用Webhook
├── 流程绑定:关联已有流程模型,映射表单变量
├── 消息推送:流程事件/触发器 → 站内信 + 第三方平台(TODO)
├── 报表统计:基于对象数据的聚合展示
└── 权限控制:数据权限 + 按钮权限
商机录入(填写动态表单)
→ 触发器:新增记录且状态=已提交时,自动发起审批流程
→ 流程变量从表单字段映射(商机名称→title, 金额→amount, 负责人→assignee)
→ 审批流程执行(部门主管→总监)
→ 审批通过 → 触发器:状态变更为已通过时
→ 推送消息给商机负责人
→ 创建跟进记录
→ 审批驳回 → 推送消息给提交人
→ 报表看板:商机阶段分布/金额汇总/转化率
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...
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"}
}
}
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...
在 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.sqlBusinessTriggerService - 触发器 CRUD + 启停BusinessTriggerExecutor - 触发器执行引擎(事件匹配 → 条件评估 → 动作执行)BusinessEventPublisher - 业务事件发布(在 DynamicCrudController 的增删改操作中发布事件)StartFlowAction - 发起流程(通过 FlowClient 调用)SendMessageAction - 发送消息(站内信 + 第三方通道 TODO)CreateRecordAction - 创建关联记录(调用 DynamicCrudController)UpdateFieldAction - 更新指定字段WebhookAction - 调用外部 Webhook(TODO 预留)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-generator 下 businessapp/trigger/ 包DynamicCrudController 增加事件发布切面BusinessFlowService - 从业务对象记录动态发起流程@FlowBind 注解,改为运行时读取 ai_business_binding 配置BusinessFlowCallbackHandler - 监听流程事件binding_config.callbackMapping 自动更新业务记录状态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-generator 下 businessapp/flow/ 包FlowEventSubscriber 增加动态回调路由SEND_MESSAGE 动作配置:
MessageChannelAdapter 接口定义WechatWorkChannelAdapter - 企微通道(TODO)FeishuChannelAdapter - 飞书通道(TODO)DingtalkChannelAdapter - 钉钉通道(TODO)涉及文件:
forge-plugin-message 的 SysMessageServiceai_business_binding 的 REPORT 类型绑定配置中GET /ai/business/report/:objectCode/summary 对象统计摘要
binding_config 中的统计配置,动态生成聚合 SQL涉及文件:
businessapp/report/ 包ai_business_binding 的 PERMISSION 绑定中配置:
sys_data_scope_configai_crud_config.options 传递到前端涉及文件:
BusinessBindingService 的权限配置处理app-center/engines.vue 中移除"审批引擎""导入导出引擎"卡片app-center/mobile.vue 菜单入口(代码保留)app-center/integration.vue 菜单入口(代码保留)ai_business_binding.binding_type 中 APPROVAL/IMPORT/EXPORT/MOBILE/INTEGRATION 在前端的独立展示涉及文件:
app-center/engines.vueapp-center/index.vue 导航涉及文件:
views/app-center/components/TriggerPanel.vueviews/app-center/components/TriggerConfigDrawer.vue/ai/business/flow/start涉及文件:
views/app-center/components/FlowBindingPanel.vue涉及文件:
cd forge && mvn clean compile -DskipTestscd 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(集成验证) | 最终验证 |