拆分顺序:数据模型 → 接口协议 → 底层实现 → 上层编排 → 入口层 每个任务 = 可独立提交的原子变更(3-5 个文件为宜) 进入
/apply前必须先确认spec.md的 HARD-GATE
spec.md 中 PROCESS_ONLY / BUSINESS_OBJECT / HYBRID 三种数据模式。sys_org 负责人字段。forge/db/migration/ 最新版本,确定 Flyway 脚本版本号。code-copilot/rules/automated-testing-standard.md,创建或复用 test-spec.md 和 execution-log.md。forge/db/migration/V1.0.57__add_flow_form_runtime_entry.sql — 新增表、字典、菜单和权限,版本号进入 /apply 时按最新迁移顺延。forge/forge-framework/forge-plugin-parent/forge-plugin-flow/src/main/java/com/mdframe/forge/starter/flow/entity/FlowForm.java — 扩展表单分类、字段目录、发布状态字段。FlowFormVersion.java, FlowEntry.java, FlowEntryFieldMapping.java, FlowFormInstance.java, FlowFillBatch.java, FlowFillBatchItem.java。java
public interface FlowEntryMapper extends BaseMapper<FlowEntry> {
IPage<FlowEntry> selectEntryPage(Page<FlowEntry> page, @Param("query") FlowEntryQueryDTO query);
}
forge/forge-flow/forge-flow-server/src/main/java/com/mdframe/forge/flow/controller/FlowFormController.java — page 改 pageNum,新增发布和版本接口。forge/forge-framework/forge-plugin-parent/forge-plugin-flow/src/main/java/com/mdframe/forge/starter/flow/service/FlowFormService.java — 新增发布、版本、字段目录方法。forge/forge-framework/forge-plugin-parent/forge-plugin-flow/src/main/java/com/mdframe/forge/starter/flow/service/impl/FlowFormServiceImpl.java — 查询迁移 XML,发布不可变版本。forge/forge-framework/forge-plugin-parent/forge-plugin-flow/src/main/resources/mapper/FlowFormMapper.xml — 表单分页、启用列表、Key 查询。java
FlowFormVersion publishVersion(Long formId);
List<FormFieldCatalogItemDTO> resolveFieldCatalog(String formKey, Long versionId);
Page<FlowForm> getPage(String formName, Integer status, Integer pageNum, Integer pageSize);
FlowEntryController.javaFlowEntryService.java, FlowEntryServiceImpl.javaFlowEntryDTO.java, FlowEntryQueryDTO.java, FlowEntryRuntimeVO.javaforge-admin-ui/src/api/flow.js — 增加入口 API。java
IPage<FlowEntry> pageEntries(FlowEntryQueryDTO query, Integer pageNum, Integer pageSize);
FlowEntryRuntimeVO getRuntimeEntry(String entryCode);
void saveEntry(FlowEntryDTO dto);
FlowRuntimeController.javaFlowRuntimeService.java, FlowRuntimeServiceImpl.javaFlowInstanceServiceImpl.java — 支持从入口传入业务键、标题、变量和表单实例关联。FlowTaskServiceImpl.java — getTaskFormInfo 返回实例快照字段。java
FlowStartResultVO submitEntryForm(String entryCode, FlowEntrySubmitDTO dto);
FlowFormInstanceVO getInstanceByProcessInstanceId(String processInstanceId);
FlowRuntimeServiceImpl.java — 根据 dataMode 分发 PROCESS_ONLY 或业务对象落表。FlowBusinessObjectRuntimeAdapterImpl.java — 接入 DynamicCrudService.insertInternal 创建业务记录,并在流程启动后写入 ai_business_flow_instance_link。FlowBusinessObjectRuntimeAdapter.java — 增加 afterProcessStarted 回调,用于业务记录与流程实例关联。BusinessFlowService.java — 如需补充入口来源和表单实例 ID 参数,保持兼容旧调用。BusinessDocumentRuntimeService.java — 保持单据状态校验和流程状态展示。DynamicCrudService.java — 复用安全新增/更新,不新增物理表 SQL。java
BusinessRecordCreateResult createBusinessRecordFromForm(FlowEntry entry, Map<String, Object> formData);
forge-admin-ui/src/components/bpmn/NodePropertiesPanel.vue — 接收字段目录,审批人、候选用户、候选组和流转条件可选择表单字段/系统变量。forge-admin-ui/src/views/flow/design.vue — 按模型绑定表单拉取字段目录;内联表单 fallback 到前端 schema 解析;透传给节点属性面板。forge-admin-ui/src/api/flow.js — 字段目录 API。js
flowApi.getFormFieldCatalog({ modelKey, formKey, versionId })
FlowFillBatchController.javaFlowFillBatchService.java, FlowFillBatchServiceImpl.javaFlowFillBatchServiceImpl.java — 发布批次时解析目标组织,默认复用 sys_org.leader_id/leader_name 生成明细并发送站内信。FlowRuntimeServiceImpl.java — 支持按 batchItemId 提交,补充组织/批次流程变量并回写明细。flow/fillBatch.vue 独立页面,避免把业务场景示例固化为流程管理菜单。java
void publishBatch(Long batchId);
FlowStartResultVO submitBatchItem(Long itemId, FlowEntrySubmitDTO dto);
List<Long> resolveOwnerUsers(FlowOwnerRuleDTO ownerRule, Long orgId);
TASK_CREATED 生成待办后立即发送站内信,并保证幂等。FlowTaskEventListener.java — 在 flowTaskMapper.insert 成功后发送 WEB 消息。MessageService.java / MessageServiceImpl.java — 增加按 bizType + bizKey 幂等发送能力或查询方法。MessageSendRequestDTO.java — 如缺少跳转地址字段则补充 jumpUrl 或放入 params。DefaultMessageReceiverResolver.java — 确认角色/组织用户展开能力。java
SysMessage sendIfAbsent(MessageSendRequestDTO req, String bizType, String bizKey);
void sendTaskCreatedMessage(FlowTask flowTask);
forge-admin-ui/src/views/flow/components/FlowEntryConfigModal.vueforge-admin-ui/src/views/flow/model.vue — 移除更多操作中的“入口配置”。forge-admin-ui/src/views/flow/entry-runtime.[entryCode].vueforge-admin-ui/src/router/index.js — 移除隐藏入口运行路由。forge-admin-ui/src/views/flow/model.vue — 已部署模型的更多操作增加“发起测试”,弹窗内按模型 formJson 渲染动态表单,提交后调用流程启动接口。forge-admin-ui/src/api/flow.js — 复用 startProcess(modelKey, data)。js
flowApi.startProcess(modelKey, {
businessKey: `FLOW_TEST:${modelKey}:${Date.now()}`,
businessType: 'FLOW_MODEL_TEST',
variables,
testStart: true,
})
forge-admin-ui/src/views/flow/model.vue — 点击设计打开全屏 n-modal 工作区。forge-admin-ui/src/views/flow/design.vue — 增加 embedded/modelId 入参和 close/saved/deployed 事件,保留路由兼容;顶部流程配置改为常驻三栏工作区,直接展示表单配置。forge-admin-ui/src/views/flow/todo.vue — 抽屉改为全屏弹窗或详情内容区。forge-admin-ui/src/views/flow/done.vue, started.vue, cc.vue — 详情展示统一改造。vue
<FlowDesignWorkspace :model-id="currentModelId" @saved="loadData" />
<FlowTaskDetailModal v-model:show="showTaskDetail" :task="currentTask" />
forge-admin-ui/src/components/form-create/FlowFormCreateDesigner.vue — 注册低代码业务组件分组,支持字典选择、行政区划、组织选择、人员选择、文件/图片上传、引用对象等组件;右侧“表单配置”支持统一设置字段行间距。forge-admin-ui/src/components/form-create/FlowFormCreateRenderer.vue — 运行渲染时复用业务组件选项补齐逻辑,加载系统字典、组织树、人员列表等数据。forge-admin-ui/src/components/form-create/formCreateBridge.js — 统一为流程动态表单字段补默认 wrap.style.marginBottom=20px。forge-admin-ui/src/views/app-center/components/designer/form-first/forgeBusinessComponents.js — 流程设计器复用组件注册但保留流程字段自由编辑,字段属性面板不注入行间距配置。js
installForgeBusinessComponents(designerRef.value, resolveCurrentFields(), {
installBaseRules: false,
})
hydrateForgeBusinessPreviewRules(rules)
code-copilot/changes/flow-management-form-runtime-optimization/test-spec.mdcode-copilot/changes/flow-management-form-runtime-optimization/execution-log.mdcode-copilot/changes/flow-management-form-runtime-optimization/spec.mdcode-copilot/changes/flow-management-form-runtime-optimization/tasks.mdbash
cd forge && mvn -pl forge-flow/forge-flow-server -am compile -DskipTests
cd forge-admin-ui && pnpm build