change:
application-business-process-orchestrator当前阶段:Apply/M1,先实施控制面与画布,不接管正式触发 拆分顺序:协议冻结 → 数据模型 → 控制面 → 持久化运行 → 节点执行 → Flowable 恢复 → 发布 → 前端 → 迁移收口 每个编码任务必须独立提交、同步文档并按增量差异验证
spec.md 第 9 章全部默认决策并完成 HARD-GATE 记录。/apply 前读取根 AGENTS.md、当前 spec.md/tasks.md、code-copilot/memory/* 和相关 Skill。test-spec.md 与 execution-log.md,并读取 code-copilot/rules/automated-testing-standard.md 形成增量验证基线。forge-server/db/migration;当前最新为并行变更中的 V1.0.82,本变更使用连续未占用的 V1.0.83/V1.0.84,Task 7 以新增 V1.0.85 补齐运行时开始权限,不修改已提交脚本或并行 V1.0.82。BusinessFlowService/FlowClient,消息与企业协同复用 BusinessActionStepExecutor + MessageService/CollaborationMessageChannel;统一能力平台提供 CapabilityRegistry,但 generator 尚无受控桥接,完成 Task 9B 前节点必须标为不可用;不提供自由 URL。businessKey=<objectCode>:<recordId>。test-spec.md 完成状态、审批权限、定时身份、外部调用、旧配置迁移和回调幂等专项审查;真实环境验收门禁继续保留。| 里程碑 | 范围 | 完成标志 |
|---|---|---|
| M1 控制面与画布 | Task 0-7、Task 14-16 | 应用可创建、复制、保存、校验业务流程草稿;节点配置和应用工作台入口完整,尚不接管正式触发 |
| M2 运行、审批与发布 | Task 8A-8B、Task 9A-9B、Task 10-13 | 事件/定时/手动触发可持久化执行,审批节点可等待和恢复,应用发布固定流程版本 |
| M3 迁移与收口 | Task 17-18 | 旧配置可预览/迁移,样例切换,旧普通入口停止写入且历史运行不受影响 |
| M4 验证与审查 | Task 19 | Spec 合规、自动化、构建、真实 Flowable E2E 和迁移演练完成 |
| Spec 功能 | 主要实现 Task | 验证 Task |
|---|---|---|
| 功能 1-4:应用流程资产、主对象、单开始节点与审批并发 | Task 1-4、Task 7、Task 11、Task 16 | Task 19 |
| 功能 5-8:独立协议、校验器与画布基础 | Task 0、Task 6、Task 14-15 | Task 19 |
| 功能 9-12:事件、业务语义、定时与手动开始 | Task 10、Task 13、Task 15 | Task 19 |
| 功能 13-18:条件、动作、消息、受治理能力、结束与子流程 | Task 6、Task 8A-9B、Task 10、Task 15 | Task 19 |
| 功能 19-23:Flowable 审批子流程、等待、恢复与状态修复 | Task 11、Task 15 | Task 19 |
| 功能 24-30:持久化运行、幂等、重试、身份与数据权限 | Task 1、Task 4-5、Task 8A-9B、Task 10-11、Task 13 | Task 19 |
| 功能 31-35:应用发布、版本、回滚、运行治理与就绪检查 | Task 3、Task 5、Task 12-13、Task 16 | Task 19 |
| 功能 36-40:迁移、旧入口收口与采购审批样例 | Task 17-18 | Task 19 |
建议实施顺序为 Task 0 → Task 1-7 → Task 14-16 → Task 12 → Task 8A-8B → Task 9A-9B → Task 10-11 → Task 13 → Task 17-19。其中 Task 12 必须先冻结应用发布快照和已发布版本解析合同,Task 10 才能把正式事件和定时触发路由到该快照;Task 编号表达领域拆分,不代表可以忽略这项依赖。
spec.md 和本 tasks.md,未修改生产代码或数据库。状态:completed(2026-08-03)。协议样例、身份矩阵、状态机、安全审查与验证矩阵冻结在 test-spec.md;基线证据记录在 execution-log.md。
code-copilot/changes/application-business-process-orchestrator/spec.md — 回填第 9、13 章确认记录。code-copilot/changes/application-business-process-orchestrator/tasks.md — 回填任务状态和最终文件清单。code-copilot/changes/application-business-process-orchestrator/test-spec.md — 新增协议、服务、迁移、前端和 E2E 测试矩阵。code-copilot/changes/application-business-process-orchestrator/execution-log.md — 新增环境、基线、命令、结果和清理记录。businessProcessJson 完整示例:手动提交审批、记录新增自动化、定时分层提醒各一份。MANUAL/EVENT/SCHEDULE/PROCESS_CALLBACK/EXTERNAL 对应 actor、tenant、activeOrg 和失败策略。状态:implemented(2026-08-03)。V1.0.83/V1.0.84 已实现并通过静态检查;MySQL 8 新库、存量库和重复 Flyway 实跑留待 Task 19 真实环境门禁。
forge-server/db/migration/V1.0.83__add_application_business_process.sql — 新增四张表、业务唯一索引、运行索引和审计字段。forge-server/db/migration/V1.0.84__add_application_business_process_resources.sql — 新增字典、菜单/API 权限和 PROCESSES 发布步骤相关资源。ai_business_process.del_flag、ai_business_process_version.del_flag 使用 BIGINT NOT NULL DEFAULT 0,逻辑删除写当前主键。tenant_id + application_id + process_code + del_flag;非空简单旧来源增加 tenant_id + legacy_source_type + legacy_source_id + del_flag 唯一索引,合并来源由迁移服务锁定并校验全部来源。ai_business_process_run.subject_record_id 使用字符串列,兼容不同业务主键且不损失雪花 ID 精度。LONGTEXT 并在服务端解析;索引只覆盖租户、应用、流程、状态、业务键、幂等键和时间等稳定列。information_schema、CREATE TABLE IF NOT EXISTS 和 INSERT ... WHERE NOT EXISTS 防重复,内置数据 tenant_id=1。forge_schema_history 检查;禁止在 SQL 中转换旧画布 JSON。状态:completed(2026-08-03)。已实现租户/应用/主对象失败关闭查询、草稿 hash CAS 和主键墓碑逻辑删除,并通过 3 项 Mapper 契约测试。
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/domain/entity/AiBusinessProcess.java — 新增流程定义实体和显式 @TableLogic(value="0", delval="id")。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/mapper/BusinessProcessMapper.java — 新增定义查询和 CAS 更新签名。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/mapper/BusinessProcessMapper.xml — 新增应用分页、编码查询、发布状态和逻辑删除 SQL。java
Page<AiBusinessProcess> selectPage(Long tenantId, Long applicationId,
String keyword, String status, Page<?> page);
AiBusinessProcess selectActiveByCode(Long tenantId, Long applicationId, String processCode);
int updateDraftSchema(Long tenantId, Long id, String schemaJson, String schemaHash,
String designStatus, Long updateBy);
int logicalDelete(Long tenantId, Long id, Long updateBy);
状态:completed(2026-08-03)。已实现不可变版本实体、固定版本/应用版本读取和显式插入合同;Mapper XML 不提供任何更新版本正文的路径。
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/domain/entity/AiBusinessProcessVersion.java — 新增版本实体并显式声明 @TableLogic(value="0", delval="id")。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/mapper/BusinessProcessVersionMapper.java — 新增版本插入、列表和固定版本读取签名。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/mapper/BusinessProcessVersionMapper.xml — 新增显式租户/逻辑删除过滤和版本唯一查询。java
AiBusinessProcessVersion selectPublishedVersion(Long tenantId, Long processId, Integer versionNo);
List<AiBusinessProcessVersion> selectPublishedByApplication(Long tenantId, Long applicationId,
Collection<Long> processIds);
int insertImmutable(AiBusinessProcessVersion version);
processId + versionNo 重复发布幂等命中相同 hash,不同 hash 冲突;任何 update 版本正文的路径均不存在。状态:completed(2026-08-03)。已实现 run/node 实体、幂等读取、租户内恢复扫描、流程与节点强 CAS、失败重试计数和不可复活节点尝试。
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/domain/entity/AiBusinessProcessRun.java — 新增流程运行实体。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/domain/entity/AiBusinessProcessNodeRun.java — 新增节点运行实体。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/mapper/BusinessProcessRunMapper.java — 新增运行创建、锁定、状态 CAS、恢复和分页签名。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/mapper/BusinessProcessRunMapper.xml — 实现运行查询、审批关联、幂等命中和恢复扫描。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/mapper/BusinessProcessNodeRunMapper.java — 新增节点尝试和结果更新签名;仅 insert/selectById/updateById 等 MyBatis-Plus 内置单表方法可直接复用,CAS 和全部自定义查询必须写在 Mapper XML。java
AiBusinessProcessRun selectByIdempotencyKey(Long tenantId, Long processVersionId, String idempotencyKey);
int compareAndSetStatus(Long tenantId, Long runId, String expectedStatus,
String nextStatus, String currentNodeId, LocalDateTime nextRetryTime);
AiBusinessProcessRun selectWaitingByProcessInstanceId(Long tenantId, String processInstanceId);
List<AiBusinessProcessRun> selectRecoverableRuns(LocalDateTime before, int limit);
int insertAttempt(AiBusinessProcessNodeRun nodeRun);
int completeAttempt(Long tenantId, Long id, String expectedStatus, String nextStatus,
String outputSummary, String errorCode, String errorSummary);
状态:completed(2026-08-03)。已实现运行分页、节点时间线/最后尝试/可重试/审批关联查询和安全摘要 VO;对外 ID 全部为字符串。
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/mapper/BusinessProcessNodeRunMapper.xml — 新增时间线、最后尝试、可重试和关联 ID 查询。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/businessprocess/BusinessProcessRunQueryDTO.java — 新增应用、流程、对象、记录、状态和时间过滤。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/businessprocess/BusinessProcessRunVO.java — 新增运行列表响应,ID 均序列化为字符串。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/businessprocess/BusinessProcessRunDetailVO.java — 新增运行详情和节点时间线响应。java
List<AiBusinessProcessNodeRun> selectTimeline(Long tenantId, Long runId);
AiBusinessProcessNodeRun selectLatestAttempt(Long tenantId, Long runId, String nodeId);
Page<BusinessProcessRunVO> selectRunPage(Long tenantId, BusinessProcessRunQueryDTO query, Page<?> page);
状态:completed(2026-08-03)。已实现强类型 1.0 协议、稳定规范化/hash、图与依赖失败关闭校验、敏感配置拦截,并用三份冻结样例和 10 项校验器测试验证。
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/businessprocess/schema/BusinessProcessSchema.java — 定义根协议、subject、policies 和 dependencies。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/businessprocess/schema/BusinessProcessNode.java — 定义节点 ID、类型、名称、配置和标准出口。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/businessprocess/schema/BusinessProcessEdge.java — 定义 source/target/sourcePort/condition/default。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/businessprocess/validation/BusinessProcessSchemaValidator.java — 实现结构、DAG、可达性、依赖和权限校验。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/businessprocess/BusinessProcessValidationVO.java — 返回 error/warning、nodeId、fieldPath 和修复建议。java
public BusinessProcessValidationVO validate(BusinessProcessSchema schema,
BusinessProcessValidationContext context);
public BusinessProcessSchema normalize(String schemaJson);
public String canonicalJson(BusinessProcessSchema schema);
public String schemaHash(BusinessProcessSchema schema);
状态:completed(2026-08-03)。已实现应用级 CRUD、草稿 hash CAS、同应用复制、校验上下文、启停与删除引用门禁;定向测试 31/31、Mapper XML、权限迁移静态检查和 Admin 47 模块聚合编译通过。
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/businessprocess/BusinessProcessDTO.java — 新增创建/修改 DTO。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/businessprocess/BusinessProcessSchemaDTO.java — 新增草稿协议和客户端基线 hash。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/businessprocess/BusinessProcessVO.java — 新增列表和设计详情响应。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessService.java — 新增控制面和乐观并发服务。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/BusinessProcessController.java — 新增 /ai/business/process 管理接口和权限注解。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/businessprocess/validation/BusinessProcessValidationContextResolver.java — 从应用对象、发布快照、权限目录和已发布 Flowable 模型解析失败关闭的校验上下文。forge-server/db/migration/V1.0.85__add_business_process_start_permission.sql — 注册默认手动开始权限并仅继承既有应用运行权限角色。java
public BusinessProcessVO create(BusinessProcessDTO dto);
public BusinessProcessVO copy(Long sourceProcessId, BusinessProcessDTO dto);
public BusinessProcessVO getDesigner(Long processId);
public BusinessProcessVO saveSchema(Long processId, BusinessProcessSchemaDTO dto);
public BusinessProcessValidationVO validate(Long processId);
public void updateStatus(Long processId, Integer status);
public void logicalDelete(Long processId);
processCode,只复制草稿协议并重建节点 ID,不复制发布版本、运行状态或旧来源标识;删除有运行实例或有效发布引用的流程被阻断;草稿 hash 冲突返回明确版本冲突。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessOrchestrator.java — 新增 start/execute/resume/retry/cancel 主状态机。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessRunService.java — 新增运行创建、CAS、上下文清洗和时间线服务。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessNodeExecutor.java — 定义节点执行器 SPI。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessExecutionContext.java — 定义不可变运行上下文和可信身份。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/businessprocess/BusinessProcessNodeResult.java — 定义 COMPLETED/WAITING/FAILED、输出端口和关联 ID。interface BusinessProcessNodeExecutor {
String supportType();
BusinessProcessNodeResult execute(BusinessProcessExecutionContext context,
BusinessProcessNode node);
}
- **验收**:先落 run 再异步执行;服务中断后可以从最后检查点恢复;节点调度严格服从已发布 DAG 和 CAS;未知节点失败关闭。
## Task 8B:实现条件、结束与子流程节点
- **目标**:补齐不依赖外部动作引擎的内置节点,并冻结分支、终态和子流程调用边界。
- **涉及文件**:
- `forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessConditionEvaluator.java` — 统一执行开始过滤和条件节点使用的结构化 AND/OR、字段及上下文规则。
- `forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/ConditionProcessNodeExecutor.java` — 执行结构化条件并选择唯一命中出口或默认出口。
- `forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/EndProcessNodeExecutor.java` — 只归并流程终态,不执行隐藏字段更新或外部副作用。
- `forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/SubProcessNodeExecutor.java` — 启动同应用固定版本子流程,校验静态递归、运行深度、租户和可信身份继承。
- **关键签名**:
```java
public BusinessProcessConditionResult evaluate(BusinessProcessExecutionContext context,
BusinessProcessCondition condition);
public BusinessProcessNodeResult execute(BusinessProcessExecutionContext context,
BusinessProcessNode node);
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessActionStepRuntime.java — 新增步骤执行器注册、单步/多步执行和结果归一化。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessActionExecutionService.java — 改为委托 BusinessActionStepRuntime,保持现有 API 合同。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/ActionProcessNodeExecutor.java — 将流程动作节点转换为受控 BusinessActionStepDTO 并执行。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessTriggerExecutor.java — 旧触发器进入兼容适配,不再维护第二套动作执行细节。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessActionStepExecutor.java — 补充幂等、可重试和敏感摘要合同说明,不改变现有实现类型。java
public BusinessActionStepResultVO executeStep(BusinessActionExecutionContext context,
BusinessActionStepDTO step,
String idempotencyKey);
public List<BusinessActionStepResultVO> executeSteps(BusinessActionExecutionContext context,
List<BusinessActionStepDTO> steps,
String idempotencyPrefix);
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/GovernedCapabilityActionStepExecutor.java — 仅按已发布能力/企业集成连接引用调用受治理外部能力,不接受自由 URL 或客户端凭据。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/SendMessageActionStepExecutor.java — 补齐消息模板、通道、接收人规则和稳定消息幂等键,不在流程上下文保存通道 Secret。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/test/java/com/mdframe/forge/plugin/generator/service/businessapp/GovernedActionStepExecutorTest.java — 覆盖消息幂等、能力白名单、失效引用、自由 URL 和敏感配置拒绝。java
public String supportType();
public BusinessActionStepResultVO execute(BusinessActionExecutionContext context,
BusinessActionStepDTO step,
String idempotencyKey);
ai_business_trigger。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessTriggerDispatcher.java — 按应用发布快照匹配开始节点并同步创建 run。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessEvent.java — 增加稳定 eventId、FORM_SUBMITTED/ACTION_EXECUTED 和可信身份摘要。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessEventPublisher.java — 事务完成后优先分发新流程,旧触发器保留兼容。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessTriggerSchedulerService.java — 保留 Job/锁/候选记录扫描,配置来源切换为已发布定时开始节点。java
public List<BusinessProcessRunVO> dispatch(BusinessEvent event);
public boolean matches(BusinessProcessSchema schema, BusinessProcessNode startNode,
BusinessEvent event);
public String scanScheduledProcesses();
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/ApprovalProcessNodeExecutor.java — 启动固定版本审批并返回 WAITING。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessApprovalResumeListener.java — 监听通过/驳回/取消结果并恢复唯一节点。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/event/BusinessProcessFlowResultEvent.java — 定义 tenant、businessKey、processInstanceId、result 和安全变量摘要。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessFlowService.java — 支持显式审批节点上下文并在事务提交后发布恢复事件。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessFlowVariableResolver.java — 校验业务流程版本固定的字段/变量映射。java
public BusinessProcessNodeResult execute(BusinessProcessExecutionContext context,
BusinessProcessNode approvalNode);
public void onFlowResult(BusinessProcessFlowResultEvent event);
public BusinessFlowRuntimeVO startFromBusinessProcess(BusinessProcessApprovalStartCommand command);
processInstanceId + businessKey 唯一恢复;重复/乱序/跨租户回调不重复执行后续动作。状态:completed(2026-08-04)。应用协调发布已新增可恢复 PROCESSES 步骤,默认选择应用内全部启用流程,并以候选快照中的草稿 hash 固定恢复边界;候选缺少所选流程摘要时失败关闭,不回退当前草稿。每个应用版本生成或幂等复用不可变流程版本,依赖快照固定业务对象设计版本及 Flowable model/正版本号/processDefinitionId/deploymentId。应用快照已增加 processes/publishedProcessVersions/runtimeActions 白名单字段,回滚只恢复流程发布投影、不修改历史运行实例。runtimeActions 本任务仅冻结稳定空字段,实际 START_PROCESS 编译仍由 Task 13 交付。
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/constant/BusinessApplicationPublishStep.java — 在 SNAPSHOT 后增加 PROCESSES。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessPublishService.java — 校验草稿、生成版本和固定依赖。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessApplicationSnapshotService.java — 增加 process/version/runtimeActions 白名单快照。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessApplicationPublishService.java — 执行和恢复 PROCESSES 步骤。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessApplicationReadinessService.java — 增加流程图、对象、审批版本、按钮权限和并发冲突检查。java
public BusinessProcessPublishResult publishForApplication(Long applicationId,
Integer applicationVersion,
Collection<Long> processIds);
public List<BusinessProcessSnapshot> resolvePublishedSnapshots(Long applicationId,
Collection<Long> processIds);
START_PROCESS 列表/详情/表单动作,前端只提交流程编码和记录 ID。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessRuntimeActionCompiler.java — 编译位置、权限、可见条件、确认文案和稳定动作 key。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessApplicationRuntimeService.java — 从发布快照返回流程动作投影。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/BusinessProcessRuntimeController.java — 新增手动 start、run 详情、retry/cancel 接口。forge-admin-ui/src/components/ai-form/AiCrudPage.vue — 支持 START_PROCESS 加载态、确认、成功刷新和错误展示。forge-admin-ui/src/views/ai/crud-page.vue — 归一化运行时流程动作并避免与内置新增/编辑按钮冲突。java
public List<Map<String, Object>> compileActions(BusinessProcessSnapshot snapshot);
public RespInfo<BusinessProcessRunVO> start(String applicationCode, String processCode,
BusinessProcessManualStartDTO dto);
状态:completed(2026-08-03)。已冻结前端 businessProcessJson 1.0 创建/归一化/稳定 hash 合同,新增八类业务节点注册表、DAG 图操作与历史状态,并以适配层复用现有画布、连线和布局;定向与既有回归共 48 项、ESLint 和生产构建通过。
forge-admin-ui/src/components/business-process-designer/business-process-schema.js — 定义创建、归一化、克隆、hash 输入和协议迁移。forge-admin-ui/src/components/business-process-designer/business-process-node-types.js — 定义开始、条件、动作、审批、子流程和结束节点注册表。forge-admin-ui/src/components/business-process-designer/useBusinessProcessDesigner.js — 提供节点/边 CRUD、DAG 分支、撤销重做和选择状态。forge-admin-ui/src/components/business-process-designer/BusinessProcessCanvas.vue — 复用或包装 FlowCanvas、EdgeLayer 和布局能力。forge-admin-ui/src/components/flow-designer/canvas/FlowCanvas.vue — 已确认现有 edges/nodes/toolbar 插槽足够,本任务无需修改,保持 DingFlowDesigner 默认行为和测试。javascript
export function createBusinessProcessSchema({ processCode, objectRef, startType })
export function normalizeBusinessProcessSchema(input)
export function validateBusinessProcessGraph(schema, context)
export function useBusinessProcessDesigner(initialSchema)
convertJsonToBpmn 消费;现有 DingFlowDesigner roundtrip 测试通过;多个开始节点、环和悬空边在保存前提示。状态:completed(2026-08-03)。已完成克制的业务编排工作台、独立节点渲染器、结构化触发/条件/动作/审批/子流程/结束配置、依赖自动同步、草稿自动/显式保存状态、hash 冲突提示、问题定位与离开保护;审批配置复用真实 flow/design.vue,不在业务画布复制审批内部能力。
forge-admin-ui/src/components/business-process-designer/BusinessProcessDesigner.vue — 组合工具栏、画布、节点面板、问题列表和保存状态。forge-admin-ui/src/components/business-process-designer/BusinessProcessNodeRenderer.vue — 按节点注册表渲染稳定卡片和出口。forge-admin-ui/src/components/business-process-designer/BusinessProcessNodeConfigDrawer.vue — 路由到对应结构化配置组件。forge-admin-ui/src/components/business-process-designer/StartNodeConfig.vue — 配置事件、定时、手动位置、条件和身份提示。forge-admin-ui/src/components/business-process-designer/ActionAndApprovalNodeConfig.vue — 配置动作、字段映射、消息/能力引用、审批模型和结果出口,并内嵌 flow/design.vue。javascript
defineEmits(['save', 'validate', 'open-flow-designer', 'dirty-change', 'locate-issue'])
状态:completed(2026-08-03)。已用应用级流程列表替换旧三入口聚合,接通创建、复制、设计、启停、逻辑删除、筛选状态回传和应用发布入口;新增全屏设计路由,完成服务端 hash CAS、保存后校验、409 冲突、目录刷新和离开确认。运行记录与迁移服务尚未交付,当前以明确预留态展示且未虚构接口。
forge-admin-ui/src/views/app-center/application-workspace/ApplicationProcessPanel.vue — 新增流程列表、创建、复制、设计、启停、运行和迁移入口。forge-admin-ui/src/views/app-center/application.[applicationCode].vue — 将 automation 组件切换为 ApplicationProcessPanel 并传入应用发布上下文。forge-admin-ui/src/views/app-center/application-workspace/ApplicationWorkspaceNav.vue — 文案统一为“业务流程 / 触发、审批与自动化”。forge-admin-ui/src/views/app-center/business-process.[processId].vue — 新增全屏业务流程设计路由页面。forge-admin-ui/src/api/business-process.js — 新增流程、Schema、校验、运行和迁移 API 封装。javascript
function createProcess()
function openDesigner(processId)
function openRunDetail(runId)
function previewMigration()
function requestApplicationPublish()
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessMigrationService.java — 实现 preview/apply、来源合并、幂等和问题分类。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/businessprocess/BusinessProcessMigrationDTO.java — 定义 applicationId、sourceIds、previewHash 和执行策略。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/businessprocess/BusinessProcessMigrationPreviewVO.java — 返回生成图、旧来源、警告和阻塞项。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/BusinessProcessMigrationController.java — 新增 preview/apply/issues 权限接口。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/mapper/BusinessBindingMapper.xml — 补充按应用/对象批量读取旧 FLOW/TRIGGER/ACTION 来源的 XML 查询,不修改旧记录。java
public BusinessProcessMigrationPreviewVO preview(BusinessProcessMigrationDTO dto);
public BusinessProcessMigrationResultVO apply(BusinessProcessMigrationDTO dto);
public List<BusinessProcessMigrationIssueVO> listIssues(Long applicationId);
forge-admin-ui/src/views/app-center/object-designer.[objectCode].vue — 隐藏旧 flow-app/triggers/actions 普通入口,保留迁移问题和高级兼容诊断。forge-admin-ui/src/views/app-center/application-workspace/ApplicationAutomationPanel.vue — 删除工作台引用后保留兼容组件或标记待后续删除,不再作为主入口。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/BusinessTriggerController.java — 迁移完成应用的写接口返回只读迁移提示,查询/日志兼容保留。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/BusinessFlowController.java — 旧 binding 写接口增加迁移状态保护,任务表单和运行接口不变。forge-server/db/seed/demo/application_business_process_purchase_sample.sql — 新增或调整演示 seed,以应用流程协议引用现有采购 BPMN,不覆盖已编辑 BPMN XML。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/test/java/com/mdframe/forge/plugin/generator/businessprocess/BusinessProcessSchemaValidatorTest.java — 图、字段、依赖、循环和敏感配置。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/test/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessOrchestratorTest.java — 状态机、幂等、恢复、分支和重试。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/test/java/com/mdframe/forge/plugin/generator/service/businessprocess/ApprovalProcessNodeExecutorTest.java — 启动、等待、回调、重复和乱序。forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/test/java/com/mdframe/forge/plugin/generator/service/businessprocess/BusinessProcessMigrationServiceTest.java — 预览、转换、问题和重复执行。forge-admin-ui/src/components/business-process-designer/__tests__/business-process-designer.spec.js — 协议、画布、节点配置和审批设计器入口。source ~/.nvm/nvm.sh && nvm use v20.19.0 cd forge-admin-ui pnpm exec vitest run src/components/business-process-designer/tests/business-process-designer.spec.js pnpm exec eslint src/components/business-process-designer src/views/app-center src/api/business-process.js pnpm build ```
execution-log.md;未执行项不得表述为通过。DingFlowDesigner.flowJson 与 BPMN 双向转换未被业务协议污染,现有审批设计器回归通过。spec.md/tasks.md/test-spec.md/execution-log.md 与实际实现和验证结果一致。