在顶点触发器中调用我的apex方法获取错误

时间:2017-12-21 14:24:36

标签: apex-code apex-trigger

    public static void insertInboundJive(Map<Id, String> mapCases){
    try{

        system.debug('Aditya');
        Map<Id, String> mapCases1 = new Map<Id, String>();
        Map<Id, Integer> mapIncrements = new Map<Id, Integer>();
        //List<ICS_Case_Interaction__c> lstCaseInteraction;
        if(mapCases != null && mapCases.size() > 0) {
        List<ICS_Case_Interaction__c> lstCaseInteraction  = [ SELECT Id,case__r.origin FROM ICS_Case_Interaction__c Where case__r.Id =:mapCases.keySet()];
            for(ICS_Case_Interaction__c caseInteracts :lstCaseInteraction ){
                if(caseInteracts.case__r.Id != null && caseInteracts.case__r.Status == 'New Customer Message'){
                    system.debug('**AdityaDebug**' +caseInteracts.case__r.Id);
                    system.debug('**AdityaDebug**' +caseInteracts.case__r.Status);
                    mapcases1.put(caseInteracts.case__r.Id , TYPE_JIVE_INBOUND);
                    Integer intIncrement = mapIncrements.get(caseInteracts.case__r.Id);
                    system.debug('Increment' +intIncrement);
                    if(intIncrement != null){
                        intIncrement++;
                        system.debug('Increment++' +intIncrement);
                    }
                    else {
                        intIncrement = 1;
                    }
                     mapIncrements.put(caseInteracts.case__r.Id, intIncrement);
                }
            }
            if(mapCases.size() > 0) {
                insertByCaseAsync(mapCases, mapIncrements);
            }
        }
    }
    catch(Exception ex){
        Core_Log_Entry.logEntryWithException('Case Interaction Metrics', 'CaseInteraction','insertInboundEmail', 'Error', null, null, ex);
    }

}

这是我在课堂上的方法。我试图在触发器中调用apex方法。但是它抛出了错误。请你帮助我并尝试达到最好。

我得到的错误是 第188行,第106行。方法不存在或签名不正确:来自ICS_Case_Interactions_Trigger_Handler类型的void insertInboundJive(List)

if(trigger.isUpdate) {

if(Label.ICS_Case_Interaction_Metrics.equals('1')){ICS_Case_Interactions_Trigger_Handler.insertInboundJive(trigger.new);} }

1 个答案:

答案 0 :(得分:1)

您正在尝试传递错误的参数。在你定义的方法中,你需要传递一个Map,其中值是String,但是你传递的是Trigger.new,这是一个对象列表。我的方法是处理触发器中的映射,然后操纵控制器中的数据:

在这种情况下,您可以执行以下操作来传递记录并在控制器中获取所需的数据字符串..或者在触发器中执行此操作,这样您就不会更改控制器。

Map<Id,Contact> map = new Map<Id,ICS_Case_Interaction__c>();  // new map

for(ICS_Case_Interaction__c con :trigger.new){  
    map.put(con.Id, con);  // enter the records you need for the method
}

if(trigger.isUpdate) {
        if(Label.ICS_Case_Interaction_Metrics.equals('1')) {
    ICS_Case_Interactions_Trigger_Handler.insertInboundJive(map);
        } 
    }

并且在控制器中你应该

public static void insertInboundJive(Map<Id, ICS_Case_Interaction__c> mapCases){
}