Salesforce: Как да получа поток, за да разбера, че трябва да изтегли информация от акаунта, посочен в моя apex планировчик?

Аз съм нов в apex и създадох клас по график на apex, който работи всеки ден. Ако даден акаунт има дата за преглед на акаунта за комисионни след две седмици (14 дни), графикът ще изпрати имейл до нашия отдел продажби. Имейлът съдържа връзка към поток. Потокът стартира процес за изчисляване на новата комисионна. За да направи това, потокът трябва да разбере как да изтегли информация от акаунта, който е задействал изпращането на имейла, акаунта, който има дата за преглед на акаунта след 2 седмици.

В момента имейлът се изпраща добре с връзката към потока. Връзката към потока работи, но след като стигнете до потока, потокът не знае/разбира от кой акаунт трябва да изтегля информация. Не съм сигурен дали трябва да променя кода си в моя планировчик и/или кода в моя поток.

Ето как потокът осъществява достъп до информация:

Преди първия екран се извършва търсене на запис в потока. Той изтегля информацията от ИД на акаунта и променлива vaAccountID. Мисля, че променливата {!vaAccountID} се попълва с AccountID, който е свързан с комисионната.

Когато стартирам своя планировчик, го карам да определи дали има акаунт с дата за преглед на акаунт въз основа на идентификатора на акаунта. Той изпраща имейл шаблона с връзката към потока до отдела по продажбите.

Планировчикът изпраща имейла и е „доволен“. Критериите, от които се нуждае, за да изпълни метода, са завършени (има акаунт с дата за преглед на акаунта след 14 дни и той изпраща имейла).

global class AccountReviewSchedulerEmailAcc implements Schedulable { 

    global void execute (SchedulableContext ctx) 
    { 
        sendEmail(); 
    }

    public void sendEmail()
    {

        for(Account acc : [SELECT Id FROM Account WHERE Next_Account_Review_Date__c = : system.Today().addDays(14)])
        {
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); 
            mail.setTemplateId('00XF0000000LfE0'); 
            mail.setTargetObjectId('005J0000000JWYx'); 
            mail.setSaveAsActivity(false);
            Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail }); 
        }
    }

}

Потокът обаче не е „щастлив“. Не знае от кой акаунт да изтегли информация.

В първия екран на потока се предполага, че показва повтарящите се приходи и връзка към страницата на акаунта. Полето за повтарящи се приходи е празно. Връзката към страницата на акаунта не работи.

Ако се опитам да премина през първия екран на потока, получавам общ екран за грешка от Salesforce и подробно съобщение за грешка от Salesforce. Казва:

Encountered unhandled fault when running process Organic_Commission_Determination_Flow/301J000000001Tx exception by user/organization: 00DJ00000000YTl/{4} Source organization: 00DA0000000KZI8 (null)
interaction.dal.exception.DALExecutionFault: ; nested exception is: 
    common.exception.ApiQueryException: 
Account.Annual_RR__c FROM Account WHERE (Account.Id = '{!Commission__c.AccountId__c}')
                                         ^ ERROR at Row:1:Column:89 invalid ID field: {!Commission__c.AccountId__c} (There was a problem executing your command.) > RETRIEVE

caused by element : Data lookup.Lookup_Account

caused by: interaction.dal.exception.DALExecutionFault: ; nested exception is: 
    common.exception.ApiQueryException: 
Account.Annual_RR__c FROM Account WHERE (Account.Id = '{!Commission__c.AccountId__c}')
                                         ^ ERROR at Row:1:Column:89 invalid ID field: {!Commission__c.AccountId__c} (There was a problem executing your command.) > RETRIEVE

Salesforce Error ID: 580775287-15539 (1733087783)

Какво означава това съобщение за грешка? Как мога да получа повече информация за грешките на Salesforce и как да отстраня проблема по този въпрос? Разбирам, че този процес е много сложен, но е свързан с един основен въпрос: Как да накарам потока да разбере, че трябва да изтегли информация от акаунта, който е имал датата на преглед след 14 дни в моя апекс планировчик?


person user1529039    schedule 25.07.2012    source източник


Отговори (1)


Обърнете внимание на оператора SOQL, който се изпълнява в съобщението за грешка:

Account.Annual_RR__c FROM Account WHERE (Account.Id = '{!Commission__c.AccountId__c}')

Това ми казва, че връзката във вашия имейл шаблон предава литералната стойност "{!Commission__c.AccountId__c}" във вашия SOQL, вместо да обвързва стойността на това поле при изпращане на имейла. Така че вместо да подадете идентификатор на акаунт в URL адреса, вие предавате този низ, който със сигурност не е това, което потокът очаква.

Това може да се случи, когато API името на полето е въведено неправилно в имейл шаблона или ако записът, свързан с шаблона, не е от тип Commission__c, както очаквахте. Така че това може да е едно от двете неща: или записът, който изпращате, не е от правилния тип обект за имейл шаблон 00XF0000000LfE0, или няма поле AccountId__c в обекта Commission__c.

person JCD    schedule 25.07.2012