学习目标
- 描述Apex编程语言的主要特点。
- 保存Apex类并使用Anonymous.Apex调用方法。
- 使用开发者控制台检查调试日志。
Apex入门
作为一种语言,Apex是:
- Hosted-Apex在服务器(Force.com平台)上保存,编译并执行。
- 面向对象-Apex支持类,接口和继承。
- 强类型-Apex在编译时验证对对象的引用。
- 多租户感知 – 因为Apex运行在多租户平台上,所以它通过强制实施限制防止代码独占共享资源,从而防止代码走失。
- 与数据库集成 – 访问和操作记录非常简单。 Apex提供对记录及其字段的直接访问,并提供语句和查询语言来操作这些记录。
- 关注数据–Apex提供对数据库的事务访问,允许您回滚操作。
- 易于使用-Apex基于熟悉的Java成语。
- 易于测试 – Apex为单元测试创建,执行和代码覆盖提供了内置的支持。
- Salesforce确保所有定制的Apex代码在任何平台升级之前执行所有单元测试,并按预期工作。
- Versioned-Custom Apex代码可以针对不同版本的API进行保存。
Apex 语言亮点
像其他面向对象的编程语言一样,这些是Apex支持的一些语言结构:
- 类,接口,属性和集合(包括数组)。
- 对象和数组表示法。
- 表达式,变量和常量。
- 条件语句(if-then-else)和控制流语句(for循环和while循环)。
与其他面向对象的编程语言不同,Apex支持:
- 作为Apex的云开发是在云中存储,编译和执行的。
- 触发器,类似于数据库系统中的触发器。
- 数据库语句,允许您直接进行数据库调用和查询语言来查询和搜索数据。
- 事务和回滚。
- 全局访问修饰符,它比public修饰符更宽松,并允许跨命名空间和应用程序访问。
- 自定义代码的版本。
另外,Apex是一个不区分大小写的语言。
开发工具
您可以使用Salesforce用户界面直接在浏览器中编写Apex并访问调试信息。打开您的名字下的开发者控制台或快速访问菜单(设置齿轮图标)。
您也可以使用Eclipse的Force.com IDE插件在客户端上编写Apex。请参阅Salesforce Developer网站上的Force.com IDE。
数据类型概述
Apex支持以下数据类型。
- 诸如Integer,Double,Long,Date,Datetime,String,ID,Boolean等原语。
- 一个sObject,或者作为一个通用的sObject或者一个特定的sObject,比如一个Account,Contact或者MyCustomObject__c(你将在后面的单元中学到更多关于sObjects的知识)。
- 收藏品包括:
- 基元,sObjects,用户定义的对象,从Apex类创建的对象或集合的列表(或数组)
- 一组原语
- 从基元到基元,sObject或集合的映射
- 一个键入的值列表,也被称为枚举
- 用户定义的Apex类
- 系统提供的Apex类
Apex收藏:列表
列表包含对象的有序集合。 Apex中的列表与数组同义,两者可以互换使用。
以下两个声明是等价的。 colors变量是使用List语法声明的。
List<String> colors = new List<String>();
String[] colors = new List<String>();
// 创建一个列表并向其中添加元素
List<String> colors = new List<String> { 'red', 'green', 'blue' };
// 创建元素后,将元素添加到列表中
List<String> moreColors = new List<String>();
moreColors.add('orange');
moreColors.add('purple');
// 从列表中获取元素
String color1 = moreColors.get(0);
String color2 = moreColors[0];
System.assertEquals(color1, color2);
// 遍历列表来读取元素
for(Integer i=0;i<colors.size();i++) {
// Write value to the debug log
System.debug(colors[i]);
}
超越基础
Apex支持另外两种集合类型:Set和Map。您可以在“Apex开发人员指南”的“集合”部分了解更多。
Apex 类
保存一个Apex类
将EmailManager类保存在您的组织中:
- 打开您的名字下的开发者控制台或快速访问菜单(设置齿轮图标)。
- 在开发者控制台中,点击 ,然后输入EmailManager作为类名称,然后单击OK。
- 用EmailManager类的例子替换默认的类体。
EmailManager类具有公共方法(sendMail()),用于发送电子邮件并使用Apex类库的内置消息处理方法。另外,这个类有一个私有的帮助方法(inspectResults()),它不能被外部调用,因为它是私有的,但只在类中使用。这个帮助方法检查电子邮件发送调用的结果,并由sendMail()调用。
public class EmailManager { // 公共方法 public void sendMail(String address, String subject, String body) { // 创建一个电子邮件对象 Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); String[] toAddresses = new String[] {address}; mail.setToAddresses(toAddresses); mail.setSubject(subject); mail.setPlainTextBody(body); // 将此电子邮件传递给内置的sendEmail方法 // 消息类的 Messaging.SendEmailResult[] results = Messaging.sendEmail( new Messaging.SingleEmailMessage[] { mail }); // 调用一个帮助器方法来检查返回的结果 inspectResults(results); } // 辅助方法 private static Boolean inspectResults(Messaging.SendEmailResult[] results) { Boolean sendResult = true; // sendEmail返回一个结果对象数组。 // 遍历列表来检查结果。 // 在这个类中,方法只发送一封邮件, // 所以我们应该只有一个结果。 for (Messaging.SendEmailResult res : results) { if (res.isSuccess()) { System.debug('Email sent successfully'); } else { sendResult = false; System.debug('发生以下错误:' + res.getErrors()); } } return sendResult; } }
- 点击Ctrl + S保存你的课程。
超越基础
刚刚保存的类使用面向对象编程(OOP)。该类封装了与管理电子邮件有关的方法。为了成为OOP的一个完美的例子,类还将包含成员变量(属性)和访问器方法来访问这些属性,但为了简单起见,我们的类没有这些。
Salesforce在您保存时编译您的类。
调用方法发送电子邮件
我们来调用公共方法。我们将使用匿名的Apex执行来执行此操作。匿名Apex允许您即时运行代码行,并且是调用Apex的一种便捷方式,尤其是测试功能。与任何其他Apex执行一样,也会生成调试日志结果。
- 在开发者控制台中,点击 .
- 在打开的窗口中,输入以下内容。用您的电子邮件地址替换“您的电子邮件地址”。
EmailManager em = new EmailManager(); em.sendMail('Your email address', 'Trailhead Tutorial', '123 body');
- 点击 Execute.
现在这个方法已经执行了,你应该在收件箱里收到一封电子邮件。查看你的电子邮件!
检查调试日志
调试日志对于调试代码很有用。当Apex方法执行时,调用会记录在调试日志中。而且,您可以将自己的调试消息写入日志,这有助于在出现错误时调试代码。由sendMail()调用的inspectResults()辅助方法使用System.debug()方法将消息写入日志,以指示电子邮件发送操作是成功还是有错误。您可以在执行该方法时生成的调试日志中查找这些消息。
- 在开发者控制台中,点击日志标签,然后双击列表中最近的日志。
- 选择 Debug Only 来过滤日志,以便仅显示System.debug()语句的日志行。
在过滤的日志视图中,您会看到以下消息,假设电子邮件发送没有错误。
DEBUG|Email sent successfully
调用静态方法
因为我们类中的sendMail()方法不能访问类成员变量,所以它不需要是一个实例方法。让我们通过添加静态关键字到它的声明来将其更改为静态方法。静态方法比实例方法更容易调用,因为它们不需要在类的实例上调用,而是直接在类名上调用。
- 在开发人员控制台中,找到EmailManager类的打开选项卡,并将sendMail()方法定义的第一行修改为以下内容(唯一的变化是添加的static关键字)。
public static void sendMail(String address, String subject, String body) {
- 按Ctrl + S保存该类。
- 修改“执行匿名”窗口中的语句以调用类名称上的静态方法。
EmailManager.sendMail('Your email address', 'Trailhead Tutorial', '123 body');
- 点击 Execute.
现在这个方法已经执行了,你可以像在前面的步骤一样检查你的电子邮件,以及可选的调试日志。