关闭salesforce潜在客户触发器中的潜在客户分配规则

时间:2013-05-21 10:48:38

标签: triggers salesforce apex-code force.com

我在使用Salesforce引导触发器时遇到问题,在插入后触发。默认情况下,潜在客户分配规则必须启用,但我需要绕过符合特定条件的潜在客户规则。

我在salesforce文档中看到,您可以在插入/更新潜在客户时设置分配规则:http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_database_dmloptions.htm#assignmentRuleHeader_section

但是,我无法关闭这些潜在客户分配规则:

...
// if criteria is met to skip assignment rules...
Lead tempobj1 = new Lead(id=objLead.id,OwnerId=ConDomainNameAndOwnerIdMap.get(Emaildomain),isOwnerChanged__c = true);

Database.DMLOptions dmo = new Database.DMLOptions();
dmo.assignmentRuleHeader.useDefaultRule= false; //it's still running assignment rules!
tempobj1.setOptions(dmo);

...
...

update tempobj1;

我还尝试创建一个没有实际规则的新的潜在客户分配规则集,并设置DML选项以使用它 - 但默认的分配规则仍然被触发! dmo.assignmentRuleHeader.assignmentRuleID = '01Qe00000000HAq';

执行顺序表明记录保存到数据库(未提交)>执行触发后>分配规则已执行。因此触发器在分配规则之前运行。

我在插入之前尝试过代码,但是得到错误'DML statment无法对trigger.new或trigger.old进行操作:Trigger.AssignOwnerToNewLead:第133行,第1列'

提前致谢, 萨姆

2 个答案:

答案 0 :(得分:2)

在触发前使用此

for (Lead objLead : Trigger.new) {
        Database.DMLOptions dmo = new Database.DMLOptions();
        dmo.assignmentRuleHeader.useDefaultRule = false;
        objLead.OwnerID = objLead.Eloqua_ID__c;
        objLead.setOptions(dmo);
    }
}

答案 1 :(得分:0)

  • 创建一个没有分配的新销售线索分配规则,将其命名为 AssignmentSkip
  • 在顶点中以编程方式在规则标题选项上设置该ID