Salesforce 工具 API - 停用触发器

Jus*_*son 5 salesforce tooling

我正在尝试使用工具 API 停用触发器。我已经成功地在一个开发者 ORG 中。但是无法在真正的开发人员组织中做到这一点。这是 Salesforce 工具 API 错误吗?

这是算法的基础,

  1. 创建一个具有唯一名称的 MetadataContainer
  2. 保存元数据容器
  3. 创建一个 ApexTriggerMember,设置 Body、MetadataContainerId、ContentEntityId 和 Metadata[apiVersion=33.0 packageVersions=[] status="Inactive" urls=nil>]
  4. 修改元数据["status"]="Inactive"
  5. 保存 ApexTriggerMember
  6. 创建/保存 ContainerAsyncRequest
  7. 监视容器直到完成。
  8. 适当时显示错误

在沙箱中,我在重新查询 Apex 输入代码 hereTriggerMember 后确认只读字段“内容”看起来合适。我还确认 MetadataContainerId 现在指向状态为“已完成”的 ContainerAsyncRequest

这是我的结果,它似乎是成功的,但 ApexTrigger 永远不会被停用 ContentEntityId = 01q ...............[我想要停用的 ApexTrigger]

Content="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
    <ApexTrigger xmlns=\"urn:metadata.tooling.soap.sforce.com\">
        <apiVersion>33.0</apiVersion>
        <status>Inactive</status>
    </ApexTrigger>" 

Metadata={apiVersion=33.0 packageVersions=nil status="Inactive" urls=nil> attributes=        {type="ApexTriggerMember"
     url="/services/data/v33.0/tooling/sobjects/ ApexTriggerMember/401L0000000DCI8IAO"
  }

}
Run Code Online (Sandbox Code Playgroud)

小智 0

我认为您需要将非活动触发器从沙箱部署到生产环境。您不能简单地停用生产中的触发器。即使在 UI 中也是如此。

还有其他选项,例如使用自定义设置或元数据类型来存储运行/不运行值。您可以在触发器中查询该值来决定是否运行它。

https://developer.salesforce.com/forums/?id=906F0000000MJM9IAO