Skip to main content
Join the Agentforce Hackathon on Nov. 18-19 to compete for a $20,000 Grand Prize. Sign up now. Terms apply.

用 Apex 编写业务逻辑

备注

备注

用中文(简体)学习?在中文(简体)Trailhead Playground 中开始挑战,用括号中提供的译文完成挑战。仅复制并粘贴英文值,因为挑战验证基于英文数据。如果在中文(简体)组织中没有成功通过挑战,我们建议您 (1) 将区域设置切换为美国,(2) 按此处说明将语言切换为英文,(3) 再次单击“检查挑战”按钮。

查看 Trailhead 本地化语言徽章详细了解如何利用 Trailhead 译文。

跟随 Trail Together 进行学习

进行这一步骤时,想要跟专家一起学习吗?观看此视频,它是 Trail Together 系列的一部分。

(此视频片段从 34:00 开始,方便您回放并再次观看步骤的开头部分。)

简介

Apex 是一种强类型、面向对象的编程语言,经过优化,可在 Salesforce 多租户架构中运行。Apex 使开发人员能够自动化复杂的后端业务流程,并将其编译为 Java 字节码。

Apex 语言经过优化,可与 Salesforce 数据交互,并与 Salesforces 持久层紧密集成。Apex 提供了类似于 SQL 的 SOQL(Salesforce Object Query Language,Salesforce 对象查询语言),用于执行查询,并提供了 DML(Data Manipulation Language,数据操纵语言)语句,用于对先前创建的对象执行数据库操作。

创建和部署 Apex 类

  1. 在 Visual Studio Code 中,在 force-app/main/default 下,右击 classes(类)并选择 SFDX: Create Apex Class(SFDX:创建 Apex 类)
    “SFDX:创建 Apex 类”选项。
  2. 在 Visual Studio Code 命令面板中,把这个类命名为 HouseService。点击 Enter | Enter
  3. 将文件内容替换为以下代码。
    public with sharing class HouseService {
        @AuraEnabled(cacheable=true)
        public static List<House__c> getRecords() {
            try {
                // Create a list of House records from a SOQL query
                List<House__c> lstHouses = [
                    SELECT
                       Id,
                       Name,
                       Address__c,
                       State__c,
                       City__c,
                       Zip__c
                       FROM House__c
                       WITH USER_MODE
                       ORDER BY CreatedDate
                       LIMIT 10
                    ];
                      return lstHouses;
            }
            // Code to handle exception
            catch (Exception e) {
               throw new AuraHandledException(e.getMessage());
            }
        }
    }

    代码重要内容 在这段代码中,您创建了一个类 HouseService,其中具有一个名为 getRecords 的方法。该方法通过查询 House__c 对象返回房屋记录列表(作为有序集合)。
    请注意在 HouseService Apex 类中,您自动将之前(在步骤 2 中)创建的对象 (House__c) 作为一个类展现出来,无需编写类文件。此外,您可以将 House__c 对象中的字段作为属性引用,而无需声明它们。
    我们已使用 SOQL 编写查询,引用了对象和对象上的字段。查询会进行编译,因此在编译时要进行类型检查。
    您已经在数据模型和 Apex 类之间实现了紧密耦合。现在,如果您对代码进行与数据模型不一致的更改,代码将无法编译,因此您无法破坏代码。
  4. 保存此文件。
  5. 右击 HouseService.cls 并选择 SFDX: Deploy Source to Org(SFDX:将源代码部署到组织)。您会看到一条确认消息,表明 Apex 类已成功部署到组织中。部署代码也会在服务器上对其进行编译。
    “将源部署到 Salesforce 组织”选项。

现在,使用匿名脚本测试这个类是否按预期返回查询结果。匿名脚本是不存储在元数据中但可以编译和执行的 Apex 代码。

按照以下步骤创建一个用于测试的匿名脚本。

  1. 在 scripts/apex 文件夹中创建一个名为 dreamhouseapp.apex 的新文件。
  2. 将文件内容替换为以下代码:System.debug(HouseService.getRecords());
  3. 单击以下截图中以粉色框突出显示的 Code Lens Execute Anonymous Apex
    执行 Apex 脚本的 Code Lens Execute Anonymous Apex
    如果您编写的 Apex 类是功能性的,您将在下方显示的输出面板中看到查询结果。显示执行 Apex 脚本时的查询结果的输出面板。

Apex 是一种紧密耦合的强类型编程语言,经过优化可处理与 Salesforce 平台良好兼容的业务应用程序。如果有任何引用无效,它将在编译时迅速失败。

由于它与 Salesforce 持久层集成,并提供内置的支持,可以直接使用 Salesforce 数据而无需连接其他数据层,因此可以提高您的工作效率。此外,Apex 还通过强制执行调控器限制和测试要求来自动促进良好的编程实践。

资源

在 Salesforce 帮助中分享 Trailhead 反馈

我们很想听听您使用 Trailhead 的经验——您现在可以随时从 Salesforce 帮助网站访问新的反馈表单。

了解更多 继续分享反馈