繁体   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