在APEX中动态创建触发器

时间:2013-08-22 06:53:35

标签: dynamic triggers apex-code

我想在我的apex类中动态创建触发器。  谁能在这帮助我..  请指导我这个。  我对视觉力量页面更新鲜

1 个答案:

答案 0 :(得分:4)

您无法在Apex中动态创建触发器。因为Apex代码无法访问Trigger对象所以,您无法以编程方式创建触发器。无论如何,我们永远不需要动态创建触发器。看这里:http://boards.developerforce.com/t5/Apex-Code-Development/Create-Trigger-dynamically/td-p/667868

示例apex代码,使用REST标注通过Tooling API端点创建触发器:

        String json = '{ "Name" : "COTrigger", \'+
                             '"TableEnumOrId" : "Custom_Object__c",'+
                             '"Body" : "trigger COTrigger on Custom_Object__c (after insert) { // Do Something }" }'; // JSON format to create trigger

            Httprequest req = new HttpRequest();
            req.setEndpoint('https://[salesforce instance].salesforce.com/services/data/v27.0/sobjects/ApexTrigger');
            req.setMethod('POST');
            req.setHeader('Content-Type':'application/json');
            req.setHeader('Authorization':'Bearer: '+sessionId);
            req.setBody(json);

        Http httpReq = new HttpReq();
        HttpResponse res = httpReq.send(req); 
        System.debug(res.getBody());

纠正一些语法错误,Tooling API基本上是一组对象,可通过它访问组件。尝试这段代码,实际上我使用这段代码来创建Apex类而非Apex Trigger,在这里我只是改变了身体和放大器。端点使其适用于触发器。如果它不起作用,则意味着仍然不支持从Tooling API创建Trigger。

阅读本指南http://www.salesforce.com/us/developer/docs/api_toolingpre/api_tooling.pdf它包含所有关于工具API的内容,并且不需要任何复杂的配置来执行此操作。您只需要在端点URL上 REST callout 来创建触发器。端点网址在指南中提供,我已经给出了链接。