Salesforce Tooling API - 停用触发器

时间:2015-03-24 19:11:36

标签: salesforce tooling

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

这是算法的基础,

  1. 使用唯一名称
  2. 创建MetadataContainer
  3. 保存MetadataContainer
  4. 创建ApexTriggerMember设置Body,MetadataContainerId,ContentEntityId和Metadata [apiVersion = 33.0 packageVersions = [] status =" Inactive"网址=零>]
  5. 修改元数据["状态"] ="无效"
  6. 保存ApexTrigger会员
  7. 创建/保存ContainerAsyncRequest
  8. 监控容器直至完成。
  9. 如果适当,显示错误
  10. 在沙盒中,我已经确认在重新查询Apex后输入代码hereTriggerMember表示只读字段" Content"看起来合适。我还确认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"
      }
    
    }
    

1 个答案:

答案 0 :(得分:0)

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

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

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