簡體   English   中英

Salesforce:我如何在apex調度程序中引用流程以意識到需要從帳戶中提取信息?

[英]Salesforce: How do I get a flow to realize that it needs to pull information from the account is referenced in my apex scheduler?

我是apex的新手,並建立了每天運行的apex時間表類。 如果某個帳戶的佣金審核日期為兩周(14天),則調度程序將向我們的銷售部門發送電子郵件。 該電子郵件包含指向流程的鏈接。 該流程開始計算新佣金的過程。 為此,流程需要了解從觸發電子郵件發送的帳戶中提取信息,該帳戶的帳戶審核日期為2周。

目前,電子郵件發送良好,並帶有指向流程的鏈接。 流的鏈接有效,但是一旦進入流,流就不知道/不知道應從哪個帳戶中獲取信息。 我不確定是否需要更改調度程序中的代碼和/或流程中的代碼。

這是流訪問信息的方式:

在第一個屏幕之前,將進行流中的記錄查找。 它從帳戶ID和變量vaAccountID中提取信息。 我認為變量{!vaAccountID}用鏈接到佣金的AccountID填充。

運行調度程序時,我可以根據帳戶ID來確定是否存在一個具有帳戶審核日期的帳戶。 它將帶有流鏈接的電子郵件模板發送到銷售部門。

調度程序發送電子郵件並且“很高興”。 它執行該方法所需的條件已經完成(有一個帳戶的帳戶審核日期為現在的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錯誤的更多信息以及如何解決此問題? 我知道此過程非常復雜,但它涉及到一個基本問題:我如何讓流程認識到它需要從Apex Scheduler中有14天的審核日期的帳戶中提取信息?

查看錯誤消息中正在執行的SOQL語句:

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

這是告訴我,您的電子郵件模板中的鏈接正在將字面值“ {!Commission__c.AccountId__c}”傳遞到您的SOQL中,而不是在發送電子郵件時綁定該字段的值。 因此,您傳遞的不是字符串,而是傳遞的字符串,而不是傳遞URL的帳戶ID。

當在電子郵件模板中錯誤輸入字段的API名稱,或者綁定到模板的記錄不是您所期望的Commission__c類型時,可能會發生這種情況。 因此,這可能是兩件事之一:您發送的記錄不是電子郵件模板00XF0000000LfE0的正確對象類型,或者Commission__c對象上沒有AccountId__c字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM