如何通过Workbench API或Apex停用/删除Flow流程
Salesforce Flow 停用、删除实操方案(Apex + Workbench API)
网上可查的大部分方案存在API版本过时、操作对象错误的问题,以下是v58+版本生产环境验证可用的实现方式:
通用前置要求
执行操作的用户必须开启Modify Metadata Through Metadata API Functions权限,无该权限所有操作都会返回权限不足报错。
注意:已激活的Flow版本无法直接删除,必须先执行停用操作再删除。
Apex实现方式
不要尝试直接DML操作FlowDefinition、FlowVersionView系统视图,这两个对象从v44版本开始只读,DML操作会直接抛错,所有元数据操作必须通过官方Metadata API类实现。
停用指定Flow
// 替换为目标Flow的API名称 String targetFlowApiName = 'Your_Flow_API_Name'; Metadata.FlowDefinition flowDef = new Metadata.FlowDefinition(); flowDef.fullName = targetFlowApiName; // 注意:不要将activeVersionNumber设为0,设为null即为停用状态 flowDef.activeVersionNumber = null; Metadata.DeployContainer container = new Metadata.DeployContainer(); container.addMetadata(flowDef); // 执行部署,可通过回调获取异步部署结果 Metadata.Operations.enqueueDeployment(container, new Metadata.DeployOptions());
删除指定Flow版本
如果需要删除整个Flow,先查询该Flow下所有版本号,逐个执行删除即可。
// 格式为<FlowAPI名称>-<版本号>,例:Test_Flow-2 代表删除Test_Flow的第2个版本 String targetFlowVersionFullName = 'Your_Flow_API_Name-2'; Metadata.DeleteResult delRes = Metadata.Operations.delete( Metadata.Flow.class, new List<String>{targetFlowVersionFullName} ); // 可通过delRes.success判断是否成功,delRes.errors获取报错详情 System.debug(delRes);
Workbench API实现方式
不要用Workbench的REST数据接口(/services/data/vXX.0/sobjects/)操作Flow,数据接口不支持元数据修改,必须使用元数据接口操作。
停用指定Flow
- 登录Workbench后,右上角API版本选择v58及以上
- 依次进入
metadata->Update菜单 - 元数据类型选择
FlowDefinition,提交以下XML内容(替换fullName为目标Flow的API名):
<?xml version="1.0" encoding="UTF-8"?> <FlowDefinition xmlns="http://soap.sforce.com/2006/04/metadata"> <fullName>Your_Flow_API_Name</fullName> <activeVersionNumber xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> </FlowDefinition>
- 点击提交,返回success=true即为停用成功。
删除指定Flow版本
- 同样选择v58+API版本,依次进入
metadata->Delete菜单 - 元数据类型选择
Flow,对象名称填写目标版本的全名(格式同Apex部分:<FlowAPI名>-<版本号>) - 点击提交即可完成删除。
常见报错排查
- 报参数无效:检查activeVersionNumber是否设为0、XML是否缺少xsi:nil属性、API版本是否低于v56
- 报权限不足:检查执行用户是否开启元数据修改权限、是否被Flow的所属流程权限限制
- 报依赖存在:检查该Flow是否被其他流程、验证规则、按钮引用,解除依赖后再操作
内容的提问来源于stack exchange,提问作者jose
相关产品推荐
相关产品推荐

