tasks.md 30 KB

任务清单:business-flow-lowcode-integration

status: proposed created: 2026-06-28 原则:复用现有低代码与 Flow 能力;不新建独立审批引擎;查询 SQL 写 Mapper XML;分页参数使用 pageNum/pageSize;Flyway 脚本防重复;内置数据 tenant_id=1;流程回调必须具备租户上下文和幂等。

阶段总览

阶段 目标 交付结果
Phase 0 基线冻结 明确当前能力、兼容范围和迁移边界
Phase 1 契约统一 BusinessFlowContract 协议和发布态快照
Phase 2 运行网关 统一发起、撤回、取消、重提和状态查询
Phase 3 事件桥接 Flow 全量事件消费、幂等、状态机和 trace
Phase 4 表单资产与待办表单 表单资产目录、BUSINESS_OBJECT_FORM / BUSINESS_CODE_FORM 和节点字段权限
Phase 5 设计器一体化 表单、单据、流程、节点权限、表单资产选择、自动化合并成流程应用搭建链路
Phase 6 模板与生成 BPMN 模板库、变量清单、节点权限默认值和脚手架
Phase 7 验收与治理 自动化验收、文档、迁移和运行监控

任务总览

Task 阶段 名称 状态 优先级
Task 0 Phase 0 业务流程现状基线和兼容范围确认 completed P0
Task 1 Phase 1 定义 BusinessFlowContract 协议 in_progress P0
Task 2 Phase 1 流程契约保存与发布态快照 in_progress P0
Task 3 Phase 1 businessKey 和 recordKey 通用化 pending P0
Task 4 Phase 2 BusinessFlowGateway 运行网关 pending P0
Task 5 Phase 2 BusinessRecordRuntimeFacade 记录运行门面 pending P0
Task 6 Phase 2 驳回修改重提运行接口 in_progress P0
Task 7 Phase 3 BusinessFlowEventBridge 全量事件桥 pending P0
Task 8 Phase 3 BusinessFlowStateMachine 状态机 pending P0
Task 9 Phase 3 流程 trace 和幂等日志 pending P1
Task 10 Phase 4 表单资产目录与 TaskFormInfo 统一表单引用 in_progress P0
Task 11 Phase 4 待办审批页低代码/代码表单渲染 in_progress P0
Task 12 Phase 4 节点字段权限后端校验与代码表单目录 in_progress P0
Task 13 Phase 5 对象设计器流程应用向导与表单资产选择器 in_progress P0
Task 14 Phase 5 发布检查合并流程契约规则 pending P0
Task 15 Phase 5 触发器与流程事件副作用编排 pending P1
Task 16 Phase 6 BPMN 模板库与变量清单 pending P0
Task 17 Phase 6 代码优先复杂业务接入 SDK/Adapter in_progress P1
Task 18 Phase 6 AI/代码生成流程脚手架 pending P1
Task 19 Phase 7 标准流程自动化验收模板 pending P0
Task 20 Phase 7 历史数据迁移和兼容验证 pending P0
Task 21 Phase 7 文档、示例和操作手册 pending P1

Phase 0:业务流程现状基线

Task 0:业务流程现状基线和兼容范围确认

目标: 冻结本轮优化边界,避免重复建设已完成能力。

涉及文件:

  • code-copilot/changes/business-flow-lowcode-integration/spec.md
  • code-copilot/changes/lowcode-app-full-loop-optimization/spec.md
  • code-copilot/changes/form-first-business-object-designer/spec.md
  • code-copilot/changes/lowcode-runtime-datasource-isolation/spec.md

工作内容:

  • 梳理现有 BusinessFlowServiceBusinessDocumentRuntimeServiceFlowTaskEventListenerFlowBusinessObjectRuntimeAdapterImpl 的职责。
  • 明确手写业务模块和低代码业务对象分别采用的接入方式。
  • 明确首期是否新增 ai_business_flow_contract_version,还是先复用 ai_business_binding.binding_config
  • 明确自定义主键改造范围:至少协议先支持 recordKey String,数据库可分阶段落地。

验收标准:

  • 当前能力、缺口和兼容策略在 spec 中有明确结论。
  • 不再出现“低代码审批引擎”作为独立平台能力。

本轮结果:

  • 已完成现状评估和兼容边界梳理。
  • 首期采用复用 ai_business_binding.binding_config 的渐进方案,不新增独立审批引擎。

Phase 1:流程契约统一

Task 1:定义 BusinessFlowContract 协议

目标: 用一份契约统一业务对象、单据、流程、节点表单、状态机、变量和事件副作用。

涉及文件:

  • 新增或扩展 BusinessFlowBindingDTO
  • 新增 BusinessFlowContractDTO
  • 新增 BusinessFlowContractVO
  • 新增 BusinessFlowContractNormalizer
  • 新增 BusinessKeyCodec

工作内容:

  • 设计 schemaVersion/objectCode/configKey/recordKey/businessBinding/document/mainFlow/variableMapping/nodeForms/events/options
  • 兼容旧字段 flowModelKey/titleTemplate/startMode/variableMapping/options
  • 增加业务表绑定:mode/tableName/primaryKeyField/tenantField/statusField/titleField/ownerField
  • 变量映射继续统一为 formField/flowVariable,兼容 field/variable
  • 增加 rejectStrategy/modifyTaskKey

验收标准:

  • 旧配置可无损归一化为新契约。
  • 新契约可降级输出旧 BusinessFlowBindingVO 给现有前端。
  • 低代码对象能自动生成业务表绑定;简单代码业务能手动选择白名单业务表和状态字段。

本轮结果:

  • BusinessFlowBindingDTO/VO 已增加 businessBinding
  • BusinessFlowBindingDTO/VO 已增加 nodeForms,可承载节点表单引用和字段权限。
  • 对象设计器流程面板已支持配置接入方式、业务表、主键字段、租户字段、状态字段、标题字段和负责人字段。

Task 2:流程契约保存与发布态快照

目标: 区分设计态草稿和运行态契约,避免运行中流程受设计变更影响。

涉及文件:

  • BusinessFlowService
  • BusinessObjectDesignerService
  • BusinessObjectPublishService
  • BusinessObjectDesignVersionService
  • Flyway 脚本(如新增契约版本表或扩展现有表)

工作内容:

  • 设计态保存到对象设计快照。
  • 发布态编译到 ai_business_binding.binding_config
  • LOWCODE_OBJECT 模式自动解析运行态表名、主键字段、租户字段和状态字段。
  • BUSINESS_TABLE 模式保存开发者确认过的表字段白名单,不允许运行时任意拼表名字段名。
  • 启动流程时把契约摘要写入 ai_business_flow_instance_link.variables_snapshot 或独立快照字段。
  • 后续如新增 ai_business_flow_contract_version,记录对象版本、流程模型版本和表单权限版本。

验收标准:

  • 编辑设计态不影响已启动流程办理页。
  • 发布检查可以读取完整契约。

本轮结果:

  • 流程绑定保存和查询已兼容 businessBinding
  • 低代码对象可根据运行态配置和单据配置补齐默认业务表绑定。
  • 节点表单策略已随流程绑定写入 ai_business_binding.binding_config.nodeForms,首期不新增契约版本表。

Task 3:businessKey 和 recordKey 通用化

目标: 解决流程链路长期依赖 Long recordId 的问题。

涉及文件:

  • BusinessFlowStartDTO
  • AiBusinessFlowInstanceLink
  • BusinessFlowInstanceLinkMapper.xml
  • TaskFormInfo
  • FlowBusinessObjectRuntimeAdapter
  • FlowBusinessObjectRuntimeAdapterImpl
  • BusinessDocumentRuntimeService

工作内容:

  • DTO 增加 recordKey String,保留 recordId Long 兼容。
  • 表增加 record_key,历史数据用 record_id 回填。
  • BusinessKeyCodec 统一构建/解析 ${objectCode}:${recordKey}
  • 所有新逻辑优先使用 recordKey

验收标准:

  • Long 主键旧对象不受影响。
  • 自定义单字段主键对象能完成发起、查询、回调和详情展示。

Phase 2:运行网关

Task 4:BusinessFlowGateway 运行网关

目标: 统一页面按钮、触发器、FlowEntry 三类流程发起入口。

涉及文件:

  • 新增 BusinessFlowGateway
  • 重构 BusinessFlowService
  • BusinessTriggerExecutor
  • FlowBusinessObjectRuntimeAdapterImpl
  • BusinessApprovalRuntimeService

工作内容:

  • 提供 start/withdraw/cancel/resubmit/getRuntime/updateVariables
  • 发起时统一校验流程契约、单据状态、按钮权限和变量完整性。
  • 发起成功后统一写实例关联和初始状态。
  • /ai/business/approval/start 只保留兼容转发。

验收标准:

  • 手动按钮和触发器发起走同一服务。
  • FlowEntry 创建业务记录后也走同一关联写入逻辑。

Task 5:BusinessRecordRuntimeFacade 记录运行门面

目标: 屏蔽动态 CRUD、多数据源、主键、审计和内部状态更新差异。

涉及文件:

  • 新增 BusinessRecordRuntimeFacade
  • DynamicCrudService
  • LowcodeRuntimeDataSourceResolver
  • BusinessDocumentRuntimeService
  • BusinessFlowService

工作内容:

  • 提供 loadRecord/updateInternalFields/buildRecordSnapshot/resolvePrimaryKey
  • 支持 LOWCODE_OBJECT 和简单 BUSINESS_TABLE 两种元数据来源。
  • 状态回写按契约中的 statusField 更新,统一处理租户字段、审计字段和运行数据源。
  • 内部更新状态不触发普通用户权限误判。
  • 保持运行数据源上下文一致。

验收标准:

  • 状态回写不再散落调用 dynamicCrudService.updateInternalFieldsById
  • 多数据源对象状态回写命中正确数据源。
  • 简单业务表只配置主键字段和状态字段,也能完成发起、流程中、通过、驳回、撤回状态同步。

Task 6:驳回修改重提运行接口

目标: 把“驳回到发起人修改节点”固化为平台能力。

涉及文件:

  • BusinessFlowGateway
  • BusinessFlowStateMachine
  • FlowClient
  • AiCrudPage
  • 待办详情页

工作内容:

  • 契约增加 rejectStrategy=RETURN_TO_MODIFY_TASKmodifyTaskKey
  • 契约增加修改模式:INLINE_MODIFY(待办内嵌修改)和 BUSINESS_PAGE_MODIFY(跳转业务单据修改)。
  • TASK_COMPLETED + approvalResult=reject 进入可修改状态但不结束流程。
  • 发起人在修改节点保存业务数据后,更新流程变量并完成原任务。
  • 重提复用原流程实例。
  • 低代码简单表单默认走 INLINE_MODIFY;代码优先复杂业务默认走 BUSINESS_PAGE_MODIFY,由业务页保存后调用 BusinessFlowGateway.resubmit(...)

验收标准:

  • 提交 -> 驳回 -> 修改 -> 重提 -> 通过 全链路不新建第二个流程实例。
  • 修改节点以外的流程中状态默认不可编辑主数据。
  • 审批节点只处理审批意见/审批附件,不开放任意业务主字段修改。

本轮结果:

  • 新增 POST /ai/business/flow/resubmit,供复杂代码业务页在保存主数据后完成当前修改节点。
  • 重提接口会校验当前用户是已签收办理人,复用原流程实例,不新建第二个流程。
  • 重提成功后业务流程状态回写为 IN_PROCESS,并可携带补充流程变量。
  • 当前重提接口已具备平台协议能力;完整“驳回到指定修改节点”的模板和端到端样例仍需后续用真实流程模型验证。

Phase 3:事件桥、状态机和可观测性

Task 7:BusinessFlowEventBridge 全量事件桥

目标: 低代码流程不依赖 @FlowBind(modelKey=...) 手写 Bean。

涉及文件:

  • 新增 BusinessFlowEventBridge
  • 新增 Redis 事件监听或扩展现有 FlowEventSubscriber
  • BusinessFlowController#callback
  • BusinessFlowCallbackDTO

工作内容:

  • 订阅 flow:event:all
  • 支持 Webhook 回调。
  • tenantId/businessKey/processInstanceId/processDefKey 查找实例关联和契约。
  • 统一调用状态机。

验收标准:

  • 新增低代码流程模型无需写 Java 回调类即可回写业务状态。
  • 缺失 tenantId 时记录告警并拒绝或按明确策略兜底。

Task 8:BusinessFlowStateMachine 状态机

目标: 把 Flow 事件转为业务状态流转,支持中间节点状态。

涉及文件:

  • 新增 BusinessFlowStateMachine
  • BusinessFlowService
  • BusinessDocumentConfigService
  • BusinessEventPublisher

工作内容:

  • 处理 PROCESS_STARTED/TASK_CREATED/TASK_COMPLETED/PROCESS_COMPLETED/PROCESS_CANCELED
  • 支持终态驳回和驳回修改两类策略。
  • 状态回写前校验当前状态,避免乱序覆盖。
  • 状态变化后发布 FLOW_APPROVED/FLOW_REJECTED/FLOW_CANCELED 业务事件。

验收标准:

  • 重复事件不会重复触发副作用。
  • 乱序事件不会把 APPROVED 回退成 IN_PROCESS

Task 9:流程 trace 和幂等日志

目标: 能按一条业务流程查清发起、回调、状态回写和触发器执行结果。

涉及文件:

  • 新增或扩展 ai_business_flow_trace_log
  • BusinessFlowGateway
  • BusinessFlowEventBridge
  • BusinessTriggerExecutor
  • BusinessMessageChannelService

工作内容:

  • 生成 correlationId
  • 记录发起来源、变量快照、Flow 返回、事件回调、状态前后值、触发器和消息结果。
  • 记录 eventId 或组合幂等键。

验收标准:

  • 运维能按 businessKey/processInstanceId/correlationId 查询完整链路。
  • 回调失败可定位具体阶段并支持补偿重放。

Phase 4:表单资产与待办表单一体化

Task 10:表单资产目录与 TaskFormInfo 统一表单引用

目标: 流程节点配置不再让用户手工输入页面路径,而是选择平台可识别、可校验、可迁移的表单资产。

涉及文件:

  • TaskFormInfo
  • FlowTaskServiceImpl
  • 新增 BusinessFormAsset
  • 新增 BusinessFormAssetService
  • 新增 BusinessCodeFormProvider
  • 新增 BusinessCodeFormProviderRegistry
  • 新增 BusinessTaskFormContextService
  • FlowBusinessObjectRuntimeAdapter
  • NodePropertiesPanel.vue
  • BusinessFlowBindingPanel.vue

工作内容:

  • 定义统一 formReftype/code/viewKey/version,兼容旧 formKey/formUrl
  • 支持四类资产:低代码业务表单、Flow 动态表单、代码表单、外部地址。
  • 增加 formType=BUSINESS_OBJECT_FORMformType=BUSINESS_CODE_FORM
  • 返回 formRef/objectCode/configKey/recordKey/viewKey/mode/editMode/fieldPermissions/runtimeRules
  • 代码表单通过 BusinessCodeFormProvider 或配置注册,不让用户输入组件路径。
  • 提供表单资产查询和字段目录查询接口,供流程设计器节点面板使用。
  • 支持通过 businessKey、流程变量、表单实例快照兜底解析业务记录。

验收标准:

  • 流程节点配置默认通过下拉选择表单资产。
  • 只有外部地址高级模式允许手工输入 URL。
  • 待办页能打开低代码业务详情或代码注册表单。
  • 会签子任务缺少本地 business_key 时能从流程变量或实例关联兜底。
  • formKey/formUrl 配置仍能读取和办理。

本轮结果:

  • 已新增 GET /ai/business/flow/form-assets/{objectCode},从低代码对象 formDesignerSchema 汇聚默认表单、多表单资产和字段目录。
  • 已新增 GET/PUT /ai/business/flow/task-form-context,待办页可按 businessKey/processInstanceId/taskDefKey 获取业务表单上下文并保存授权字段。
  • BusinessFlowVariableResolver 已解析 BPMN userTask,流程配置面板可按人工节点自动生成节点表单策略行。
  • 节点表单配置已保存统一 formRef:低代码表单使用 BUSINESS_OBJECT_FORM + objectCode + formKey + viewKey,代码表单预留 BUSINESS_CODE_FORM + providerKey + formKey,外部表单使用 EXTERNAL + formUrl
  • 首期不让 forge-plugin-flow 反向依赖低代码模块;待办页先在读取 TaskFormInfo 后调用业务侧上下文 API 完成运行态桥接。

Task 11:待办审批页低代码/代码表单渲染

目标: 审批人办理时看到与业务详情一致的表单和流程上下文,复杂代码业务也能接入待办页。

涉及文件:

  • forge-admin-ui/src/views/flow/todo.vue
  • FlowTaskDetailShell.vue
  • 新增或复用低代码表单渲染组件
  • 新增代码表单运行容器或路由跳转处理
  • AiCrudFlowDetail.vue
  • FieldValueRenderer.vue

工作内容:

  • 根据 BUSINESS_OBJECT_FORM 加载业务记录。
  • 根据 BUSINESS_CODE_FORM 加载业务模块注册的表单上下文,支持内嵌组件或跳转业务详情页。
  • 应用节点字段权限:只读、隐藏、可编辑、必填。
  • 右侧展示流程历史、流程图和审批动作。
  • 支持修改节点两种模式:待办内嵌“保存并重提”、跳转业务单据页修改后重提。
  • 审批节点默认只写审批意见、签名和审批附件,不改业务主数据。

验收标准:

  • 审批办理页不需要每条流程手写外置表单。
  • 字典、图片、金额、关联字段等渲染与业务详情页一致。
  • 采购合同等代码优先复杂业务可从待办进入业务页修改并重提。
  • 审批、办理、驳回修改三类任务在 UI 上有清晰区分。

本轮结果:

  • forge-admin-ui/src/views/flow/todo.vue 已接入低代码业务表单上下文,使用 AiForm 渲染节点可见字段。
  • 审批“同意”前会先校验并保存当前节点配置为可编辑的业务字段;快捷同意遇到需要填写业务字段的任务会提示进入详情办理。
  • 待办页已支持 BUSINESS_CODE_FORM 上下文兜底展示;Provider 返回业务页地址时,可从待办打开业务表单处理。
  • 代码表单和存在可写业务字段的任务已禁止快捷同意,避免绕过业务表单保存和节点字段权限。
  • 代码表单内嵌运行容器仍按 Task 17 后续扩展;当前复杂代码业务优先走业务页跳转模式。

Task 12:节点字段权限后端校验与代码表单目录

目标: 字段权限不能只靠前端控制;代码表单也必须提供可配置的字段或区域目录。

涉及文件:

  • BusinessTaskFormContextService
  • BusinessRecordRuntimeFacade
  • DynamicCrudService
  • BusinessCodeFormProvider
  • BusinessFlowAdapter

工作内容:

  • 只允许修改节点配置为可编辑的字段。
  • 隐藏字段不返回给无权限办理人。
  • 审批意见、签名等流程字段与业务字段隔离。
  • 代码表单 Provider 通过 formAssets() 暴露字段或区域目录,复杂页面可把区域、附件区、操作按钮抽象为虚拟字段。
  • 后端按 taskDefKey + formRef + fieldPolicies 校验提交字段。
  • 发布检查校验节点权限引用的字段必须存在,历史字段标记为失效但不静默通过。

验收标准:

  • 前端篡改不可编辑字段时后端拒绝。
  • 待办办理人不能通过业务详情 API 看到无权字段。
  • 代码表单即使是自定义 Vue 页面,也能在节点配置中选择“负责人节点显示上传清单、其他节点隐藏或只读”。

本轮结果:

  • 节点字段权限已进入流程绑定协议,支持按字段保存 readable/writable/required
  • 后端保存时会归一化 fieldPermissions,默认不把未知字段当作可编辑字段。
  • BusinessFlowService#saveTaskFormContext 已按节点 taskDefKey + fieldPermissions 过滤保存字段,隐藏字段不返回给待办页,不可编辑字段即使前端篡改也不会写入。
  • 待办业务表单上下文已强制携带 taskId 并通过 Flow 服务校验任务状态、办理人、候选人、流程实例、业务 Key 和节点 Key。
  • 保存业务字段和重提必须由当前已签收办理人执行;候选任务需先签收,避免多人并发修改业务主数据。
  • 新增 BusinessCodeFormProviderBusinessCodeFormProviderRegistry,业务模块可用 Spring Bean 注册代码表单资产、上下文和保存逻辑。

Phase 5:设计器一体化

Task 13:对象设计器流程应用向导与表单资产选择器

目标: 把表单、单据、流程、节点权限和自动化组织成完整低代码搭建链路。

涉及文件:

  • object-designer.[objectCode].vue
  • BusinessDocumentPanel.vue
  • BusinessFlowBindingPanel.vue
  • FlowVariableMappingEditor.vue
  • 新增节点表单权限配置面板
  • 新增表单资产选择器

工作内容:

  • 调整步骤:表单 -> 单据 -> 流程 -> 节点表单权限 -> 自动化 -> 权限 -> 发布检查。
  • 流程配置面板展示状态字段、发起状态、已映射变量、缺失变量。
  • 节点权限面板读取 BPMN userTask。
  • 节点表单配置展示“表单类型 / 表单资产 / 表单视图”,不再默认展示路径输入框。
  • 外部地址放到高级模式,并提示无法参与字段级权限校验。
  • 选择代码表单后,自动加载 Provider 暴露的字段/区域目录给 FormPermissionConfig

验收标准:

  • 用户不需要在多个菜单间来回跳转才能完成流程类应用配置。
  • 发布前能看到完整闭环状态。
  • 业务用户能通过名称选择“采购合同审批表单”,不需要知道 Vue 路由或组件路径。

本轮结果:

  • BusinessFlowBindingPanel.vue 已增加业务记录绑定配置入口。
  • 已取消“只靠用户手工输入隐藏路径/表名”的首期使用方式:低代码对象默认由后端回显运行态表和字段,代码优先复杂业务可切换到适配器模式。
  • BusinessFlowBindingPanel.vue 已增加“节点表单策略”:按 BPMN 人工节点选择低代码业务表单,配置可见、可编辑、必填字段;代码表单和外部表单保留开发者模式入口。
  • 待办审批页渲染、运行态字段权限校验和代码表单 Provider 目录已按 Task 10/11/12 完成首期运行态桥接。
  • 仿钉钉抄送节点已从手工输入用户 ID 改为“指定人员 / 指定角色 / 表达式”三种业务来源;普通 BPMN 服务任务勾选“作为抄送节点”后使用同一套配置能力。
  • 抄送节点导出为 serviceTask + flowable:type="cc",按来源写入 candidateUserscandidateGroups,默认挂平台 flowCcNodeDelegate;流程走到该节点时可按固定人员、角色成员或表达式结果发送抄送,不再只能依赖流程结束后的后台变量抄送。
  • 低代码应用完整步骤编排、发布检查联动和表单设计器侧体验改造按用户要求暂缓,本轮不继续扩展。

Task 14:发布检查合并流程契约规则

目标: 发布时一次性检查流程类应用是否可运行。

涉及文件:

  • BusinessObjectPublishService
  • BusinessPublishChecklist.vue
  • LowcodeSchemaValidator

工作内容:

  • 检查业务表绑定、主键字段、状态字段、状态映射、流程模型、变量映射、修改节点、表单资产、节点字段权限、按钮权限、触发器动作。
  • 校验 businessBinding.tableName/statusField/primaryKeyField/tenantField 来自低代码元数据或开发者白名单。
  • 校验节点 formRef 引用的表单资产存在;代码表单资产必须提供字段或区域目录。
  • 校验驳回修改模式必须明确为 INLINE_MODIFYBUSINESS_PAGE_MODIFY
  • 对外部 URL 表单输出风险提示:只能做页面级跳转,不能参与平台字段级权限校验。
  • 输出阻断项、警告项和跳转修复动作。

验收标准:

  • 未配置主流程但启用单据模式时给出明确修复路径。
  • BPMN 引用未映射变量时发布检查能发现。

Task 15:触发器与流程事件副作用编排

目标: 流程通过、驳回、撤回后可以低代码配置副作用。

涉及文件:

  • BusinessTriggerService
  • BusinessTriggerExecutor
  • BusinessTriggerMapper.xml
  • 触发器前端配置页

工作内容:

  • FLOW_APPROVED/FLOW_REJECTED/FLOW_CANCELED 作为标准事件源。
  • 创建记录、更新字段、发送站内消息、Webhook TODO 统一支持 correlationId
  • 动作执行必须幂等。

验收标准:

  • 审批通过后可创建关联记录。
  • 审批驳回后可发送站内消息。
  • 重复回调不重复创建记录。

Phase 6:模板与生成

Task 16:BPMN 模板库与变量清单

目标: 让流程设计器和 AI 生成器能快速生成规范流程。

涉及文件:

  • FlowTemplate
  • FlowTemplateFactory
  • FlowBpmnGenerateService
  • flow-designer/converter
  • 模板 seed/Flyway

工作内容:

  • 增加串行、会签、并行或签、驳回修改重提、审批后抄送、审批后处理模板。
  • 每个模板输出 BPMN、变量清单、节点权限默认值、发布检查规则。
  • 模板节点命名固定。

验收标准:

  • 选择模板后能自动生成可发布 BPMN。
  • 变量候选和低代码字段映射能自动推荐。

Task 17:代码优先复杂业务接入 SDK/Adapter

目标: 让非低代码创建、由用户自己写代码实现的复杂业务,也能灵活接入同一套流程网关、事件桥、trace 和待办展示能力。

涉及文件:

  • 新增 BusinessFlowAdapter
  • 新增 AbstractBusinessFlowAdapter
  • 新增 BusinessFlowAdapterRegistry
  • 新增 FlowStartRequest
  • 新增 FlowStartResult
  • 新增 FlowBusinessSnapshot
  • 新增 BusinessTaskFormContext
  • 新增 BusinessCodeFormProvider
  • 新增 BusinessCodeFormProviderRegistry
  • BusinessFlowGateway
  • BusinessFlowEventBridge
  • 示例业务模块文档

工作内容:

  • 提供三种接入模式:Gateway API 模式、Adapter 模式、Annotation 兼容模式。
  • Adapter 提供 businessType/objectCode/modelKey/buildBusinessKey/loadBusiness/buildStartVariables/validateBeforeStart/markInProcess/onTaskCompleted/onApproved/onRejected/onCanceled
  • Adapter 注册表按 businessType/modelKey/businessKey 路由流程事件。
  • BusinessFlowGateway 支持代码优先业务发起流程,不要求存在低代码对象或 ai_crud_config
  • BusinessFlowEventBridge 识别代码优先业务后调用 Adapter,而不是走动态 CRUD 状态回写。
  • Adapter 可返回外部业务详情路由或 BUSINESS_CODE_FORM 上下文,供待办页打开复杂业务详情。
  • 代码业务如果要参与节点字段权限,必须通过 BusinessCodeFormProvider.formAssets() 提供字段或区域目录;复杂区域可用虚拟字段表示。
  • 提供示例:采购合同 Adapter + 采购合同审批表单 Provider + 负责人上传清单字段策略。
  • 保留 @FlowBind/@FlowCallback 兼容,但新复杂业务优先使用 Adapter。

验收标准:

  • 手写业务模块不迁移到低代码动态 CRUD,也能发起、审批、撤回、回写状态和查看流程进度。
  • 业务状态机和领域副作用仍在业务 Service 内实现,平台不接管业务事务。
  • 手写业务模块能复用同一事件桥、trace、消息和标准验收模板。
  • 手写业务模块能通过注册表单资产接入待办页,不要求用户填写 Vue 路径。

本轮结果:

  • 已落地 BusinessCodeFormProviderBusinessCodeFormProviderRegistry 服务端扩展点。
  • GET /ai/business/flow/form-assets/{objectCode} 会合并已注册代码表单资产,后续业务模块实现 Provider 后即可出现在资产目录中。
  • BUSINESS_CODE_FORM 待办上下文已支持 Provider 委派;未注册 Provider 时返回明确 warning,不再默默降级为手工路径。
  • 复杂代码业务“业务页保存 -> 调用 /ai/business/flow/resubmit 重提”的后端协议已具备;采购合同等具体示例 Provider 尚未新增。
  • 同一套 Flow 事件不会被 Adapter 和 @FlowCallback 重复消费。
  • 不要求低代码对象生成 Java Adapter。
  • 已新增“采购单审批测试”代码优先样例,注册 SamplePurchaseOrderCodeFormProvider,可通过代码表单资产和外置表单路径验证手写业务接入流程。

Task 18:AI/代码生成流程脚手架

目标: 对需要代码化交付的流程模块,生成规范骨架。

涉及文件:

  • 代码生成模板
  • forge-codegen-crud 相关模板
  • 前端页面模板

工作内容:

  • 生成 Adapter、BPMN 模板、Flyway、字典、权限、前端详情页、测试骨架。
  • 生成内容遵循 XML SQL、pageNum/pageSize、字典和租户规则。

验收标准:

  • 新手写流程模块不再从零拼接流程接入代码。
  • 生成结果符合 Forge 编码规范。

Phase 7:验收与治理

Task 19:标准流程自动化验收模板

目标: 每个流程类应用可复用同一套验收场景。

涉及文件:

  • code-copilot/rules/automated-testing-standard.md
  • 新增流程验收用例模板
  • 后端测试
  • 前端 E2E 或组件测试

验收场景:

  • 提交 -> 审批通过 -> 状态 APPROVED -> 触发器副作用。
  • 提交 -> 驳回 -> 修改重提 -> 再审批通过。
  • 提交 -> 撤回 -> 状态 CANCELED
  • 会签所有人处理后才完成。
  • 抄送人能查看详情。
  • 多租户上下文正确。

验收标准:

  • 新流程应用按模板可快速生成测试计划。
  • 执行结果追加到当前变更 execution-log.md

本轮结果:

  • 已新增采购单审批测试样例,覆盖“提交 -> 部门负责人审批 -> 工程部经理审批 -> 会签 -> 审批通过”和“审批节点驳回 -> 申请人修改 -> 重提/终止”的核心验收路径。
  • 已提供前端列表工作台和待办外置表单,用于后续真实服务环境下统一跑全链路验证。

Task 20:历史数据迁移和兼容验证

目标: 现有低代码对象和流程实例平滑迁移。

涉及文件:

  • Flyway 迁移脚本
  • 迁移校验 SQL
  • 兼容测试

工作内容:

  • recordId 回填 recordKey
  • binding_config 归一化为新契约。
  • 旧审批兼容接口仍可转发。
  • 运行中流程按旧关联继续可查可办。

验收标准:

  • 历史商机/离职等样例流程仍可查看进度。
  • 新旧配置混合时发布检查给出明确提示。

Task 21:文档、示例和操作手册

目标: 让后续业务流程接入有可复用操作标准。

涉及文件:

  • forge-docs
  • code-copilot/knowledge
  • 示例数据 seed

工作内容:

  • 编写“流程类低代码应用搭建指南”。
  • 编写“业务流程契约字段说明”。
  • 编写“驳回修改重提模板使用指南”。
  • 编写“流程事件排障指南”。

验收标准:

  • 新增流程类低代码应用时,业务、开发、测试三方能按同一文档工作。
  • 常见问题沉淀到 code-copilot/memory/pitfalls.mdcode-copilot/knowledge