用 Apex 编写业务逻辑
跟随 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 类
- 在 Visual Studio Code 中,在 force-app/main/default 下,右击 classes(类)并选择 SFDX: Create Apex Class(SFDX:创建 Apex 类)。
- 在 Visual Studio Code 命令面板中,把这个类命名为
HouseService
。点击 Enter | Enter。
- 将文件内容替换为以下代码。
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 类之间实现了紧密耦合。现在,如果您对代码进行与数据模型不一致的更改,代码将无法编译,因此您无法破坏代码。
- 保存此文件。
- 右击 HouseService.cls 并选择 SFDX: Deploy Source to Org(SFDX:将源代码部署到组织)。您会看到一条确认消息,表明 Apex 类已成功部署到组织中。部署代码也会在服务器上对其进行编译。
现在,使用匿名脚本测试这个类是否按预期返回查询结果。匿名脚本是不存储在元数据中但可以编译和执行的 Apex 代码。
按照以下步骤创建一个用于测试的匿名脚本。
- 在 scripts/apex 文件夹中创建一个名为 dreamhouseapp.apex 的新文件。
- 将文件内容替换为以下代码:
System.debug(HouseService.getRecords());
- 单击以下截图中以粉色框突出显示的 Code Lens Execute Anonymous Apex。
如果您编写的 Apex 类是功能性的,您将在下方显示的输出面板中看到查询结果。
Apex 是一种紧密耦合的强类型编程语言,经过优化可处理与 Salesforce 平台良好兼容的业务应用程序。如果有任何引用无效,它将在编译时迅速失败。
由于它与 Salesforce 持久层集成,并提供内置的支持,可以直接使用 Salesforce 数据而无需连接其他数据层,因此可以提高您的工作效率。此外,Apex 还通过强制执行调控器限制和测试要求来自动促进良好的编程实践。
资源
- GitHub:Apex-Recipes
- Trailhead:掌握 Apex 编码技能
- Trailhead:Apex 触发器
- Salesforce 开发人员文档:Apex Replay Debugger